/* ==========================================================
   취준톡 design system — neutral, quiet, one accent color
   ========================================================== */
:root {
  --bg: #ffffff; --bg2: #f7f8fa; --bg3: #f2f4f6;
  --fg: #191f28; --fg2: #4e5968; --muted: #8b95a1; --line: #e5e8eb; --line2: #f2f4f6;
  --brand: #3182f6; --brand-fg: #fff; --brand-weak: #e8f3ff; --brand-text: #1b64da;
  --danger: #f04452; --danger-weak: #ffeeee;
  --bubble: #f2f4f6; --bubble-fg: #191f28; --bubble-mine: #3182f6; --bubble-mine-fg: #fff;
  --safe-b: env(safe-area-inset-bottom, 0px);
  --appbar-h: 56px; --tabbar-h: 56px; --radius: 12px;
}
:root[data-theme="dark"] {
  --bg: #17171c; --bg2: #212128; --bg3: #2a2a32;
  --fg: #e5e7eb; --fg2: #b0b8c1; --muted: #6b7684; --line: #2c2c35; --line2: #222228;
  --brand: #4593fc; --brand-weak: #1b2a40; --brand-text: #7db3ff;
  --danger-weak: #3a1f22;
  --bubble: #26262e; --bubble-fg: #e5e7eb; --bubble-mine: #3182f6;
}

/* ---------- base ---------- */
* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html { height: 100%; }
body { margin: 0; min-height: 100%; background: var(--bg); color: var(--fg);
  font-family: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Noto Sans KR", sans-serif;
  font-size: 15px; line-height: 1.5; letter-spacing: -0.01em; overscroll-behavior-y: none;
  -webkit-font-smoothing: antialiased; }
a { color: inherit; text-decoration: none; }
h1 { font-size: 22px; font-weight: 700; margin: 0; letter-spacing: -0.02em; }
h2 { font-size: 16px; font-weight: 700; margin: 24px 0 8px; }
p { margin: 0 0 8px; }
button { font: inherit; color: inherit; }
svg { flex: 0 0 auto; vertical-align: -3px; }
.muted { color: var(--muted); }
.small { font-size: 13px; }
.center { text-align: center; justify-content: center; }
.lead { color: var(--fg2); margin: 0 0 16px; }
.link { color: var(--brand-text); font-weight: 500; }
.dot::before { content: "·"; color: var(--muted); }
.error { color: var(--danger); background: var(--danger-weak); padding: 10px 14px; border-radius: 10px; font-size: 14px; margin-bottom: 12px; }

/* ---------- forms ---------- */
.form { display: flex; flex-direction: column; gap: 12px; }
.form.card { background: var(--bg2); border-radius: var(--radius); padding: 14px; margin-bottom: 16px; }
.input, input.input, select.input, textarea.input {
  width: 100%; font: inherit; font-size: 16px; color: var(--fg); background: var(--bg2);
  border: 1px solid transparent; border-radius: 10px; padding: 13px 14px; outline: none;
  transition: border-color .15s, background .15s; }
.input:focus { border-color: var(--brand); background: var(--bg); }
.input::placeholder { color: var(--muted); }
textarea.input { resize: none; min-height: 120px; }
@media (min-width: 900px) { textarea.input { resize: vertical; } }
select.input { appearance: none; -webkit-appearance: none;
  background-image: linear-gradient(45deg, transparent 50%, var(--muted) 50%), linear-gradient(135deg, var(--muted) 50%, transparent 50%);
  background-position: calc(100% - 20px) 50%, calc(100% - 15px) 50%; background-size: 5px 5px; background-repeat: no-repeat; }
label { display: flex; flex-direction: column; gap: 6px; font-size: 13px; color: var(--fg2); font-weight: 500; }
label.check { flex-direction: row; align-items: center; gap: 8px; color: var(--fg); font-weight: 400; font-size: 14px; }
label.check input { width: 18px; height: 18px; accent-color: var(--brand); }
.row { display: flex; gap: 8px; flex-wrap: wrap; }
.row > * { flex: 1 1 140px; }

/* ---------- buttons ---------- */
.desktop-only, .btn.desktop-only { display: none; } /* PC 미디어쿼리에서 다시 켠다. .btn 보다 강하게(버튼에 붙어도 모바일에서 숨게) */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; border: 0; cursor: pointer;
  padding: 0 18px; height: 48px; border-radius: 10px; font-weight: 600; font-size: 15px; background: var(--bg3); color: var(--fg);
  transition: filter .12s, background .12s; white-space: nowrap; }
.btn:active { filter: brightness(.94); }
.btn.primary { background: var(--brand); color: var(--brand-fg); }
.btn.ghost { background: var(--bg); border: 1px solid var(--line); color: var(--fg2); }
.btn.ghost:hover { background: var(--bg2); }
/* 글자만 있는 버튼: 브라우저 기본 버튼 모양(회색 배경·테두리)을 지운다. 메뉴 안에서는 메뉴 규칙이 덮어쓴다 */
.link-btn { background: none; border: 0; padding: 0; margin: 0; font: inherit; color: inherit; cursor: pointer; }
.btn.danger-soft { background: var(--danger-weak); color: var(--danger); }
.btn.danger-soft:hover { filter: brightness(.97); }
.btn.text { background: none; color: var(--brand-text); padding: 0 8px; height: 36px; }
.btn.small { height: 36px; padding: 0 12px; font-size: 14px; border-radius: 9px; }
.btn.block { width: 100%; }
.btn.static { cursor: default; }
.btn.like.on { color: var(--danger); border-color: var(--danger); }
.btn.like.on svg { fill: var(--danger); }
.icon-btn { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 10px;
  background: none; border: 0; cursor: pointer; color: var(--fg2); }
.icon-btn:hover { background: var(--bg2); }
.ico-sun { display: none; } .ico-moon { display: inline-flex; }
:root[data-theme="dark"] .ico-sun { display: inline-flex; } :root[data-theme="dark"] .ico-moon { display: none; }

/* ---------- chips / avatar / badge ---------- */
.chip { display: inline-block; background: var(--bg3); color: var(--fg2); border-radius: 6px; padding: 2px 7px; font-size: 12px; font-weight: 600; line-height: 1.4; }
.chip.company { background: var(--brand-weak); color: var(--brand-text); }
.avatar { flex: 0 0 44px; width: 44px; height: 44px; border-radius: 14px; background: var(--brand-weak); color: var(--brand-text);
  display: inline-flex; align-items: center; justify-content: center; font-weight: 700; font-size: 17px; }
.avatar.sm { flex-basis: 24px; width: 24px; height: 24px; border-radius: 8px; font-size: 12px; }
.avatar.lg { flex-basis: 64px; width: 64px; height: 64px; border-radius: 20px; font-size: 26px; }
.badge { flex: 0 0 auto; min-width: 20px; height: 20px; padding: 0 6px; border-radius: 10px; background: var(--brand); color: #fff;
  font-size: 11px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; }
.empty { color: var(--muted); padding: 48px 16px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 12px; }
.empty p { margin: 0; line-height: 1.6; }

/* ---------- logo ---------- */
.logo { display: inline-flex; align-items: center; gap: 7px; color: var(--brand); }
.logo-text { color: var(--fg); font-weight: 800; font-size: 19px; letter-spacing: -0.03em; }

/* ---------- app shell (mobile) ---------- */
.app { padding-top: var(--appbar-h); padding-bottom: calc(var(--tabbar-h) + var(--safe-b)); }
.appbar { position: fixed; top: 0; left: 0; right: 0; z-index: 20; height: var(--appbar-h);
  display: flex; align-items: center; gap: 6px; padding: 0 8px 0 16px; background: var(--bg); border-bottom: 1px solid var(--line2); }
.appbar-right { margin-left: auto; display: flex; align-items: center; gap: 2px; }
.appbar .back { margin-left: -8px; }
.appbar-title { min-width: 0; }
.appbar-title .t1 { font-weight: 700; font-size: 16px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.appbar-title .t2 { font-size: 12px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.screen { max-width: 640px; margin: 0 auto; padding: 0 20px 24px; }
.page-title { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 20px 0 14px; }
.tabbar { position: fixed; bottom: 0; left: 0; right: 0; z-index: 20; height: calc(var(--tabbar-h) + var(--safe-b));
  padding-bottom: var(--safe-b); display: flex; background: var(--bg); border-top: 1px solid var(--line2); }
.tab { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; font-size: 10px; color: var(--muted); }
.tab { font-weight: 500; }
.tab.active { color: var(--fg); }
.tab.active svg { stroke-width: 2.2; }
.fab { position: fixed; right: 20px; bottom: calc(var(--tabbar-h) + var(--safe-b) + 20px); z-index: 15;
  width: 52px; height: 52px; border-radius: 50%; background: var(--fg); color: var(--bg);
  display: flex; align-items: center; justify-content: center; box-shadow: 0 8px 20px rgba(0,0,0,.18); }

/* ---------- feed (Blind-style list) ---------- */
.tabs { display: flex; gap: 4px; overflow-x: auto; margin: 0 -20px; padding: 0 16px; border-bottom: 1px solid var(--line2);
  scrollbar-width: none; position: sticky; top: var(--appbar-h); background: var(--bg); z-index: 10; }
.tabs::-webkit-scrollbar { display: none; }
.tab-link { flex: 0 0 auto; padding: 12px 10px; font-size: 15px; color: var(--muted); font-weight: 600; border-bottom: 2px solid transparent; margin-bottom: -1px; }
.tab-link.active { color: var(--fg); border-bottom-color: var(--fg); }
.feed { margin: 0 -20px; }
.post-row { display: block; padding: 16px 20px; border-bottom: 1px solid var(--line2); }
.post-row:active, .post-row:hover { background: var(--bg2); }
.post-meta { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; font-size: 12px; color: var(--muted); }
.post-title { font-weight: 600; font-size: 16px; margin: 6px 0 3px; line-height: 1.4; }
.post-preview { color: var(--fg2); font-size: 14px; line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.post-stats { display: flex; gap: 14px; margin-top: 10px; font-size: 12px; color: var(--muted); }
.post-stats span { display: inline-flex; align-items: center; gap: 4px; }

/* ---------- post detail ---------- */
.post-full { padding: 20px 0 16px; border-bottom: 1px solid var(--line); }
.post-full .post-title { font-size: 21px; font-weight: 700; margin: 10px 0 10px; line-height: 1.35; }
.post-byline { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--muted); margin-bottom: 18px; }
.post-body { margin: 0; white-space: pre-wrap; word-break: break-word; line-height: 1.75; font-size: 15px; color: var(--fg); }
.post-actions { display: flex; gap: 8px; margin-top: 22px; }
.comments h2 { margin-top: 20px; }
.comment-body { font-size: 14px; line-height: 1.6; word-break: break-word; white-space: pre-wrap; }
/* 댓글: 아바타 + 본문, 한 스레드(댓글+답글) 단위로만 구분선 */
.cthread { border-bottom: 1px solid var(--line2); padding: 4px 0; }
.cthread:last-child { border-bottom: 0; }
.comment { display: flex; gap: 10px; padding: 12px 0; }
.comment > .avatar { margin-top: 1px; }
.c-main { flex: 1; min-width: 0; }
.c-head { display: flex; align-items: center; gap: 6px; font-size: 13px; margin-bottom: 3px; }
.c-head .who { font-weight: 600; color: var(--fg); }
.chip.author { background: var(--brand-weak); color: var(--brand-text); font-size: 11px; padding: 1px 6px; }
.c-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; margin-top: 6px; font-size: 12px; color: var(--muted); }
.c-actions button, .c-actions a { font: inherit; font-size: 12px; color: var(--muted); background: none; border: 0; padding: 0; cursor: pointer; text-decoration: none; }
.c-actions button:hover, .c-actions a:hover { color: var(--fg); }
.c-like { display: inline-flex; align-items: center; gap: 3px; }
.c-actions .c-like.on, .c-actions .c-like.on:hover { color: var(--danger); }
.c-like.on svg { fill: var(--danger); }
.comment.reply { padding: 8px 0 8px 34px; }
.comment.reply .comment-body { font-size: 14px; }
.comment.gone .avatar { opacity: .4; }
/* 댓글·답글 입력: 둥근 한 덩어리 안에 아이콘 버튼 */
.composer { display: flex; align-items: center; gap: 4px; background: var(--bg2); border: 1px solid transparent; border-radius: 999px; padding: 4px 4px 4px 16px; transition: border-color .12s, background .12s; }
.composer:focus-within { border-color: var(--brand); background: var(--bg); }
.composer input[name=body] { flex: 1; min-width: 0; border: 0; outline: 0; background: transparent; color: var(--fg); font: inherit; font-size: 15px; padding: 8px 0; }
.composer input[name=body]::placeholder { color: var(--muted); }
.composer .send { flex: 0 0 auto; width: 36px; height: 36px; border-radius: 50%; border: 0; display: inline-flex; align-items: center; justify-content: center; background: var(--brand); color: var(--brand-fg); cursor: pointer; transition: opacity .12s; }
.composer .send:disabled { background: var(--bg3); color: var(--muted); cursor: default; }
.composer .c-icon { flex: 0 0 auto; width: 32px; height: 32px; border-radius: 50%; border: 0; display: inline-flex; align-items: center; justify-content: center; background: none; color: var(--muted); cursor: pointer; }
.composer .c-icon:hover { background: var(--bg3); color: var(--fg); }
.comment-form { margin-top: 14px; }
.reply-form { margin: 2px 0 12px 34px; padding-left: 14px; }
.reply-form input[name=body] { font-size: 14px; padding: 6px 0; }
.reply-form .send { width: 30px; height: 30px; }
.comment-edit { padding: 10px 0; }
.comment-edit .composer input[name=body] { font-size: 14px; padding: 6px 0; }
.comment-edit .send { width: 30px; height: 30px; }
.comment-edit.reply { padding-left: 34px; }

/* ---------- rooms / chat list ---------- */
.room-list, .chat-list, .sched-list, .menu { list-style: none; padding: 0; margin: 0 -20px; }
.room-row, .chat-item { display: flex; gap: 12px; align-items: center; padding: 14px 20px; border-bottom: 1px solid var(--line2); }
.room-row:hover, .chat-item:hover, .room-row:active, .chat-item:active { background: var(--bg2); }
.room-main, .chat-main { flex: 1; min-width: 0; }
.room-name, .chat-name { font-weight: 600; font-size: 15px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.room-meta { display: flex; gap: 6px; align-items: center; font-size: 13px; color: var(--muted); margin-top: 3px; }
.room-meta span { display: inline-flex; align-items: center; gap: 3px; }
.chat-top, .chat-bottom { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.chat-time { font-size: 12px; color: var(--muted); flex: 0 0 auto; }
.chat-last { font-size: 14px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 2px; display: flex; gap: 6px; align-items: center; }
.chat-item.current { background: var(--brand-weak); }

/* ---------- schedules ---------- */
.cal { padding: 12px 16px 14px; margin-bottom: 12px; }
.cal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; }
.cal-title { font-weight: 700; font-size: 16px; color: var(--fg); text-decoration: none; }
.cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.cal-week span { text-align: center; font-size: 11px; color: var(--muted); padding: 4px 0 6px; }
.cal-week .sun { color: var(--danger); }
.cal-week .sat { color: var(--brand-text); }
.cal-day { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; aspect-ratio: 1; width: 100%; max-width: 48px; justify-self: center; border-radius: 10px; text-decoration: none; color: var(--fg); font-size: 13px; }
.cal-day:hover { background: var(--bg2); }
.cal-day.out { color: var(--muted); opacity: .5; }
.cal-day.today .n { font-weight: 700; color: var(--brand); }
.cal-day.sel { background: var(--brand); color: var(--brand-fg); }
.cal-day.sel .n { color: #fff; }
.cal-day .dot { position: absolute; bottom: 5px; width: 5px; height: 5px; border-radius: 50%; background: var(--brand); }
.cal-day.sel .dot { background: #fff; }
.cal-sub { display: flex; align-items: center; justify-content: space-between; padding: 6px 0 4px; }
.cal-sub-title { font-weight: 600; font-size: 14px; }
.sched-row { display: flex; gap: 14px; align-items: center; padding: 12px 20px; border-bottom: 1px solid var(--line2); }
.sched-date { flex: 0 0 48px; display: flex; flex-direction: column; align-items: center; background: var(--bg2); border-radius: 12px; padding: 6px 0; }
.sched-date .d { font-size: 18px; font-weight: 700; line-height: 1.1; }
.sched-date .m { font-size: 11px; color: var(--muted); }
.sched-main { flex: 1; min-width: 0; }
.sched-title { font-weight: 600; display: flex; gap: 6px; align-items: center; }

/* ---------- me ---------- */
.profile { display: flex; align-items: center; gap: 14px; padding: 8px 0 20px; }
.profile-name { font-size: 18px; font-weight: 700; }
.menu li a { display: flex; justify-content: space-between; align-items: center; padding: 14px 20px; border-top: 1px solid var(--line2); font-weight: 500; }
.menu li:last-child a { border-bottom: 1px solid var(--line2); margin-bottom: 20px; }

/* ---------- auth ---------- */
.auth { max-width: 380px; margin: 0 auto; padding: 36px 0; }
.auth-logo { margin-bottom: 22px; }
.auth-logo .logo-text { font-size: 24px; }
.auth h1 { font-size: 26px; margin-bottom: 6px; }
.auth .form { margin-top: 20px; }
.auth .center { margin-top: 16px; font-size: 14px; }

/* ---------- chat screen ---------- */
.chat-body { padding-bottom: 0; }
.chat-screen { display: flex; flex-direction: column; height: calc(100dvh - var(--appbar-h)); max-width: 640px; margin: 0 auto; width: 100%; }
.messages { flex: 1; overflow-y: auto; padding: 16px 16px 8px; display: flex; flex-direction: column; gap: 10px; -webkit-overflow-scrolling: touch; }
.chat-empty { color: var(--muted); text-align: center; padding: 40px 0; font-size: 14px; }
.date-sep { display: flex; justify-content: center; margin: 8px 0; }
.date-sep span { color: var(--muted); font-size: 12px; }
.msg { display: flex; flex-direction: column; align-items: flex-start; max-width: 78%; }
/* 투표·사진처럼 큰 메시지는 위아래로 조금 더 띄운다 (다음 사람 이름과 붙어 보이지 않게) */
.msg:has(.poll), .msg:has(.bubble.img) { margin: 6px 0; }
.msg + .msg:not(.mine) .who { margin-top: 4px; }
.msg .who { font-size: 12px; color: var(--muted); margin: 0 0 3px 2px; }
.bubble-row { display: flex; align-items: flex-end; gap: 6px; }
.bubble { background: var(--bubble); color: var(--bubble-fg); padding: 9px 13px; border-radius: 18px; border-top-left-radius: 6px;
  word-break: break-word; white-space: pre-wrap; font-size: 15px; line-height: 1.45; }
.when { font-size: 11px; color: var(--muted); flex: 0 0 auto; }
.msg.mine { align-self: flex-end; align-items: flex-end; }
.msg.mine .who { display: none; }
.msg.mine .bubble-row { flex-direction: row-reverse; }
.msg.mine .bubble { background: var(--bubble-mine); color: var(--bubble-mine-fg); border-top-left-radius: 18px; border-top-right-radius: 6px; }
.chat-input { display: flex; gap: 4px; align-items: center; padding: 8px 10px calc(8px + var(--safe-b)); background: var(--bg); border-top: 1px solid var(--line2); }
.chat-form { flex: 1; display: flex; align-items: flex-end; min-width: 0; background: var(--bg2); border-radius: 22px; padding: 4px 4px 4px 16px; transition: box-shadow .15s; }
.chat-form:focus-within { box-shadow: 0 0 0 1px var(--line) inset; }
.chat-form input, .chat-form textarea { flex: 1; min-width: 0; border: 0; background: transparent; padding: 8px 0; font: inherit; font-size: 16px; line-height: 1.4; color: var(--fg); outline: none; }
.chat-form textarea { resize: none; height: auto; max-height: 120px; overflow-y: auto; display: block; }
.chat-form input::placeholder, .chat-form textarea::placeholder { color: var(--muted); }
.chat-form .send { flex: 0 0 34px; width: 34px; height: 34px; border-radius: 50%; border: 0; background: transparent; color: var(--muted);
  display: inline-flex; align-items: center; justify-content: center; cursor: pointer; transition: background .15s, color .15s; }
.chat-form .send svg { margin-left: -2px; }
.chat-form.ready .send { background: var(--brand); color: #fff; }
.chat-form .send:disabled { cursor: default; }
.attach { cursor: pointer; flex: 0 0 40px; color: var(--muted); }
.attach input { display: none; }
.attach.busy { opacity: .4; pointer-events: none; }
.bubble.img { padding: 0; background: transparent; box-shadow: none; display: block; line-height: 0; }
.bubble.img img { display: block; width: auto; max-width: min(100%, 260px); height: auto; border-radius: 14px; background: var(--bg3); }
.msg.mine .bubble.img { background: transparent; }
.chat-join { padding: 14px 16px calc(14px + var(--safe-b)); background: var(--bg); border-top: 1px solid var(--line2); }

/* ---------- desktop-only pieces (hidden on mobile) ---------- */
.sidenav, .rail, .chat-panel { display: none; }
.widget { border: 1px solid var(--line); border-radius: var(--radius); padding: 14px 16px; margin-bottom: 14px; }
.widget:empty { display: none; }
.widget-head { display: flex; justify-content: space-between; align-items: center; font-weight: 700; margin-bottom: 4px; font-size: 15px; }
.widget-head .link { font-size: 13px; font-weight: 500; }
.widget .sched-list, .widget .chat-list { margin: 0; }
.widget .sched-row, .widget .chat-item { padding: 10px 0; }
.widget .sched-row:last-child, .widget .chat-item:last-child { border-bottom: 0; }
.widget .avatar { flex-basis: 36px; width: 36px; height: 36px; border-radius: 11px; font-size: 14px; }
.widget .empty { padding: 20px 0; }
.widget-empty { display: grid; gap: 10px; padding: 8px 0 2px; }
.widget-empty p { margin: 0; }
.hot-list { list-style: none; padding: 0; margin: 0; }
.hot-row { display: flex; gap: 10px; align-items: flex-start; padding: 9px 0; color: var(--fg); }
.hot-list li + li .hot-row { border-top: 1px solid var(--line2); }
.hot-row:hover .hot-title { text-decoration: underline; text-underline-offset: 2px; }
.hot-rank { flex: 0 0 16px; font-weight: 700; font-size: 14px; color: var(--muted); line-height: 20px; text-align: center; }
.hot-rank.top { color: var(--brand-text); }
.hot-main { flex: 1; min-width: 0; display: grid; gap: 2px; }
.hot-title { font-size: 14px; font-weight: 500; line-height: 20px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hot-meta { display: flex; gap: 8px; font-size: 12px; color: var(--muted); }
.hot-n { display: inline-flex; align-items: center; gap: 2px; }

/* ---------- desktop layout ---------- */
@media (min-width: 900px) {
  body.app { padding: 0; display: grid; grid-template-columns: 240px minmax(0, 640px) 300px; justify-content: center; column-gap: 40px; min-height: 100vh; }
  .appbar, .tabbar, .fab { display: none; }
  .sidenav { display: flex; flex-direction: column; gap: 4px; position: sticky; top: 0; height: 100vh; padding: 24px 12px 24px 0; border-right: 1px solid var(--line2); }
  .sidenav .brand { padding: 4px 12px 18px; }
  .sidenav .logo-text { font-size: 22px; }
  .side-links { display: flex; flex-direction: column; gap: 1px; }
  .side-links + .side-links { margin-top: 14px; }
  .side-section { padding: 0 12px 6px; font-size: 12px; font-weight: 600; color: var(--muted); letter-spacing: .02em; }
  .side-link { position: relative; display: flex; align-items: center; gap: 12px; height: 42px; padding: 0 12px; border-radius: 10px; font-size: 15px; color: var(--fg2); font-weight: 500; transition: background .12s, color .12s; }
  .side-link svg { flex: 0 0 auto; color: var(--muted); transition: color .12s; }
  .side-link:hover { background: var(--bg2); color: var(--fg); }
  .side-link:hover svg { color: var(--fg2); }
  .side-link.active { color: var(--fg); background: var(--bg2); font-weight: 700; }
  .side-link.active svg { color: var(--brand); stroke-width: 2.2; }
  .side-label { flex: 1; min-width: 0; }
  .side-badge-slot:empty { display: none; }
  .side-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 20px; height: 20px; padding: 0 6px; border-radius: 10px; background: var(--brand); color: var(--brand-fg); font-size: 11px; font-weight: 700; }
  .side-write { margin: 18px 0 0; height: 46px; border-radius: 12px; font-size: 15px; font-weight: 700; gap: 8px; }
  .sidenav { overflow-y: auto; scrollbar-width: none; }
  .side-foot { margin-top: auto; display: flex; align-items: center; gap: 8px; padding: 0 6px; font-size: 14px; }
  .screen { max-width: none; width: 100%; margin: 0; padding: 8px 0 40px; }
  .tabs { margin: 0; padding: 0; top: 0; }
  .feed, .room-list, .chat-list, .sched-list, .menu { margin: 0; }
  .post-row { padding: 18px 8px; }
  .room-row, .chat-item, .sched-row { padding: 14px 8px; border-radius: 10px; }
  .menu li a { padding: 14px 8px; }
  .rail { display: block; padding: 18px 0 24px; position: sticky; top: 0; height: 100vh; overflow-y: auto; }

  /* chat screen: side nav | my rooms | conversation */
  /* 다른 페이지(240 + 40 + 640 + 40 + 300 = 1260)와 총폭을 맞춰 사이드 메뉴가 움직이지 않게 한다 */
  body.chat-body { grid-template-columns: 240px 300px minmax(0, 720px); column-gap: 0; }
  .sidenav { padding-right: 12px; }
  .chat-panel { display: block; height: 100vh; overflow-y: auto; border-right: 1px solid var(--line2); padding: 0 8px; }
  .chat-panel .widget-head { padding: 24px 8px 8px; font-size: 18px; }
  .chat-panel .chat-item { padding: 12px 10px; }
  .chat-panel .muted.small { padding: 0 8px; }
  .chat-col { display: flex; flex-direction: column; height: 100vh; }
  .chat-col .appbar { display: flex; position: static; height: 64px; padding-left: 20px; border-bottom: 1px solid var(--line2); }
  .chat-screen { height: auto; flex: 1; min-height: 0; max-width: none; width: 100%; margin: 0; }
  .messages { padding: 20px 24px 8px; }
  .msg { max-width: 60%; }
  .chat-input { padding: 12px 16px; }
}

/* ---------- 지원 기록 ---------- */
.stats { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; margin-bottom: 8px; }
@media (min-width: 600px) { .stats { grid-template-columns: repeat(4, 1fr); } }
.stat { background: var(--bg2); border-radius: var(--radius); padding: 14px 16px; }
.stat-label { font-size: 12px; color: var(--muted); font-weight: 500; }
.stat-value { font-size: 24px; font-weight: 800; letter-spacing: -0.03em; margin-top: 2px; }
.stat-value .unit { font-size: 13px; font-weight: 500; color: var(--muted); margin-left: 2px; }
.stat-value.accent { color: var(--brand-text); }
.stat-sub { font-size: 11px; color: var(--muted); }
.stage-list { list-style: none; padding: 0; margin: 0; }
.stage-list li { display: grid; grid-template-columns: 64px 1fr auto; gap: 10px; align-items: center; padding: 8px 0; font-size: 13px; }
.stage-name { font-weight: 600; }
.bar { height: 6px; border-radius: 3px; background: var(--bg3); overflow: hidden; display: flex; }
.bar > span { display: block; height: 100%; }
.bar-pass { background: var(--brand); }
.bar-fail { background: var(--danger); opacity: .75; }
/* 대기는 남은 회색 바탕 */
.stage-nums { color: var(--muted); white-space: nowrap; }
.stage-nums b { color: var(--fg); }
.app-list, .essay-list { list-style: none; padding: 0; margin: 0 -20px; }
.app-row { display: flex; gap: 12px; align-items: center; padding: 14px 20px; border-bottom: 1px solid var(--line2); }
.app-row:hover { background: var(--bg2); }
.app-main { flex: 1; min-width: 0; }
.app-name { font-weight: 600; font-size: 15px; }
.app-meta { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; font-size: 12px; color: var(--muted); margin-top: 4px; }
.app-meta span { display: inline-flex; align-items: center; gap: 3px; }
.chip.status { background: var(--brand-weak); color: var(--brand-text); }
.chip.status.ok { background: #e6f7ee; color: #0b7a3b; }
.chip.status.bad { background: var(--danger-weak); color: var(--danger); }
.chip.status.off { background: var(--bg3); color: var(--muted); }
:root[data-theme="dark"] .chip.status.ok { background: #143d26; color: #5fd68f; }
.track-head { padding: 16px 0 12px; border-bottom: 1px solid var(--line); margin-bottom: 4px; }
.track-head h1 { margin: 6px 0 8px; }
.h1-sub { font-size: 16px; font-weight: 500; margin-left: 8px; }
.inline-form { margin-top: 10px; max-width: 160px; }
.input.compact { padding: 8px 10px; font-size: 14px; border-radius: 8px; }
.steps { display: flex; flex-direction: column; gap: 8px; }
.step-row { display: flex; align-items: center; gap: 6px; padding: 10px 12px; border-radius: 12px; background: var(--bg2); }
.step-row.ok { box-shadow: inset 3px 0 0 #0b7a3b; }
.step-row.bad { box-shadow: inset 3px 0 0 var(--danger); }
.step-form { flex: 1; min-width: 0; display: grid; grid-template-columns: 1fr 96px; gap: 6px; align-items: center; }
.step-form input[name=note] { grid-column: 1 / 3; }
.step-name { font-weight: 600; font-size: 14px; display: flex; align-items: center; gap: 6px; }
.step-tools { display: flex; flex-direction: column; gap: 2px; }
.step-tools .inline { display: inline; }
.icon-btn.sm { width: 28px; height: 28px; border-radius: 8px; font-size: 13px; }
.icon-btn.danger { color: var(--danger); }
.step-add { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; align-items: center; }
.step-add .combo { flex: 1 1 200px; position: relative; }
.step-add select[name=kind] { flex: 0 1 100px; }
.step-add [hidden] { display: none; }
.suggest { position: absolute; left: 0; right: 0; top: calc(100% + 4px); z-index: 30; margin: 0; padding: 4px; list-style: none;
  background: var(--bg); border: 1px solid var(--line); border-radius: 10px; box-shadow: 0 8px 24px rgba(0,0,0,.10); max-height: 260px; overflow-y: auto; }
.suggest li { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 8px 10px; border-radius: 8px; font-size: 14px; cursor: pointer; }
.suggest li:hover, .suggest li.active { background: var(--bg2); }
.combo-host { position: relative; }
.company-suggest { right: auto; }
.company-suggest li { flex-direction: column; align-items: flex-start; gap: 2px; }
.company-suggest .cs-name { font-weight: 500; }
.company-suggest .cs-sub { font-size: 12px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }
.suggest li.custom { color: var(--brand-text); font-weight: 500; border-top: 1px solid var(--line2); border-radius: 0; margin-top: 4px; padding-top: 10px; }
@media (min-width: 600px) {
  .step-form { grid-template-columns: 150px 96px 150px 1fr; }
  .step-form input[name=note] { grid-column: auto; }
  .step-tools { flex-direction: row; }
}
.tpl { border: 0; padding: 0; margin: 4px 0 0; }
.tpl legend { font-size: 13px; color: var(--fg2); font-weight: 500; margin-bottom: 4px; }
.tpl-item { display: flex; flex-direction: row; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; margin-top: 6px; cursor: pointer; color: var(--fg); font-weight: 400; }
.tpl-item:has(input:checked) { border-color: var(--brand); background: var(--brand-weak); }
.tpl-item input { width: 16px; height: 16px; accent-color: var(--brand); margin: 0; }
.tpl-main { display: flex; flex-direction: column; }
.tpl-name { font-weight: 600; font-size: 14px; }
.essay { border-bottom: 1px solid var(--line2); }
.essay summary { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 12px 20px; cursor: pointer; list-style: none; }
.essay summary::-webkit-details-marker { display: none; }
.essay-title { font-weight: 600; }
.essay details > :not(summary) { margin: 0 20px 12px; }
.essay-body { white-space: pre-wrap; word-break: break-word; font-size: 14px; line-height: 1.7; background: var(--bg2); border-radius: 10px; padding: 12px 14px; max-height: 320px; overflow-y: auto; }
.add-essay { margin-top: 12px; }
.add-essay summary { list-style: none; display: inline-flex; }
.add-essay summary::-webkit-details-marker { display: none; }
.add-essay .form { margin-top: 10px; }
.file-label { font-size: 13px; color: var(--fg2); }
.file-label input { margin-top: 4px; font-size: 14px; }
.btn.danger { color: var(--danger); }
.danger-zone { margin: 32px 0 8px; }
.danger-zone .btn { height: 44px; font-size: 14px; }
.row-between { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
@media (min-width: 900px) { .app-list, .essay-list { margin: 0; } .app-row { padding: 14px 8px; border-radius: 10px; } .essay summary { padding: 12px 8px; } .essay details > :not(summary) { margin: 0 8px 12px; } }

/* ---------- 자소서 보관함 ---------- */
.essay-entry { display: flex; align-items: center; gap: 12px; padding: 14px 16px; margin: 20px 0 4px; border: 1px solid var(--line); border-radius: var(--radius); }
.essay-entry:hover { background: var(--bg2); }
.essay-entry-icon { flex: 0 0 40px; width: 40px; height: 40px; border-radius: 12px; background: var(--brand-weak); color: var(--brand-text); display: inline-flex; align-items: center; justify-content: center; }
.essay-entry-main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.essay-entry-title { font-weight: 600; }
.search { display: flex; gap: 8px; margin-top: 12px; }
.search .input { flex: 1; }
.search .btn { flex: 0 0 auto; }
.essay-lib-head { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.essay-lib-meta { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.essay-list.lib .essay summary { align-items: flex-start; }
.char-counter.over { color: var(--danger); }

/* ---------- 기록 영역 전환 탭 ---------- */
.seg { display: inline-flex; background: var(--bg3); border-radius: 10px; padding: 3px; margin-top: 16px; }
.seg-item { padding: 7px 16px; border-radius: 8px; font-size: 14px; font-weight: 600; color: var(--muted); }
.seg-item.active { background: var(--bg); color: var(--fg); box-shadow: 0 1px 2px rgba(0,0,0,.08); }
.seg + .page-title { padding-top: 12px; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.add-essay[open] > .form { margin-bottom: 16px; }
.add-essay .form { margin-top: 0; }

/* ---------- 탈퇴 / 알림 ---------- */
.card-plain { background: var(--bg2); border-radius: var(--radius); padding: 14px 16px; margin: 16px 0; font-size: 14px; }
.card-plain h2 { font-size: 14px; margin: 14px 0 6px; }
ul.plain { margin: 0; padding-left: 18px; color: var(--fg2); line-height: 1.7; }
.btn.danger-fill { background: var(--danger); color: #fff; }
.notice { background: var(--brand-weak); color: var(--brand-text); padding: 10px 14px; border-radius: 10px; font-size: 14px; margin: 12px 0 4px; }

/* ---------- 기간 필터 ---------- */
.period { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin: -4px 0 12px; }
.period-year { display: inline-flex; align-items: center; gap: 2px; }
.period-y { font-weight: 700; font-size: 16px; min-width: 48px; text-align: center; font-variant-numeric: tabular-nums; }
.period-seg { margin-top: 0; }
.period-seg .seg-item { padding: 6px 11px; font-size: 13px; }
.period-range { flex-basis: 100%; }
.period-range .row { margin-top: 2px; }
.period-range .row > * { flex: 1 1 130px; }
.period-range .btn { flex: 0 0 auto; }

/* ---------- 서류 ---------- */
.chips-row { display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; margin: 8px -20px 10px; padding: 0 20px; }
.chips-row::-webkit-scrollbar { display: none; }
.chips-row > * { flex: 0 0 auto; }
.chip-link { padding: 6px 12px; border-radius: 999px; background: var(--bg3); color: var(--muted); font-size: 13px; font-weight: 600; }
.chip-link.active { background: var(--fg); color: var(--bg); }
.doc-list { list-style: none; padding: 0; margin: 0 -20px; }
.doc { border-bottom: 1px solid var(--line2); }
.doc summary { display: flex; align-items: flex-start; gap: 8px; padding: 12px 20px; cursor: pointer; list-style: none; }
.doc summary::-webkit-details-marker { display: none; }
.doc details > :not(summary) { margin: 0 20px 12px; }
.doc-head { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.doc-meta { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.doc-title { font-weight: 600; }
.doc-actions { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; flex-wrap: wrap; }
.chip.kind.k-이력서 { background: #e8f3ff; color: #1b64da; }
.chip.kind.k-자소서 { background: #eef7ec; color: #2d7a3a; }
.chip.kind.k-포트폴리오 { background: #f3ecff; color: #6b3fc2; }
.chip.kind.k-기타 { background: var(--bg3); color: var(--fg2); }
:root[data-theme="dark"] .chip.kind.k-이력서 { background: #1b2a40; color: #7db3ff; }
:root[data-theme="dark"] .chip.kind.k-자소서 { background: #16301c; color: #7fd58f; }
:root[data-theme="dark"] .chip.kind.k-포트폴리오 { background: #2a1f45; color: #c3a3ff; }
.add-doc summary { list-style: none; display: inline-flex; }
.add-doc summary::-webkit-details-marker { display: none; }
.add-doc .form, .add-doc .doc-pick { margin-top: 10px; }
.doc-pick { list-style: none; padding: 0; margin: 10px 0 0; border: 1px solid var(--line); border-radius: 10px; }
.doc-pick li { padding: 8px 12px; border-bottom: 1px solid var(--line2); }
.doc-pick li:last-child { border-bottom: 0; }
@media (min-width: 900px) { .doc-list { margin: 0; } .doc summary { padding: 12px 8px; } .doc details > :not(summary) { margin: 0 8px 12px; } }

/* ---------- 지원 상세 보기 모드 ---------- */
.timeline { list-style: none; padding: 0; margin: 0; position: relative; }
.timeline::before { content: ""; position: absolute; left: 7px; top: 8px; bottom: 8px; width: 2px; background: var(--line); }
.tl { position: relative; display: flex; gap: 14px; padding: 8px 0 8px 0; }
.tl-dot { flex: 0 0 16px; width: 16px; height: 16px; border-radius: 50%; background: var(--bg); border: 2px solid var(--line); margin-top: 3px; z-index: 1; }
.tl.ok .tl-dot { border-color: #0b7a3b; background: #0b7a3b; }
.tl.bad .tl-dot { border-color: var(--danger); background: var(--danger); }
.tl-main { flex: 1; min-width: 0; }
.tl-top { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.tl-name { font-weight: 600; }
.chip.res { background: var(--bg3); color: var(--muted); }
.chip.res.ok { background: #e6f7ee; color: #0b7a3b; }
.chip.res.bad { background: var(--danger-weak); color: var(--danger); }
:root[data-theme="dark"] .chip.res.ok { background: #143d26; color: #5fd68f; }
.memo-text { white-space: pre-wrap; word-break: break-word; background: var(--bg2); border-radius: 12px; padding: 12px 14px; line-height: 1.7; margin: 0; }

/* ---------- 검색 ---------- */
.search.big { margin: 16px 0 8px; }
.side-search { display: flex; align-items: center; gap: 8px; margin: 0 0 20px; padding: 9px 12px; background: var(--bg2); border-radius: 10px; color: var(--muted); }
.side-search input { flex: 1; min-width: 0; border: 0; background: transparent; font: inherit; font-size: 14px; color: var(--fg); outline: none; }
.side-search:focus-within { box-shadow: 0 0 0 1px var(--line) inset; }

/* ---------- 우측 상단: 야간 모드 + 계정 ---------- */
.top-right { display: none; }
.account { position: relative; }
.account summary { list-style: none; }
.account summary::-webkit-details-marker { display: none; }
.account-btn { display: inline-flex; align-items: center; gap: 8px; padding: 4px 6px 4px 4px; border-radius: 999px; cursor: pointer; }
.account-btn:hover { background: var(--bg2); }
.account-name { display: none; font-size: 14px; font-weight: 500; }
.account-pop { position: absolute; right: 0; top: calc(100% + 6px); min-width: 200px; background: var(--bg); border: 1px solid var(--line);
  border-radius: 12px; box-shadow: 0 10px 30px rgba(0,0,0,.12); padding: 6px; z-index: 40; }
.account-head { padding: 10px 12px 8px; border-bottom: 1px solid var(--line2); margin-bottom: 4px; }
.account-nick { font-weight: 700; }
.account-pop a, .account-pop .link-btn { display: block; width: 100%; text-align: left; padding: 9px 12px; border-radius: 8px; font-size: 14px;
  background: none; border: 0; cursor: pointer; color: var(--fg); }
.account-pop a:hover, .account-pop .link-btn:hover { background: var(--bg2); }
.account-pop form { margin: 0; border-top: 1px solid var(--line2); margin-top: 4px; padding-top: 4px; }
.account-pop .link-btn { color: var(--danger); }
@media (min-width: 900px) {
  /* 위젯 칸(또는 대화창 상단 바)의 오른쪽 끝에 맞춘다 */
  .top-right { display: flex; align-items: center; justify-content: flex-end; gap: 6px; margin-bottom: 14px; }
  .chat-col .appbar .top-right { margin: 0; }
  .account-name { display: inline; }
  .mobile-only { display: none; }
  .desktop-only, .btn.desktop-only { display: inline-flex; margin-right: 8px; }
}

/* ---------- 알림 · 신고 · 차단 · 수정 ---------- */
.bell { position: relative; }
.bell-badge { position: absolute; top: 4px; right: 2px; min-width: 16px; height: 16px; padding: 0 4px; border-radius: 8px; background: var(--danger); color: #fff;
  font-size: 10px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; line-height: 1; }
.noti-list { list-style: none; padding: 0; margin: 0 -20px; }
.noti a { display: flex; align-items: flex-start; gap: 12px; padding: 14px 20px; color: var(--fg); }
.noti a:hover { background: var(--bg2); }
.noti-ico { flex: 0 0 40px; width: 40px; height: 40px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--brand-weak); color: var(--brand); }
.noti-ico.k-warm { background: rgba(255, 149, 0, .14); color: #f08c00; }
.noti-ico.k-gray { background: var(--bg2); color: var(--muted); }
.noti-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.noti-title { font-size: 15px; font-weight: 500; line-height: 1.4; }
.noti.unread .noti-title { font-weight: 700; }
.noti-body { font-size: 14px; color: var(--fg2); line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.noti-time { font-size: 12px; color: var(--muted); margin-top: 2px; }
.noti-dot { flex: 0 0 8px; width: 8px; height: 8px; margin-top: 8px; border-radius: 50%; background: var(--brand); }
.spacer { flex: 1; }
.more { position: relative; }
.more summary { list-style: none; }
.more summary::-webkit-details-marker { display: none; }
.more-pop { position: absolute; right: 0; top: calc(100% + 4px); min-width: 140px; background: var(--bg); border: 1px solid var(--line); border-radius: 10px;
  box-shadow: 0 8px 24px rgba(0,0,0,.12); padding: 4px; z-index: 30; }
.more-pop a, .more-pop .link-btn { display: block; width: 100%; text-align: left; padding: 8px 12px; border-radius: 8px; font-size: 14px; background: none; border: 0; cursor: pointer; color: var(--fg); }
.more-pop a:hover, .more-pop .link-btn:hover { background: var(--bg2); }
.more-pop .link-btn { color: var(--danger); }
.more-pop a, .more-pop .link-btn { display: flex; align-items: center; gap: 8px; }
.more-pop a.neutral { color: var(--fg); }
.more-pop svg { flex: 0 0 auto; }
.more-btn { color: var(--muted); cursor: pointer; }
.more-btn:hover, .more[open] > .more-btn { color: var(--fg); background: var(--bg2); }
.link-btn.small { font-size: 12px; padding: 0; background: none; border: 0; cursor: pointer; }
.link-btn.danger { color: var(--danger); }
.comment-tools { display: inline-flex; gap: 10px; align-items: center; }
.comment-edit { display: grid; gap: 8px; }
.post-actions form { display: inline; }
.report-row { display: block; }
.report-row p { margin: 4px 0; }
.msg .bubble.gone { background: var(--bg3); color: var(--muted); font-style: italic; font-size: 13px; }
@media (min-width: 900px) { .noti-list { margin: 0; } .noti a { padding: 14px 10px; border-radius: 12px; } }

/* ---------- 채팅방 정보 ---------- */
.room-info { display: flex; gap: 14px; align-items: center; padding: 12px 0 6px; }
.room-info-main { min-width: 0; }
.room-info-name { font-size: 18px; font-weight: 700; }
.member-list { list-style: none; padding: 0; margin: 0 -20px; }
.member-row { display: flex; align-items: center; gap: 12px; padding: 10px 20px; border-bottom: 1px solid var(--line2); }
.member-row .avatar.sm { flex-basis: 36px; width: 36px; height: 36px; border-radius: 12px; font-size: 15px; }
.member-name { flex: 1; min-width: 0; font-weight: 500; display: flex; align-items: center; gap: 6px; }
.member-row .more summary { font-weight: 700; letter-spacing: 1px; }
.menu-btn { display: flex; justify-content: space-between; align-items: center; width: 100%; padding: 14px 20px; border: 0; border-top: 1px solid var(--line2); background: none; font: inherit; font-weight: 500; cursor: pointer; text-align: left; }
.menu-btn.danger { color: var(--danger); }
.menu li:last-child .menu-btn { border-bottom: 1px solid var(--line2); }
@media (min-width: 900px) { .member-list { margin: 0; } .member-row { padding: 10px 8px; } .menu-btn { padding: 14px 8px; } }

/* ---------- 메시지 공감 ---------- */
.msg { cursor: default; }
.rx { display: flex; gap: 4px; flex-wrap: wrap; margin-top: 4px; }
.rx:empty { display: none; }
.rx-chip { display: inline-flex; align-items: center; gap: 3px; border: 1px solid var(--line); background: var(--bg); border-radius: 999px; padding: 2px 8px; font-size: 13px; cursor: pointer; color: var(--fg2); }
.rx-chip.on { border-color: var(--brand); background: var(--brand-weak); color: var(--brand-text); }
.msg.mine .rx { justify-content: flex-end; }

/* ---------- 페이지 헤더 (뒤로 + 제목 + 동작) ---------- */
.page-head { display: flex; align-items: center; gap: 4px; padding: 10px 0 12px; margin-left: -10px; }
.page-head h1 { flex: 1; min-width: 0; font-size: 20px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.page-head .back { color: var(--fg); }
.page-actions { display: flex; align-items: center; gap: 6px; }
.hbtn { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border-radius: 50%; background: var(--bg2); color: var(--fg); }
.hbtn:hover { background: var(--bg3); }
.page-title { gap: 6px; }
.track-head { padding: 0 0 12px; }
.track-head .app-meta { margin-top: 6px; }
@media (min-width: 900px) { .page-head { margin-left: -8px; } }

/* ---------- 프로필 사진 ---------- */
.avatar.img { object-fit: cover; background: var(--bg3); }
.avatar.xs { flex-basis: 20px; width: 20px; height: 20px; border-radius: 7px; font-size: 10px; display: inline-flex; vertical-align: middle; }
.msg .who { display: flex; align-items: center; gap: 6px; }
.avatar-edit { display: flex; align-items: center; gap: 14px; padding: 8px 0 18px; flex-wrap: wrap; }
.avatar-edit form { margin: 0; }

/* ---------- 조용한 삭제 버튼: 평소엔 회색, 올리면 붉게 ---------- */
.icon-btn.quiet { color: var(--muted); opacity: .6; }
.icon-btn.quiet:hover, .icon-btn.quiet:focus-visible { color: var(--danger); opacity: 1; background: var(--danger-weak); }

/* ---------- 검색창: 아이콘 안쪽, 버튼 없음, Enter 로 검색 ---------- */
.searchbox { display: flex; align-items: center; gap: 8px; background: var(--bg2); border-radius: 12px; padding: 0 14px; margin: 4px 0 12px; color: var(--muted); }
.searchbox:focus-within { box-shadow: 0 0 0 1px var(--line) inset; color: var(--fg2); }
.searchbox input { flex: 1; min-width: 0; border: 0; background: transparent; font: inherit; font-size: 16px; color: var(--fg); padding: 12px 0; outline: none; }
.searchbox input::placeholder { color: var(--muted); }
.searchbox input::-webkit-search-cancel-button { -webkit-appearance: none; }

/* ---------- 체크박스 → 토글 스위치 ---------- */
label.check { flex-direction: row-reverse; justify-content: space-between; padding: 6px 0; }
label.check input { appearance: none; -webkit-appearance: none; width: 44px; height: 26px; border-radius: 13px; background: var(--line); position: relative; cursor: pointer; transition: background .15s; margin: 0; flex: 0 0 auto; }
label.check input::after { content: ""; position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.25); transition: left .15s; }
label.check input:checked { background: var(--brand); }
label.check input:checked::after { left: 21px; }

/* ---------- 위젯 머리의 더보기: 글자 대신 회색 화살표 ---------- */
.widget-more { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 8px; color: var(--muted); margin-right: -6px; }
.widget-more:hover { background: var(--bg2); color: var(--fg); }
.chat-panel .widget-more { display: none; }

/* ---------- 서류 카드 ---------- */
.doc-card { background: var(--bg); border: 1px solid var(--line); border-radius: 14px; padding: 4px 16px 10px; margin: 14px 0; }
.doc-card-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 0 8px; border-bottom: 1px solid var(--line2); }
.doc-card-title { font-weight: 700; font-size: 16px; }
.doc-card-link { min-width: 0; }
.doc-card-meta { margin-top: 2px; }
.doc-card-empty { padding: 10px 0 4px; margin: 0; }
.hbtn.sm { width: 32px; height: 32px; }
.kind-group { padding: 8px 0 2px; }
.kind-head { display: flex; align-items: center; gap: 8px; padding: 6px 0; }
.kind-add { margin-left: auto; font-size: 13px; color: var(--brand-text); font-weight: 500; }
.doc-card .doc-list { margin: 0; }
.doc-card .doc summary { padding: 10px 0; }
.doc-card .doc details > :not(summary) { margin: 0 0 10px; }
.doc-card .doc:last-child { border-bottom: 0; }

/* ---------- 방 사진 고르기 ---------- */
.avatar-pick { display: flex; align-items: center; gap: 12px; }
.avatar-pick-btn { cursor: pointer; display: inline-flex; position: relative; }
.avatar-pick-btn .avatar { color: var(--muted); background: var(--bg3); }
.avatar-pick-btn:hover .avatar { filter: brightness(.95); }
.avatar-pick-btn::after { content: "+"; position: absolute; right: -4px; bottom: -4px; width: 22px; height: 22px; border-radius: 50%; background: var(--brand); color: #fff; font-size: 16px; line-height: 22px; text-align: center; border: 2px solid var(--bg); }

/* ---------- 서류 항목: 가만히 봐도 구분되는 블록 ---------- */
.doc-card .doc { background: var(--bg2); border: 0; border-radius: 10px; margin: 6px 0; }
.doc-card .doc summary { padding: 10px 12px; border-radius: 10px; }
.doc-card .doc summary:hover { background: var(--bg3); }
.doc-card .doc details[open] summary { border-bottom: 1px solid var(--line); border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
.doc-card .doc details > :not(summary) { margin: 10px 12px; }
.doc-card .doc .essay-body { background: var(--bg); }
.doc-card .kind-group { padding: 10px 0 4px; }
.doc-card .kind-group + .kind-group { border-top: 1px solid var(--line2); }
.doc-title { font-weight: 600; }
/* 지원 상세의 낸 서류, 보관함 공통 */
.doc-list .doc:not(.doc-card .doc) { border-bottom: 0; background: var(--bg2); border-radius: 10px; margin: 6px 0; }
.doc-list .doc:not(.doc-card .doc) summary { padding: 10px 12px; }
.doc-list .doc:not(.doc-card .doc) details > :not(summary) { margin: 10px 12px; }
.doc-list .doc:not(.doc-card .doc) .essay-body { background: var(--bg); }

/* ---------- 회색 카드 안의 입력칸은 흰 바탕 + 테두리로 구분 ---------- */
.form.card .input, .form.card input.input, .form.card select.input, .form.card textarea.input { background: var(--bg); border-color: var(--line); }
.form.card .input:focus { border-color: var(--brand); }
:root[data-theme="dark"] .form.card .input { background: var(--bg3); }

/* ---------- 파일 첨부: 기본 위젯 대신 버튼 + 파일명 ---------- */
.file-pick { display: flex; flex-direction: row; align-items: center; gap: 10px; cursor: pointer; flex-wrap: wrap; }
.file-pick .btn { flex: 0 0 auto; }
.file-pick .file-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ---------- 단계 편집 줄: 회색 줄 위의 입력칸도 흰 바탕 + 테두리 ---------- */
.step-row .input { background: var(--bg); border-color: var(--line); }
.step-row .input:focus { border-color: var(--brand); }
:root[data-theme="dark"] .step-row .input { background: var(--bg3); }

/* ---------- 로그인/가입 전용 레이아웃 ---------- */
.auth-body { background: var(--bg2); min-height: 100vh; display: flex; flex-direction: column; }
.auth-top { display: flex; justify-content: space-between; align-items: center; padding: 16px 20px; }
.auth-top .logo-text { font-size: 22px; }
.auth-main { flex: 1; display: flex; align-items: flex-start; justify-content: center; padding: 24px 16px 48px; }
.auth-body .auth { background: var(--bg); border-radius: 16px; padding: 28px 24px; width: 100%; max-width: 400px; margin: 0; box-shadow: 0 2px 12px rgba(0,0,0,.04); }
.auth-body .auth h1 { font-size: 22px; margin-bottom: 4px; }
.auth-body .auth .form { margin-top: 18px; }
@media (min-width: 600px) { .auth-main { align-items: center; } .auth-body .auth { padding: 36px 32px; } }
:root[data-theme="dark"] .auth-body { background: var(--bg2); }
:root[data-theme="dark"] .auth-body .auth { background: var(--bg); box-shadow: none; border: 1px solid var(--line); }

/* ---------- 로그인 안내 상자 ---------- */
.login-prompt { display: flex; align-items: center; justify-content: space-between; gap: 12px; background: var(--bg2); border-radius: 12px; padding: 12px 14px; margin: 12px 0; font-size: 14px; color: var(--fg2); }
.login-prompt .btn { flex: 0 0 auto; }

/* ---------- 댓글 입력 정렬, 익명 아바타, 종류 칩 ---------- */
.avatar.anon { background: var(--bg3); color: var(--muted); }
.kind-group .doc .chip.kind { display: none; }

/* ---------- 소셜 로그인 ---------- */
.social { display: flex; flex-direction: column; gap: 10px; margin-top: 18px; }
.social-btn { display: flex; align-items: center; justify-content: center; gap: 10px; height: 48px; border-radius: 10px; font-weight: 600; font-size: 15px; border: 1px solid var(--line); background: var(--bg); color: var(--fg); }
.social-btn:hover { filter: brightness(.97); }
.social-btn.s-kakao { background: #FEE500; color: #191919; border-color: #FEE500; }
.social-btn.s-naver { background: #03C75A; color: #fff; border-color: #03C75A; }
.social-btn.s-google { background: var(--bg); }
:root[data-theme="dark"] .social-btn.s-google { background: #fff; color: #191919; border-color: #fff; }
.divider { display: flex; align-items: center; gap: 12px; margin: 18px 0 2px; color: var(--muted); font-size: 12px; }
.divider::before, .divider::after { content: ""; flex: 1; height: 1px; background: var(--line); }

/* ---------- 세로 스크롤바 자리를 항상 확보: 긴 페이지와 짧은 페이지 사이에서 가운데 정렬이 흔들리지 않게 ---------- */
/* 마우스를 연결한 맥·윈도우는 스크롤바가 항상 보이며 폭을 차지한다(트랙패드는 위에 겹쳐 보임).
   페이지 스크롤바는 얇게, 옆 칸(위젯·채팅 목록)은 숨긴다. 휠·트랙패드 스크롤은 그대로 된다. */
@media (min-width: 900px) {
  html { scrollbar-gutter: stable; scrollbar-width: thin; }
  .rail, .chat-panel { scrollbar-width: none; }
  .rail::-webkit-scrollbar, .chat-panel::-webkit-scrollbar { display: none; }
  .messages { scrollbar-width: thin; }
}

/* ---------- 스터디 / 합격 인증 ---------- */
.chip.verified { background: #e6f7ee; color: #0b7a3b; }
:root[data-theme="dark"] .chip.verified { background: #143d26; color: #5fd68f; }
.chip.gate { background: var(--brand-weak); color: var(--brand-text); display: inline-flex; align-items: center; gap: 4px; }
.tab-link-ext { margin-left: auto; color: var(--brand-text); display: inline-flex; align-items: center; gap: 2px; }
.study-list { list-style: none; padding: 0; margin: 0 -20px; }
.study-row { display: block; padding: 14px 20px; border-bottom: 1px solid var(--line2); }
.study-row:hover { background: var(--bg2); }
.study-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.study-title { font-weight: 600; font-size: 16px; }
.study-meta { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; font-size: 13px; color: var(--muted); margin-top: 4px; }
.study-meta span { display: inline-flex; align-items: center; gap: 3px; }
.study-req { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; margin-top: 8px; }
.study-full { padding: 8px 0 16px; border-bottom: 1px solid var(--line); }
.study-h1 { font-size: 20px; }
.study-facts { display: grid; grid-template-columns: 80px 1fr; gap: 8px 12px; margin: 14px 0; font-size: 14px; }
.study-facts dt { color: var(--muted); }
.study-facts dd { margin: 0; }
.study-actions { margin-top: 20px; display: flex; flex-direction: column; gap: 10px; }
.btn:disabled { opacity: .5; cursor: default; }
@media (min-width: 900px) { .study-list { margin: 0; } .study-row { padding: 14px 8px; border-radius: 10px; } }

/* ---------- 홈 상단: 스터디 가로 슬라이드 + 더보기 ---------- */
.strip { margin-top: 10px; }
.strip-head { display: flex; align-items: center; justify-content: space-between; padding: 4px 0 8px; }
.strip-head b { font-size: 16px; }
.strip-empty { display: block; padding: 14px 0; color: var(--muted); font-size: 14px; }
.hscroll { display: flex; gap: 8px; overflow-x: auto; margin: 0 -20px; padding: 2px 20px 10px; scroll-snap-type: x mandatory; scrollbar-width: none; }
.hscroll::-webkit-scrollbar { display: none; }
.scard { flex: 0 0 200px; scroll-snap-align: start; background: var(--bg2); border-radius: 14px; padding: 13px 14px; min-height: 108px; display: flex; flex-direction: column; gap: 4px; color: var(--fg); min-width: 0; }
.scard:hover { background: var(--bg3); }
.scard-k { font-size: 12px; font-weight: 600; color: var(--fg2); display: flex; gap: 5px; white-space: nowrap; overflow: hidden; }
.scard-t { font-weight: 600; font-size: 15px; line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.scard-b { margin-top: auto; font-size: 12px; color: var(--fg2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.scard.add { flex-basis: 120px; align-items: center; justify-content: center; gap: 6px; background: var(--bg); border: 1.5px dashed var(--line); color: var(--muted); font-size: 13px; }
.strip + .tabs { margin-top: 2px; }
@media (min-width: 900px) { .hscroll { margin: 0; padding: 2px 0 10px; } }
@media (min-width: 900px) { .hscroll { margin: 0; padding: 2px 0 8px; } }

/* ---------- 확인 창 (브라우저 confirm 대신) ---------- */
dialog.cdlg { border: 0; border-radius: 16px; padding: 22px 20px 16px; width: min(340px, calc(100vw - 32px)); background: var(--bg); color: var(--fg); box-shadow: 0 12px 40px rgba(0,0,0,.2); }
dialog.cdlg::backdrop { background: rgba(0,0,0,.4); }
.cdlg-msg { margin: 0 0 18px; font-size: 15px; line-height: 1.55; word-break: keep-all; }
.cdlg-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.cdlg-actions .btn { height: 44px; border-radius: 12px; font-size: 15px; font-weight: 600; }
.btn.danger-fill { background: var(--danger); color: #fff; }
@media (max-width: 899px) {
  dialog.cdlg { margin: auto auto 0; width: 100%; max-width: 100%; border-radius: 18px 18px 0 0; padding-bottom: calc(16px + env(safe-area-inset-bottom, 0px)); }
}

/* 다크 모드: 로그인 화면은 페이지가 카드보다 어둡게 */
:root[data-theme="dark"] .auth-body { background: var(--bg); }
:root[data-theme="dark"] .auth-body .auth { background: var(--bg2); box-shadow: none; }

/* ---------- 오류 페이지 ---------- */
.errpage { text-align: center; padding: 72px 16px 40px; }
.errpage-code { font-size: 56px; font-weight: 800; letter-spacing: -.02em; color: var(--bg3); line-height: 1; margin-bottom: 18px; }
.errpage h1 { font-size: 20px; margin: 0 0 8px; }
.errpage p { margin: 0 0 24px; font-size: 14px; }
.errpage-actions { display: flex; gap: 8px; justify-content: center; }

/* 모바일 하단 탭 배지 */
.tab-ico { position: relative; display: inline-flex; }
.tab-badge-slot:empty { display: none; }
.tab-badge { position: absolute; top: -4px; left: 14px; min-width: 16px; height: 16px; padding: 0 4px; border-radius: 8px; background: var(--danger); color: #fff; font-size: 10px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; line-height: 1; }

.btn.pill { border-radius: 999px; }

/* ---------- 만들기 폼 (글쓰기·방 열기·지원 추가·일정 추가·스터디 만들기 공통 .sform) ---------- */
.sform { gap: 0; }
.fsec { display: grid; gap: 10px; padding: 20px 0; border-bottom: 1px solid var(--line2); }
.fsec:first-child { padding-top: 8px; }
.fsec-title { margin: 0 0 2px; font-size: 15px; font-weight: 700; }
.fsec-label { font-size: 13px; font-weight: 600; color: var(--fg2); margin-top: 4px; }
.fsec-hint { margin: 0; font-size: 12px; color: var(--muted); }
.picks { display: flex; flex-wrap: wrap; gap: 8px; }
.pick { position: relative; cursor: pointer; }
.pick input { position: absolute; opacity: 0; pointer-events: none; }
.pick span { display: inline-flex; align-items: center; height: 38px; padding: 0 14px; border-radius: 10px; border: 1px solid var(--line); background: var(--bg); color: var(--fg2); font-size: 14px; font-weight: 500; transition: border-color .12s, background .12s, color .12s; }
.pick:hover span { border-color: var(--muted); }
.pick input:checked + span { border-color: var(--brand); background: var(--brand-weak); color: var(--brand-text); font-weight: 700; }
.pick input:focus-visible + span { outline: 2px solid var(--brand); outline-offset: 2px; }
.seg-picks { display: grid; grid-template-columns: repeat(3, 1fr); }
.seg-picks .pick span { width: 100%; justify-content: center; }
/* 온라인이면 지역 칸을 숨긴다 */
.sform:has(input[name=mode][value="온라인"]:checked) .region-field { display: none; }
.cap-row { display: flex; align-items: center; justify-content: space-between; }
.cap-row .fsec-label { margin: 0; }
.stepper { display: inline-flex; align-items: center; border: 1px solid var(--line); border-radius: 10px; overflow: hidden; }
.stepper button { width: 40px; height: 38px; border: 0; background: var(--bg); color: var(--fg2); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.stepper button:hover { background: var(--bg2); color: var(--fg); }
.stepper input { width: 44px; height: 38px; border: 0; border-left: 1px solid var(--line); border-right: 1px solid var(--line); text-align: center; font: inherit; font-size: 15px; font-weight: 700; background: var(--bg); color: var(--fg); -moz-appearance: textfield; }
.stepper input::-webkit-inner-spin-button, .stepper input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.sform-submit { margin-top: 20px; height: 50px; font-size: 16px; border-radius: 12px; }

/* ---------- 시트(모달) ---------- */
dialog.sheet { border: 0; padding: 0; width: min(560px, calc(100vw - 32px)); max-height: 88vh; border-radius: 18px; background: var(--bg); color: var(--fg); box-shadow: 0 20px 60px rgba(0,0,0,.25); display: flex; flex-direction: column; overflow: hidden; }
dialog.sheet:not([open]) { display: none; }
dialog.sheet::backdrop { background: rgba(0,0,0,.45); }
body:has(dialog.sheet[open]) { overflow: hidden; }
.sheet-head { display: flex; align-items: center; justify-content: space-between; padding: 14px 12px 10px 22px; border-bottom: 1px solid var(--line2); }
.sheet-head h2 { margin: 0; font-size: 17px; font-weight: 700; }
.sheet-body { overflow-y: auto; padding: 0 22px; overscroll-behavior: contain; }
/* 제출 버튼은 시트 아래에 붙고, 위아래를 바탕색으로 덮어 스크롤되는 내용과 겹치지 않게 */
.sheet-body .sform-submit { position: sticky; bottom: 18px; margin: 24px 0 18px; box-shadow: 0 -14px 10px -6px var(--bg), 0 18px 0 0 var(--bg); }
@media (max-width: 899px) {
  dialog.sheet { margin: auto 0 0; width: 100%; max-width: 100%; max-height: 92vh; border-radius: 20px 20px 0 0; }
  .sheet-body .sform-submit { bottom: calc(18px + env(safe-area-inset-bottom, 0px)); margin-bottom: calc(18px + env(safe-area-inset-bottom, 0px)); }
}

/* ---------- 무한 스크롤 ---------- */
.feed-more { display: flex; justify-content: center; padding: 22px 0 30px; }
.spinner { width: 22px; height: 22px; border-radius: 50%; border: 2px solid var(--line); border-top-color: var(--brand); animation: spin .7s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.feed-end { text-align: center; padding: 24px 0 40px; font-size: 13px; color: var(--muted); }

.sform .row { display: flex; gap: 8px; }
.sform .row > * { flex: 1 1 0; min-width: 0; }
.sform .tpl { display: grid; gap: 8px; border: 0; padding: 0; margin: 0; }
.sform .avatar-pick { display: flex; align-items: center; gap: 12px; }
/* 추천 목록(datalist)이 붙은 입력칸의 화살표 숨김 */
input[list]::-webkit-calendar-picker-indicator { display: none !important; }
.sform .fsec:last-of-type { border-bottom: 0; }
.more-li { list-style: none; border: 0; }
.sub-title { font-size: 15px; font-weight: 700; margin: 22px 0 8px; }
.chat-locked { display: flex; flex-direction: column; align-items: center; gap: 6px; margin: auto; padding: 60px 16px; color: var(--muted); text-align: center; }
.chat-locked p { margin: 0; color: var(--fg2); font-weight: 600; }

/* 로그인·가입 시트 */
.auth-sheet { display: grid; gap: 12px; padding: 18px 0 22px; }
.auth-sheet .form { gap: 10px; }
.auth-sheet p { margin: 0; }

/* ---------- 로그인·가입 (전체 페이지·시트 공통) ---------- */
.sheet-head.bare { border-bottom: 0; padding-bottom: 0; }
.sheet-head.bare h2 { display: none; }
.sheet-head.bare { justify-content: flex-end; }
.auth2 { display: grid; gap: 14px; padding: 4px 0 26px; }
.auth2-title { margin: 0 0 6px; font-size: 26px; font-weight: 800; letter-spacing: -.02em; }
.auth2 .error { margin: 0; }
.auth2-form { display: grid; gap: 10px; }
.input.lg { height: 54px; border-radius: 14px; font-size: 16px; padding: 0 18px; }
.btn.lg { height: 54px; border-radius: 14px; font-size: 16px; font-weight: 700; margin-top: 4px; }
.auth2-links { display: flex; justify-content: center; align-items: center; gap: 12px; font-size: 14px; }
.auth2-links a { color: var(--fg2); font-weight: 500; }
.auth2-links a:hover { color: var(--fg); text-decoration: underline; text-underline-offset: 3px; }
.auth2-links .sep { width: 1px; height: 12px; background: var(--line); }
.auth2 .divider { margin: 10px 0 0; }
.social-row { display: flex; justify-content: center; gap: 16px; }
.social-circle { width: 52px; height: 52px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--line); background: #fff; transition: transform .12s, box-shadow .12s; }
.social-circle:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0,0,0,.08); }
.social-circle svg { width: 24px; height: 24px; }
.social-circle.s-naver { background: #03C75A; border-color: #03C75A; }
.social-circle.s-kakao { background: #FEE500; border-color: #FEE500; }
.auth-body .auth { padding: 30px 26px 8px; }
@media (min-width: 900px) { dialog.sheet:has(.auth2) { width: min(420px, calc(100vw - 32px)); } }
.auth-body .auth { max-width: 420px; }
.auth-body .auth .auth2-title { font-size: 26px; margin: 0 0 6px; }

/* 로그인·가입 다듬기: 가운데 정렬, 흰 입력칸, 닫기 버튼은 모서리에 */
dialog.sheet:has(.auth2) .sheet-head.bare { position: absolute; top: 8px; right: 8px; padding: 0; border: 0; z-index: 2; }
dialog.sheet:has(.auth2) { position: relative; }
dialog.sheet:has(.auth2) .sheet-body { padding: 0 28px; }
.auth2 { padding: 34px 0 28px; gap: 12px; }
.auth2-head { display: grid; justify-items: center; gap: 12px; margin-bottom: 10px; }
.auth2-head .logo-mark { color: var(--brand); }
.auth2-title, .auth-body .auth .auth2-title { margin: 0; font-size: 22px; font-weight: 800; text-align: center; letter-spacing: -.02em; }
.auth2 .input.lg { background: var(--bg); border: 1px solid var(--line); height: 52px; border-radius: 12px; }
.auth2 .input.lg:focus { border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand-weak); outline: none; }
.auth2 .btn.lg { height: 52px; border-radius: 12px; }
.auth2 .error { text-align: center; }
.social-circle { width: 48px; height: 48px; }
.social-circle svg { width: auto; height: auto; }
.auth-body .auth { padding: 34px 28px 4px; border: 1px solid var(--line2); box-shadow: 0 8px 30px rgba(0,0,0,.05); }
.social-circle.s-google svg { width: 22px; height: 22px; }
.sform > .error { margin: 14px 0 0; }

/* 로그아웃 채팅 탭: 로그인·가입 안내 */
.guest-cta { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 18px; border-radius: 14px; background: var(--brand-weak); margin-bottom: 8px; flex-wrap: wrap; }
.guest-cta-text { display: grid; gap: 2px; min-width: 0; }
.guest-cta-text b { font-size: 15px; color: var(--fg); }
.guest-cta-text span { font-size: 13px; color: var(--fg2); }
.guest-cta-actions { display: flex; gap: 8px; flex: 0 0 auto; }

/* 짧은 알림(브라우저 alert 대신) */
#toast { position: fixed; left: 50%; bottom: calc(24px + var(--tabbar-h, 0px) + env(safe-area-inset-bottom, 0px)); transform: translate(-50%, 20px); background: var(--fg); color: var(--bg); padding: 11px 18px; border-radius: 12px; font-size: 14px; opacity: 0; pointer-events: none; transition: opacity .2s, transform .2s; z-index: 100; max-width: calc(100vw - 32px); }
#toast.show { opacity: 1; transform: translate(-50%, 0); }

/* ---- 회사 정보 카드 (국민연금 기준 추정) ---- */
.company-card { background: var(--bg2); border-radius: var(--radius); padding: 14px 16px; margin: 12px 0; display: flex; flex-direction: column; gap: 12px; }
.cc-head { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.cc-name { font-size: 15px; }
.cc-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.cc-stat { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.cc-num { font-size: 18px; font-weight: 800; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }
.cc-num.up { color: var(--brand-text); }
.cc-num.down { color: var(--danger); }
.cc-label { font-size: 12px; color: var(--muted); }
.cc-trend { display: flex; align-items: flex-end; gap: 6px; height: 72px; overflow-x: auto; }
.cc-col { flex: 1 0 22px; display: flex; flex-direction: column; align-items: center; gap: 4px; height: 100%; }
.cc-bars { flex: 1; width: 100%; display: flex; align-items: flex-end; justify-content: center; gap: 2px; }
.cc-bar { width: 6px; border-radius: 3px 3px 0 0; }
.cc-bar.up { background: var(--brand); }
.cc-bar.down { background: var(--danger); opacity: .75; }
.cc-m { font-size: 11px; color: var(--muted); }
.cc-note { margin: 0; font-size: 11px; color: var(--muted); }

/* ---- 관리자: 기업 정보 ---- */
.cadmin-portal { margin: 4px 0 12px; }
.cadmin-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.cadmin-upload { display: flex; gap: 8px; align-items: center; flex: 1 1 280px; min-width: 0; }
.cadmin-upload .file-pick { flex: 1; min-width: 0; flex-wrap: nowrap; }
.cadmin-log { list-style: none; margin: 0; padding: 0; }
.cadmin-log li { display: flex; flex-direction: column; gap: 4px; padding: 12px 0; border-bottom: 1px solid var(--line2); }
.error-text { color: var(--danger); margin: 0; }
.chip.danger { background: var(--danger-weak); color: var(--danger); }

/* ---- 관리자 콘솔 ---- */

.adm-alert { display: flex; align-items: center; justify-content: space-between; background: var(--danger-weak); color: var(--danger); font-weight: 600; font-size: 14px; border-radius: var(--radius); padding: 12px 16px; margin-bottom: 12px; }
.stat-sub { font-size: 12px; color: var(--muted); margin-top: 2px; }
@media (min-width: 600px) { .adm-content .stats { grid-template-columns: repeat(3, 1fr); } }
.adm-bars { display: flex; align-items: flex-end; gap: 4px; height: 140px; padding: 8px 0; }
.adm-bar-col { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: 4px; height: 100%; min-width: 0; }
.adm-bar { width: 100%; max-width: 22px; background: var(--brand); border-radius: 4px 4px 0 0; min-height: 2px; }
.adm-bar-n { font-size: 11px; color: var(--fg2); font-variant-numeric: tabular-nums; }
.adm-bar-d { font-size: 11px; color: var(--muted); }
.adm-list { list-style: none; margin: 0; padding: 0; }
.adm-row { display: flex; flex-direction: column; gap: 6px; padding: 14px 0; border-bottom: 1px solid var(--line2); }
.adm-quote { margin: 0; padding: 8px 12px; background: var(--bg2); border-radius: 8px; font-size: 14px; color: var(--fg); overflow-wrap: anywhere; }
.adm-meta { display: flex; flex-wrap: wrap; gap: 4px; }
.adm-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 2px; }
.adm-actions .btn { height: 36px; font-size: 13px; padding: 0 14px; }
.adm-search { display: flex; gap: 8px; align-items: center; margin-bottom: 4px; }
.adm-search .input { flex: 1; min-width: 0; }
.adm-check { flex: 0 0 auto; white-space: nowrap; flex-direction: row !important; }
.adm-user-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 4px; border-bottom: 1px solid var(--line2); }
.adm-user-row:hover { background: var(--bg2); }
.adm-user-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.adm-user-name { font-weight: 600; display: flex; align-items: center; gap: 6px; }
.adm-user-nums { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; flex: 0 0 auto; }
.adm-reported { color: var(--danger); font-weight: 600; }
.adm-profile { margin-bottom: 8px; }
.adm-suspend { margin-top: 8px; }
.adm-suspended { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.adm-suspend-form { gap: 10px; }
.adm-post { flex-direction: row; align-items: center; justify-content: space-between; gap: 12px; }
.adm-post-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.adm-post-title { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat-suspended { justify-content: center; font-size: 13px; color: var(--danger); text-align: center; padding: 14px 16px; }
.adm-report-head { margin-bottom: 8px; flex-wrap: wrap; } .adm-report-head .seg { margin: 0; }
.stats.adm-three { grid-template-columns: repeat(3, 1fr); }

/* 관리자 전용 레이아웃: 모바일은 위쪽 가로 메뉴, PC 는 왼쪽 메뉴 */
.adm-app { background: var(--bg); min-height: 100vh; }
.adm-side { position: sticky; top: 0; z-index: 20; background: var(--bg); border-bottom: 1px solid var(--line2); }
.adm-brand-row { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px 4px; }
.adm-brand { display: inline-flex; align-items: center; gap: 8px; }
.adm-brand-tag { font-size: 12px; font-weight: 700; color: var(--brand-text); background: var(--brand-weak); border-radius: 6px; padding: 2px 7px; }
.adm-site-link { font-size: 13px; color: var(--muted); }
.adm-nav { display: flex; gap: 2px; overflow-x: auto; padding: 4px 10px 8px; scrollbar-width: none; }
.adm-nav::-webkit-scrollbar { display: none; }
.adm-nav-link { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border-radius: 10px; font-size: 14px; font-weight: 600; color: var(--fg2); white-space: nowrap; flex: 0 0 auto; }
.adm-nav-link:hover { background: var(--bg2); }
.adm-nav-link.active { background: var(--bg3); color: var(--fg); }
.adm-nav-link svg { flex: 0 0 auto; }
.adm-nav .adm-nav-link svg { display: none; }
.adm-badge { background: var(--danger); color: #fff; border-radius: 999px; font-size: 11px; font-weight: 700; padding: 1px 6px; min-width: 18px; text-align: center; }
.adm-side-foot { display: none; }
.adm-main { min-width: 0; }
.adm-top { padding: 20px 16px 4px; }
.adm-title { font-size: 22px; font-weight: 800; letter-spacing: -0.02em; margin: 0; }
.adm-content { padding: 8px 16px 48px; }
.adm-back { display: inline-flex; align-items: center; gap: 2px; margin-bottom: 12px; }
@media (min-width: 900px) {
  .adm-app { display: grid; grid-template-columns: 232px minmax(0, 1fr); }
  .adm-side { position: sticky; top: 0; height: 100vh; border-bottom: 0; border-right: 1px solid var(--line2); background: var(--bg2);
    display: flex; flex-direction: column; padding: 16px 12px; }
  .adm-brand-row { padding: 4px 8px 20px; }
  .adm-mobile-only { display: none; }
  .adm-nav { flex-direction: column; overflow: visible; padding: 0; gap: 2px; }
  .adm-nav .adm-nav-link svg { display: block; }
  .adm-nav-link { padding: 10px 12px; font-size: 15px; }
  .adm-nav-link.active { background: var(--bg); box-shadow: 0 1px 2px rgba(0,0,0,.05); }
  .adm-badge-slot { margin-left: auto; }
  .adm-side-foot { display: flex; flex-direction: column; gap: 8px; margin-top: auto; padding-top: 12px; border-top: 1px solid var(--line); }
  .adm-side-foot .adm-nav-link { font-size: 14px; color: var(--muted); }
  .adm-me { display: flex; align-items: center; gap: 8px; padding: 4px 8px; }
  .adm-me-name { flex: 1; min-width: 0; font-size: 14px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .adm-top { padding: 32px 40px 8px; max-width: 1080px; }
  .adm-content { padding: 8px 40px 64px; max-width: 1080px; }
}
.adm-lead { margin: 0 0 8px; }
.adm-staff-add { background: var(--bg2); border-radius: var(--radius); padding: 4px 16px 16px; margin-bottom: 8px; }
.adm-staff-add .input { background: var(--bg); }
.adm-perms { display: grid; grid-template-columns: 1fr; gap: 6px; }
@media (min-width: 700px) { .adm-perms { grid-template-columns: 1fr 1fr; } }
.adm-perm { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--bg); cursor: pointer; }
.adm-perm:has(input:checked) { border-color: var(--brand); background: var(--brand-weak); }
.adm-perm input { margin-top: 3px; accent-color: var(--brand); }
.adm-perm-text { display: flex; flex-direction: column; gap: 2px; }
.adm-staff-who { display: flex; align-items: center; gap: 10px; }
.adm-staff-form { gap: 10px; }
.adm-table-wrap { overflow-x: auto; margin: 4px 0 8px; }
.adm-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.adm-table th { text-align: left; font-size: 12px; font-weight: 600; color: var(--muted); padding: 8px 10px; border-bottom: 1px solid var(--line); white-space: nowrap; }
.adm-table td { padding: 10px; border-bottom: 1px solid var(--line2); vertical-align: top; }
.adm-table .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.adm-table .up { color: var(--brand-text); }
.adm-table .down { color: var(--danger); }
.adm-table tr.off td { opacity: .6; }
.adm-co-name { font-weight: 600; }
.adm-co-head { margin-bottom: 12px; }
.adm-co-title { font-size: 20px; margin: 0 0 2px; display: flex; align-items: center; gap: 8px; }
.adm-dl { display: grid; grid-template-columns: max-content 1fr; gap: 6px 16px; margin: 0 0 16px; font-size: 14px; }
.adm-dl dt { color: var(--muted); }
.adm-dl dd { margin: 0; }
.adm-aliases { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.adm-alias { display: inline-flex; align-items: center; gap: 2px; }
.adm-alias-key { font-weight: 500; opacity: .7; margin-right: 2px; }
.adm-seg { margin: 0 0 12px; }
.adm-staff-top { align-items: flex-start; gap: 12px; margin-bottom: 4px; }
.adm-staff-top .btn { flex: 0 0 auto; }
.adm-staff-row { display: flex; align-items: center; gap: 12px; padding: 14px 4px; border-bottom: 1px solid var(--line2); }
a.adm-staff-row:hover { background: var(--bg2); }
.adm-staff-row .adm-user-main { flex: 1; }
.adm-perm-chips { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
.adm-row-go { color: var(--muted); flex: 0 0 auto; }
.adm-staff-head { margin-bottom: 12px; }
.adm-revoke { margin-top: 8px; }
@media (min-width: 600px) { dialog.sheet .adm-perms { grid-template-columns: 1fr 1fr; } }

/* 폼 안 label 의 세로 배치를 덮어써서 체크박스를 글자 왼쪽에 둔다 */
label.adm-perm, .form label.adm-perm { flex-direction: row; align-items: flex-start; gap: 10px; font-weight: 400; color: var(--fg); }
.adm-perm .adm-perm-text strong { font-size: 14px; }
.adm-perm .adm-perm-text .small { font-size: 12px; line-height: 1.4; }
dialog.sheet .adm-staff-head { margin-top: 18px; }
dialog.sheet .adm-revoke { margin: 0 0 22px; }
dialog.sheet .adm-revoke .btn { height: 44px; font-size: 14px; }
.adm-running { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 14px; margin: 12px 0 0; } .adm-period { margin: 8px 0 4px; } .adm-period .seg { margin-top: 0; } .adm-more { padding: 16px 0; text-align: center; list-style: none; } .adm-select { width: auto; min-width: 160px; }

/* ---- 서비스 소개·약관·처리방침 ---- */
.legal { max-width: 720px; font-size: 15px; line-height: 1.75; color: var(--fg); }
.legal h2 { font-size: 16px; margin: 28px 0 8px; }
.legal p { margin: 0 0 10px; }
.legal ol, .legal ul { margin: 0 0 10px; padding-left: 20px; display: flex; flex-direction: column; gap: 4px; }
.legal-lead { font-size: 17px; font-weight: 600; margin-top: 4px !important; }
.legal-note { font-size: 13px; color: var(--muted); }
.legal-table { width: 100%; border-collapse: collapse; font-size: 14px; margin: 4px 0 12px; display: block; overflow-x: auto; }
.legal-table th, .legal-table td { border: 1px solid var(--line); padding: 8px 10px; text-align: left; vertical-align: top; }
.legal-table th { background: var(--bg2); font-weight: 600; white-space: nowrap; }
.legal-dl { display: grid; grid-template-columns: max-content 1fr; gap: 4px 16px; margin: 0 0 10px; }
.legal-dl dt { color: var(--muted); }
.legal-dl dd { margin: 0; }
.legal-links { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 12px; color: var(--muted); margin: 32px 0 8px; }
.legal-links a { color: var(--muted); }
.legal-links a:hover { color: var(--fg2); }
.sidenav .legal-links { margin: 20px 4px 0; }
.signup-notice { font-size: 12px; color: var(--muted); text-align: center; line-height: 1.6; margin: 12px 0 0; }
.signup-notice a { color: var(--fg2); text-decoration: underline; }
.legal-table td:first-child { min-width: 7.5em; }
.legal table { width: 100%; border-collapse: collapse; font-size: 14px; margin: 4px 0 12px; display: block; overflow-x: auto; }
.legal th, .legal td { border: 1px solid var(--line); padding: 8px 10px; text-align: left; vertical-align: top; }
.legal th { background: var(--bg2); font-weight: 600; white-space: nowrap; }
.legal td:first-child { min-width: 7.5em; }
.legal a { color: var(--brand-text); }
.legal > p:first-child { color: var(--fg); }
.legal-hidden { margin-bottom: 12px; }
/* 관리자: 사이트 문서 */
.adm-page-row { flex-direction: row; align-items: center; gap: 12px; }
.adm-page-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.adm-page-vis { margin: 0; }
.adm-page-head { margin-bottom: 10px; flex-wrap: wrap; gap: 8px; }
.adm-page-form { gap: 10px; }
.adm-md { display: grid; grid-template-columns: 1fr; gap: 12px; }
@media (min-width: 1100px) { .adm-md { grid-template-columns: 1fr 1fr; } }
.adm-md-col { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.adm-md-label { font-size: 12px; font-weight: 600; color: var(--muted); }
.adm-md-input { min-height: 520px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 13px; line-height: 1.6; resize: vertical; }
.adm-md-preview { border: 1px solid var(--line); border-radius: 10px; padding: 4px 18px 12px; max-height: 640px; overflow-y: auto; font-size: 14px; }
textarea.input.adm-md-input { min-height: 560px; height: 560px; }

/* ---- 서류: 목록 줄은 서류 페이지로, 쓰기·수정은 따로 된 페이지 ---- */
.doc-row { display: flex; align-items: center; gap: 10px; padding: 12px 20px; color: inherit; }
.doc-row:hover { background: var(--bg2); }
.doc-row .doc-head { flex: 1; min-width: 0; }
.doc-go { color: var(--muted); flex: 0 0 auto; }
.track-docs { margin-top: 4px; }
.track-docs h2 { margin: 16px 0 4px; }
.track-docs .add-doc > summary { list-style: none; display: inline-flex; align-items: center; gap: 4px; cursor: pointer; margin-top: 8px; }
.track-docs .add-doc > summary::-webkit-details-marker { display: none; }
.doc-editor { gap: 10px; }
textarea.input.doc-editor-body { min-height: 360px; line-height: 1.7; }
.doc-editor-actions { gap: 8px; }
.doc-file-now { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; padding: 10px 12px; background: var(--bg2); border-radius: 10px; }
.doc-show-meta { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin: 4px 0 14px; }
.doc-show-body { white-space: pre-wrap; line-height: 1.8; font-size: 15px; background: var(--bg2); border-radius: var(--radius); padding: 16px 18px; margin-bottom: 6px; overflow-wrap: anywhere; }
.doc-file { display: flex; align-items: center; gap: 10px; padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--radius); margin: 12px 0; color: inherit; }
.doc-file:hover { background: var(--bg2); }
.doc-file-name { font-weight: 600; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.doc-show-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 12px; }
.doc-copy { gap: 6px; flex-wrap: nowrap; }
.doc-copy select { min-width: 160px; }
.doc-show-body.essay-body { max-height: none; overflow: visible; }

/* 자소서 문항 */
.essay-items { display: flex; flex-direction: column; gap: 12px; }
.essay-item { display: flex; flex-direction: column; gap: 8px; padding: 14px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--bg); }
.essay-item-head { align-items: center; }
.essay-no { font-size: 13px; font-weight: 700; color: var(--brand-text); }
textarea.input.essay-item-body { min-height: 220px; line-height: 1.7; }
.item-counter.over, .char-counter.over { color: var(--danger); font-weight: 600; }
.essay-add { border-style: dashed; }
.essay-q { margin: 0 0 18px; }
.essay-q-head { align-items: flex-start; gap: 10px; margin-bottom: 8px; }
.essay-q-title { font-size: 15px; font-weight: 700; margin: 4px 0 0; line-height: 1.5; }

/* ---------- 채팅방 공지 ---------- */
.room-notice { margin: 8px 12px 0; background: var(--bg); border: 1px solid var(--line); border-radius: 14px; box-shadow: 0 4px 14px rgba(0,0,0,.05); position: relative; z-index: 2; }
.room-notice-main { display: flex; align-items: center; gap: 10px; width: 100%; padding: 11px 14px; border: 0; background: none; color: var(--fg); font: inherit; text-align: left; cursor: pointer; }
.room-notice-main > svg { color: var(--brand); flex: 0 0 auto; }
.room-notice-text { flex: 1; min-width: 0; font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.room-notice-caret { color: var(--muted); display: inline-flex; transform: rotate(90deg); transition: transform .15s; }
.room-notice-foot { display: none; align-items: center; justify-content: space-between; gap: 8px; padding: 0 14px 10px 42px; }
.room-notice-acts { display: inline-flex; gap: 12px; }
.room-notice.open .room-notice-text { white-space: pre-wrap; word-break: break-word; }
.room-notice.open .room-notice-caret { transform: rotate(-90deg); }
.room-notice.open .room-notice-foot { display: flex; }
.room-notice-pill { display: none; }
.room-notice.folded { margin: 8px 12px 0 auto; width: max-content; background: none; border: 0; box-shadow: none; }
.room-notice.folded > :not(.room-notice-pill) { display: none; }
.room-notice.folded .room-notice-pill { display: inline-flex; align-items: center; gap: 4px; height: 30px; padding: 0 12px; border: 1px solid var(--line); border-radius: 999px; background: var(--bg); color: var(--fg2); font: inherit; font-size: 13px; cursor: pointer; }
.room-notice.folded .room-notice-pill svg { color: var(--brand); }
.link-btn.small { font-size: 13px; }
.room-sec-head { margin-top: 22px; }
.room-sec-head h2 { margin: 0; }
.room-notice-card { background: var(--bg2); border-radius: 12px; padding: 12px 14px; margin-top: 8px; display: flex; flex-direction: column; gap: 6px; }
.room-notice-full { margin: 0; white-space: pre-wrap; word-break: break-word; font-size: 14px; }

/* ---------- 투표 ---------- */
.poll { width: min(300px, 70vw); background: var(--bg); border: 1px solid var(--line); border-radius: 16px; padding: 14px; display: flex; flex-direction: column; gap: 10px; }
.poll-kicker { display: flex; align-items: center; gap: 5px; font-size: 12px; color: var(--muted); }
.poll-kicker svg { color: var(--brand); }
.poll-q { font-weight: 700; font-size: 15px; word-break: break-word; }
.poll-opts { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
label.poll-opt, .poll-opt { flex-direction: row; text-align: left; font-weight: 400; color: var(--fg); }
.poll-opt { position: relative; display: flex; align-items: center; gap: 8px; min-height: 40px; padding: 8px 12px; border: 1px solid var(--line); border-radius: 10px; overflow: hidden; font-size: 14px; cursor: pointer; isolation: isolate; }
.poll-opt input { margin: 0; accent-color: var(--brand); flex: 0 0 auto; }
.poll-opt:has(input:checked) { border-color: var(--brand); }
.poll-bar { position: absolute; inset: 0 auto 0 0; background: var(--brand-weak); z-index: -1; transition: width .25s; }
.poll-label { flex: 1; min-width: 0; word-break: break-word; }
.poll-count { color: var(--fg2); font-size: 13px; font-variant-numeric: tabular-nums; }
.poll.closed .poll-opt { cursor: default; }
.poll.closed .poll-opt.top { border-color: var(--brand); font-weight: 700; }
.poll.closed .poll-opt.top .poll-count { color: var(--brand-text); }
.poll-foot { display: flex; align-items: center; gap: 4px; font-size: 12px; color: var(--muted); flex-wrap: wrap; }
.poll-close { display: none; margin-left: auto; }
.poll-close.own { display: inline; }
.fsec-sub { font-size: 13px; color: var(--fg2); font-weight: 500; margin: 14px 0 8px; }
.poll-inputs { display: flex; flex-direction: column; gap: 8px; margin-bottom: 8px; }

/* ---------- 사진 모아보기 ---------- */
.photo-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 3px; margin-top: 12px; }
@media (min-width: 600px) { .photo-grid { grid-template-columns: repeat(4, 1fr); } }
.photo-grid-mini { grid-template-columns: repeat(6, 1fr); margin-top: 8px; }
@media (max-width: 599px) { .photo-grid-mini { grid-template-columns: repeat(3, 1fr); } }
.photo-cell { display: block; aspect-ratio: 1; max-width: 100%; overflow: hidden; border-radius: 6px; background: var(--bg3); }
.photo-cell img { width: 100%; height: 100%; object-fit: cover; display: block; }
.photo-more { grid-column: 1 / -1; display: flex; justify-content: center; padding: 16px; }

/* ---------- 사이트 공지사항 ---------- */
.notice-banner { display: flex; align-items: center; gap: 4px; margin: 12px 0 4px; padding: 0 6px 0 14px; background: var(--brand-weak); border-radius: 12px; }
.notice-banner-link { flex: 1; min-width: 0; display: flex; align-items: center; gap: 8px; padding: 11px 0; color: var(--brand-text); font-size: 14px; }
.notice-banner-k { font-weight: 700; flex: 0 0 auto; }
.notice-banner-t { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--fg); }
.notice-banner .icon-btn { color: var(--muted); }
.notice-list { list-style: none; margin: 8px -20px 0; padding: 0; }
@media (min-width: 900px) { .notice-list { margin: 8px 0 0; } }
.notice-row { display: flex; flex-direction: column; gap: 4px; padding: 14px 20px; border-bottom: 1px solid var(--line2); }
@media (min-width: 900px) { .notice-row { padding: 14px 8px; } }
.notice-row-title { font-weight: 600; display: flex; align-items: center; gap: 6px; }
.notice-title { font-size: 20px; margin: 4px 0 4px; }
.notice-date { margin: 0 0 16px; }
.adm-checks { display: flex; gap: 18px; flex-wrap: wrap; }

/* ---------- 진행 중인 투표 띠 · 투표 모아보기 ---------- */
.room-polls { margin: 6px 12px 0; }
.room-polls-main { display: flex; align-items: center; gap: 8px; padding: 9px 12px 9px 14px; border-radius: 12px; background: var(--brand-weak); color: var(--brand-text); font-size: 13px; }
.room-polls-main > svg { flex: 0 0 auto; }
.room-polls-text { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--fg); font-weight: 600; }
.room-polls-meta { flex: 0 0 auto; color: var(--fg2); }
.room-polls-dot { flex: 0 0 auto; padding: 2px 7px; border-radius: 999px; background: var(--brand); color: var(--brand-fg); font-size: 11px; font-weight: 700; }
.room-polls-caret { display: inline-flex; color: var(--muted); }
.poll-stack { display: flex; flex-direction: column; gap: 10px; margin-top: 10px; }
.poll-stack .poll { width: 100%; }
.poll-all-link { margin: 14px 0 22px; }
.room-poll-summary { display: flex; align-items: center; gap: 8px; margin-top: 8px; padding: 12px 14px; border-radius: 12px; background: var(--bg2); font-size: 14px; }
.room-poll-summary > svg { color: var(--brand); }
.room-poll-summary-caret { margin-left: auto; display: inline-flex; }
.adm-menu-switch { list-style: none; border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; margin-bottom: 18px; }

/* ---------- 이전 대화 · 대화 검색 ---------- */
.msg-more { display: flex; justify-content: center; padding: 8px 0; min-height: 36px; }
.history-bar { display: flex; align-items: center; justify-content: center; gap: 4px; margin: 0 12px 8px; padding: 9px 14px; border-radius: 999px; background: var(--fg); color: var(--bg); font-size: 13px; font-weight: 600; box-shadow: 0 6px 18px rgba(0,0,0,.15); align-self: center; }
.history-bar-new { display: none; color: var(--brand-weak); }
.history-bar.has-new .history-bar-new { display: inline; }
@keyframes msg-flash { 0%, 60% { box-shadow: 0 0 0 3px var(--brand); } 100% { box-shadow: 0 0 0 3px transparent; } }
.msg.flash .bubble, .msg.flash .poll { animation: msg-flash 2.4s ease-out; }
.msg-search-box { margin-bottom: 8px; }
.msg-results { min-height: 120px; }
.msg-results-hint { padding: 16px 4px; }
.msg-result-list { list-style: none; margin: 0; padding: 0; }
.msg-result { display: flex; gap: 10px; align-items: flex-start; padding: 12px 4px; border-bottom: 1px solid var(--line2); }
.msg-result:hover { background: var(--bg2); }
.msg-result-main { flex: 1; min-width: 0; }
.msg-result-top { display: flex; justify-content: space-between; gap: 8px; }
.msg-result-who { font-size: 13px; font-weight: 600; }
.msg-result-body { font-size: 14px; color: var(--fg2); word-break: break-word; margin-top: 2px; }
.msg-result-body mark { background: var(--brand-weak); color: var(--brand-text); border-radius: 3px; padding: 0 1px; }

/* ---------- 채팅 + 메뉴 · 역할 · 공지 목록 ---------- */
.chat-plus svg { transition: transform .15s; }
.chat-plus.on svg { transform: rotate(45deg); }
.chat-plus-menu { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; padding: 14px 16px 6px; background: var(--bg); border-top: 1px solid var(--line2); }
.chat-plus-menu[hidden] { display: none; }
@media (min-width: 600px) { .chat-plus-menu { grid-template-columns: repeat(6, 1fr); } }
.plus-item { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 6px 0; font-size: 12px; color: var(--fg2); cursor: pointer; border-radius: 12px; }
label.plus-item { flex-direction: column; font-weight: 400; }
.plus-item:hover { background: var(--bg2); }
.plus-icon { display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: 16px; background: var(--bg3); color: var(--fg); }
.role-chip.owner { background: var(--brand); color: var(--brand-fg); }
.role-chip.manager { background: var(--brand-weak); color: var(--brand-text); }
.notice-new-btn { margin-bottom: 12px; }
.room-notice-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.room-notice-item { background: var(--bg2); border-radius: 12px; padding: 12px 14px; display: flex; flex-direction: column; gap: 8px; align-items: flex-start; }
.room-notice-item .row-between { width: 100%; }
.room-notice-item.current { border: 1px solid var(--brand); background: var(--bg); }
.link-btn.danger { color: var(--danger); }

/* ---------- 채팅 종류 ---------- */
.chat-cats { display: flex; gap: 6px; margin: 4px 0 8px; flex-wrap: wrap; }
.chat-cat { position: relative; height: 32px; padding: 0 14px; border-radius: 999px; border: 1px solid var(--line); background: var(--bg); color: var(--fg2); font: inherit; font-size: 13px; font-weight: 600; cursor: pointer; }
.chat-cat.on { background: var(--fg); border-color: var(--fg); color: var(--bg); }
.chat-cat-dot { position: absolute; top: 4px; right: 6px; width: 6px; height: 6px; border-radius: 50%; background: var(--danger); }
.chat-kind { display: inline-block; margin-right: 4px; padding: 1px 6px; border-radius: 6px; font-size: 11px; font-weight: 700; vertical-align: 1px; background: var(--brand-weak); color: var(--brand-text); }
.chat-kind.study { background: var(--bg3); color: var(--fg2); }
.chat-panel .chat-cats { padding: 0 8px; }
.chat-cat-empty { padding: 12px 8px; }

/* ---------- 개인톡 ---------- */
.chat-kind.dm { background: var(--bg3); color: var(--fg); }
.dm-requests-row .dm-req-icon { background: var(--brand-weak); color: var(--brand-text); display: inline-flex; align-items: center; justify-content: center; }
.dm-hint { margin: 0 12px 6px; padding: 8px 12px; border-radius: 10px; background: var(--bg2); color: var(--fg2); font-size: 12px; text-align: center; }
.dm-request-bar { padding: 12px 16px calc(12px + var(--safe-b)); border-top: 1px solid var(--line2); background: var(--bg); display: flex; flex-direction: column; gap: 10px; }
.dm-request-bar p { margin: 0; font-size: 14px; color: var(--fg2); }
.dm-request-acts { display: flex; gap: 6px; justify-content: flex-end; }
.dm-req { display: flex; flex-direction: column; gap: 6px; padding-bottom: 10px; border-bottom: 1px solid var(--line2); }

/* ---------- 취준 카드 · 가리기 ---------- */
.card-sch, .card-study { width: min(280px, 70vw); background: var(--bg); border: 1px solid var(--line); border-radius: 16px; padding: 14px; display: flex; flex-direction: column; gap: 8px; }
.card-sch-title { font-weight: 700; font-size: 15px; word-break: break-word; }
.card-sch-day { display: flex; align-items: center; gap: 8px; font-size: 14px; color: var(--fg); font-variant-numeric: tabular-nums; }
.card-sch-note { font-size: 13px; color: var(--fg2); word-break: break-word; }
.card-sch-foot { display: flex; flex-direction: column; gap: 8px; padding-top: 4px; border-top: 1px solid var(--line2); }
.card-sch-btn { width: 100%; }
.card-study-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.kick-form { display: flex; flex-direction: column; gap: 4px; padding-top: 4px; border-top: 1px solid var(--line2); }
.small-check { font-size: 12px; }
.study-pick-list { list-style: none; margin: 0 0 12px; padding: 0; }
.study-pick { display: flex; align-items: center; gap: 10px; padding: 12px 0; border-bottom: 1px solid var(--line2); }
.study-pick-main { flex: 1; min-width: 0; }
.study-pick-title { font-weight: 600; display: flex; gap: 6px; align-items: center; }
.study-new-from-room { margin: 16px 0 22px; padding-bottom: env(safe-area-inset-bottom, 0px); }
.study-share-btn { flex: 0 0 auto; }

/* ---------- 채팅방 안 검색 ---------- */
.chat-search { display: flex; align-items: center; gap: 4px; padding: 8px 12px; border-bottom: 1px solid var(--line2); background: var(--bg); }
.chat-search[hidden] { display: none; }
.chat-search-box { flex: 1; min-width: 0; margin: 0; height: 38px; }
.chat-search-count { font-size: 12px; color: var(--muted); min-width: 44px; text-align: center; font-variant-numeric: tabular-nums; }
.chat-search-up svg { transform: rotate(-90deg); }
.chat-search-down svg { transform: rotate(90deg); }
.chat-search .icon-btn:disabled { opacity: .35; cursor: default; }
.msg.search-hit .bubble { box-shadow: 0 0 0 2px var(--brand); }
mark.search-mark { background: #ffe066; color: #191f28; border-radius: 3px; padding: 0 1px; }
/* PC 왼쪽 채팅 목록 칸(300px)에서는 종류 버튼을 한 줄로 */
.chat-panel .chat-cats { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; gap: 4px; }
.chat-panel .chat-cats::-webkit-scrollbar { display: none; }
.chat-panel .chat-cat { flex: 0 0 auto; height: 30px; padding: 0 10px; font-size: 12px; }
/* 아래 고정 버튼(sform-submit)이 없는 시트: 마지막 요소가 시트 바닥에 붙지 않게 */
.sheet-body > :last-child:not(form) { margin-bottom: calc(22px + env(safe-area-inset-bottom, 0px)); }

/* 위에서 읽는 중 새 메시지가 오면 아래에 뜨는 알림 */
.new-msg-pill { position: relative; align-self: center; margin: -44px auto 8px; z-index: 3; height: 34px; padding: 0 14px; border: 0; border-radius: 999px; background: var(--brand); color: var(--brand-fg); font: inherit; font-size: 13px; font-weight: 600; box-shadow: 0 6px 18px rgba(0,0,0,.18); cursor: pointer; }
.new-msg-pill[hidden] { display: none; }
/* 화면에서 감추되 키보드로는 고를 수 있는 파일 입력 */
.vh { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
label:focus-within > .plus-icon, label.avatar-pick-btn:focus-within { outline: 2px solid var(--brand); outline-offset: 2px; }
.chat-offline { margin: 0 12px 6px; padding: 7px 12px; border-radius: 10px; background: var(--danger-weak); color: var(--danger); font-size: 12px; text-align: center; }
.chat-offline[hidden] { display: none; }

/* ---------- 답장 ---------- */
.reply-bar { display: flex; align-items: center; gap: 10px; padding: 10px 8px 10px 14px; border-top: 1px solid var(--line); background: var(--bg); }
.reply-bar[hidden] { display: none; }
.reply-bar-ico { flex: none; display: inline-flex; color: var(--brand); }
.reply-bar-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.reply-bar-who { font-size: 13px; font-weight: 700; color: var(--brand-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.reply-bar-text { font-size: 13px; color: var(--fg2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.reply-bar-thumb { flex: none; width: 38px; height: 38px; border-radius: 8px; object-fit: cover; background: var(--bg3); }
.reply-bar-thumb[hidden] { display: none; }
.chat-pin { display: inline-flex; vertical-align: -2px; margin-right: 3px; color: var(--brand); }

/* ---------- 사진 뷰어 ---------- */
.viewer { position: fixed; inset: 0; z-index: 100; display: flex; align-items: center; justify-content: center; background: rgba(0,0,0,.92); padding: env(safe-area-inset-top, 0px) env(safe-area-inset-right, 0px) env(safe-area-inset-bottom, 0px) env(safe-area-inset-left, 0px); }
.viewer[hidden] { display: none; }
.viewer img { max-width: 100%; max-height: calc(100% - 96px); object-fit: contain; user-select: none; }
.viewer button { position: absolute; border: 0; background: rgba(255,255,255,.12); color: #fff; cursor: pointer; border-radius: 999px; font-size: 26px; line-height: 1; }
.viewer button[hidden] { display: none; }
.viewer-close { top: calc(14px + env(safe-area-inset-top, 0px)); right: 14px; width: 40px; height: 40px; }
.viewer-prev, .viewer-next { top: 50%; transform: translateY(-50%); width: 44px; height: 44px; }
.viewer-prev { left: 12px; }
.viewer-next { right: 12px; }
.viewer-bar { position: absolute; bottom: calc(16px + env(safe-area-inset-bottom, 0px)); left: 0; right: 0; display: flex; justify-content: center; gap: 14px; color: #fff; font-size: 13px; }
.viewer-orig { color: #fff; text-decoration: underline; }
body.viewer-open { overflow: hidden; }

/* ---------- 채팅 파일 ---------- */
.file-card { display: flex; align-items: center; gap: 10px; width: min(280px, 70vw); padding: 12px; border: 1px solid var(--line); border-radius: 14px; background: var(--bg); }
.file-card-icon { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 10px; background: var(--brand-weak); color: var(--brand-text); }
.file-card-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.file-card-name { font-size: 14px; font-weight: 600; word-break: break-all; }
.read-1 { align-self: flex-end; font-size: 11px; font-weight: 700; color: #f5a623; margin-bottom: 1px; }

/* ---------- 링크 ---------- */
.bubble-link { color: inherit; text-decoration: underline; word-break: break-all; }
.link-slot:empty { display: none; }
.link-card { display: flex; flex-direction: column; gap: 3px; width: min(280px, 70vw); margin-top: 4px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--bg); color: var(--fg); }
.link-card:hover { background: var(--bg2); }
.link-card-site { font-size: 11px; color: var(--muted); }
.link-card-title { font-size: 14px; font-weight: 600; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.link-card-desc { font-size: 12px; color: var(--fg2); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

/* ---------- 알림 설정 · 멘션 ---------- */
.push-setting { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 0; border-bottom: 1px solid var(--line2); }
.push-setting[hidden] { display: none; }
.push-setting-title { font-size: 15px; font-weight: 600; }
.switch { position: relative; flex: 0 0 auto; width: 48px; height: 28px; border: 0; border-radius: 999px; background: var(--line); cursor: pointer; transition: background .15s; }
.switch span { position: absolute; top: 3px; left: 3px; width: 22px; height: 22px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.2); transition: transform .15s; }
.switch[aria-checked="true"] { background: var(--brand); }
.switch[aria-checked="true"] span { transform: translateX(20px); }
.switch:disabled { opacity: .5; cursor: default; }
.chat-pin.muted { color: var(--muted); }
.mention-pop { position: absolute; left: 12px; right: 12px; bottom: calc(100% + 4px); z-index: 5; list-style: none; margin: 0; padding: 4px; background: var(--bg); border: 1px solid var(--line); border-radius: 12px; box-shadow: 0 8px 24px rgba(0,0,0,.12); max-height: 220px; overflow-y: auto; }
.mention-pop li { padding: 8px 10px; border-radius: 8px; font-size: 14px; cursor: pointer; }
.mention-pop li.on, .mention-pop li:hover { background: var(--bg2); }
.chat-input { position: relative; }

/* ---------- 답장 인용(말풍선 안) · 메시지 메뉴(길게 누르기 / 오른쪽 클릭) ---------- */
.msg-quote { display: flex; flex-direction: column; gap: 4px; width: 100%; min-width: 0; margin: 0 0 6px; padding: 0; border: 0; background: none; color: inherit; font: inherit; text-align: left; cursor: pointer; white-space: normal; }
.bubble:has(> .msg-quote) { white-space: normal; } /* 인용 뒤 템플릿 공백이 들여쓰기로 보이지 않게 */
.msg-quote-who { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 600; opacity: .75; }
.msg-quote-box { display: flex; align-items: center; gap: 8px; min-width: 0; padding: 6px 10px 6px 8px; border-left: 3px solid var(--brand); border-radius: 6px 10px 10px 6px; background: rgba(128,128,128,.13); }
.msg.mine .msg-quote-box { border-left-color: rgba(255,255,255,.75); background: rgba(255,255,255,.18); }
.msg-quote-thumb { flex: none; width: 34px; height: 34px; border-radius: 6px; object-fit: cover; }
.msg-quote-text { display: block; min-width: 0; max-width: 220px; font-size: 13px; opacity: .8; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.msg-quote:hover .msg-quote-box { background: rgba(128,128,128,.2); }
.msg.mine .msg-quote:hover .msg-quote-box { background: rgba(255,255,255,.24); }
.msg.open .bubble, .msg.open .bubble.img img, .msg.open .poll, .msg.open .file-card { filter: brightness(.93); }
.msg .bubble, .msg .bubble.img img, .msg .poll, .msg .file-card { -webkit-touch-callout: none; }
@media (pointer: coarse) { #messages .msg { -webkit-user-select: none; user-select: none; } }
.msg-menu[hidden], .msg-menu-dim[hidden] { display: none; }
.msg-menu-dim { position: fixed; inset: 0; z-index: 60; background: transparent; }
.msg-menu.live { position: fixed; z-index: 61; min-width: 190px; padding: 6px; background: var(--bg); border: 1px solid var(--line); border-radius: 14px; box-shadow: 0 12px 32px rgba(0,0,0,.16); }
.mm-rx { display: flex; justify-content: space-between; gap: 2px; padding: 2px 2px 6px; margin-bottom: 4px; border-bottom: 1px solid var(--line2); }
.mm-rx button { border: 0; background: none; font-size: 22px; line-height: 1; padding: 6px; border-radius: 999px; cursor: pointer; }
.mm-rx button:hover { background: var(--bg2); }
.mm-list { display: flex; flex-direction: column; }
.mm-item { display: block; width: 100%; padding: 8px 12px; border: 0; border-radius: 8px; background: none; color: var(--fg); font: inherit; font-size: 14px; text-align: left; text-decoration: none; cursor: pointer; }
.mm-item:hover { background: var(--bg2); }
.mm-item.danger { color: var(--danger); }
.msg-menu.live.as-sheet { left: 0; right: 0; bottom: 0; top: auto; min-width: 0; padding: 12px 12px calc(12px + var(--safe-b)); border: 0; border-radius: 18px 18px 0 0; box-shadow: 0 -8px 30px rgba(0,0,0,.18); animation: mm-up .16s ease-out; }
.msg-menu.live.as-sheet .mm-rx { justify-content: space-around; padding: 4px 0 12px; margin-bottom: 6px; }
.msg-menu.live.as-sheet .mm-rx button { font-size: 28px; padding: 8px; }
.msg-menu.live.as-sheet .mm-item { padding: 14px 12px; font-size: 16px; }
.msg-menu-dim:has(+ .msg-menu.as-sheet) { background: rgba(0,0,0,.35); }
@keyframes mm-up { from { transform: translateY(100%); } to { transform: none; } }

/* ---------- 테스트 계정으로 보는 중 (관리자 전환) ---------- */
.acting-bar { position: fixed; z-index: 90; left: 50%; transform: translateX(-50%); top: calc(env(safe-area-inset-top, 0px) + 60px); display: flex; align-items: center; gap: 10px; margin: 0; padding: 6px 6px 6px 14px; border-radius: 999px; background: #17171c; color: #fff; font-size: 13px; white-space: nowrap; box-shadow: 0 6px 20px rgba(0,0,0,.25); }
.acting-back { border: 0; border-radius: 999px; padding: 6px 12px; background: var(--brand); color: #fff; font: inherit; font-size: 13px; font-weight: 600; cursor: pointer; }
@media (min-width: 900px) { .acting-bar { top: auto; bottom: 20px; left: 20px; transform: none; } }
.adm-test-new { display: flex; gap: 8px; max-width: 420px; margin: 4px 0 18px; }
.adm-test-new .input { flex: 1; min-width: 0; }
.social-btn { position: relative; }
.social-btn-ico { position: absolute; left: 16px; top: 50%; transform: translateY(-50%); display: inline-flex; }
.social-btn-ico svg { width: 20px; height: 20px; }

/* ---------- @멘션 (카카오톡처럼) ---------- */
.mention { color: var(--brand); font-weight: 700; }
.msg.mine .mention { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
.msg.mentions-me .bubble { box-shadow: 0 0 0 2px var(--brand) inset; }

/* ---------- 연속 메시지 묶기 · 읽은 곳 선 ---------- */
.msg.cont .who { display: none; }
.msg.cont { margin-top: -4px; }
.msg.cont .bubble { border-top-left-radius: 18px; }
.msg.mine.cont .bubble { border-top-right-radius: 18px; }
.msg.t-hide .when { display: none; }
.unread-line { display: flex; align-items: center; gap: 10px; margin: 10px 0; color: var(--brand); font-size: 12px; font-weight: 600; }
.unread-line::before, .unread-line::after { content: ""; flex: 1; height: 1px; background: var(--brand); opacity: .35; }

/* ---------- 입장·퇴장 안내 · 긴 메시지 · 보내는 중 · 올리는 중 ---------- */
.msg-sys { align-self: center; max-width: 90%; }
.msg-sys span { display: inline-block; padding: 4px 12px; border-radius: 999px; background: var(--bg2); color: var(--muted); font-size: 12px; }
.bubble.long:not(.expanded) .bubble-text { display: -webkit-box; -webkit-line-clamp: 12; -webkit-box-orient: vertical; overflow: hidden; }
.bubble-more { display: block; margin-top: 6px; padding: 0; border: 0; background: none; color: inherit; font: inherit; font-size: 13px; font-weight: 600; opacity: .75; cursor: pointer; }
.msg.pending .bubble { opacity: .6; }
.msg.pending.failed .bubble { opacity: 1; box-shadow: 0 0 0 1px var(--danger) inset; }
.pending-state { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.pending-warn { color: var(--danger); font-weight: 600; }
.pending-btn { padding: 2px 8px; border: 1px solid var(--line); border-radius: 999px; background: var(--bg); color: var(--fg); font: inherit; font-size: 11px; cursor: pointer; }
.upload-card { align-self: flex-end; display: flex; flex-direction: column; gap: 6px; min-width: 180px; padding: 10px 12px; border-radius: 14px; background: var(--bg2); color: var(--fg2); font-size: 13px; }
.upload-bar { display: block; height: 4px; border-radius: 2px; background: var(--line); overflow: hidden; }
.upload-bar span { display: block; height: 100%; width: 0; background: var(--brand); transition: width .15s; }

/* ---------- 연결된 계정 ---------- */
.acct-list { list-style: none; margin: 8px 0 0; padding: 0; }
.acct-row { display: flex; align-items: center; gap: 12px; padding: 14px 0; border-bottom: 1px solid var(--line2); }
.acct-ico { flex: 0 0 40px; width: 40px; height: 40px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--line); background: #fff; }
.acct-ico svg { width: 20px; height: 20px; }
.acct-ico.s-naver { background: #03C75A; border-color: #03C75A; }
.acct-ico.s-kakao { background: #FEE500; border-color: #FEE500; }
.acct-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.acct-name { font-size: 15px; font-weight: 600; }
.acct-state { font-size: 13px; color: var(--muted); }
.acct-state.on { color: var(--brand); }
.acct-row form { margin: 0; }

/* ---------- 사진 묶음 (여러 장을 한 번에) ---------- */
.msg.album-member { display: none; }
.msg.album-lead > .bubble-row > a.bubble.img { display: none; }
.msg.album-lead > .bubble-row { min-height: 0; }
.album-grid { display: grid; gap: 3px; width: min(260px, 70vw); border-radius: 14px; overflow: hidden; }
.album-grid.n2 { grid-template-columns: 1fr 1fr; }
.album-grid.n3, .album-grid.n4 { grid-template-columns: 1fr 1fr; }
.album-grid.n3 .album-cell:first-child { grid-column: 1 / -1; }
.album-grid.many { grid-template-columns: repeat(3, 1fr); }
.album-cell { display: block; aspect-ratio: 1; background: var(--bg3); line-height: 0; }
.album-grid.n3 .album-cell:first-child { aspect-ratio: 2 / 1; }
.album-cell img { width: 100%; height: 100%; object-fit: cover; display: block; }
.msg.mine .album-grid { margin-left: auto; }

/* 내 정보: 프로필 줄을 누르면 바로 수정 */
.profile-link { color: inherit; text-decoration: none; border-radius: 14px; padding: 10px 8px; margin: 0 -8px 12px; }
.profile-link:hover { background: var(--bg2); }
.profile-main { flex: 1; min-width: 0; }
.profile-go { color: var(--muted); display: inline-flex; }

/* 휴대폰: 채팅·기록·일정·내 정보 탭은 공통 앱바 없이 화면 제목이 머리 */
@media (max-width: 899px) {
  body.no-appbar { --appbar-h: 0px; padding-top: env(safe-area-inset-top, 0px); }
  body.no-appbar .appbar { display: none; }
  body.no-appbar .page-title { padding-top: 16px; }
  body.no-appbar .page-title h1 { font-size: 24px; }
}
.theme-row-ico { display: inline-flex; color: var(--muted); }
.page-title + .seg { margin-top: 0; margin-bottom: 14px; }

/* ---------- 관리자: 오류 ---------- */
.adm-err-row { display: flex; align-items: center; gap: 12px; padding: 12px 8px; border-radius: 10px; color: inherit; }
.adm-err-row:hover { background: var(--bg2); }
.adm-err-row.new .adm-user-name { font-weight: 700; }
.adm-err-row.new .adm-user-name::after { content: ""; display: inline-block; width: 7px; height: 7px; margin-left: 6px; border-radius: 50%; background: var(--danger); vertical-align: middle; }
.adm-err-msg { display: block; word-break: break-all; }
.chip.err-panic, .chip.err-server { background: rgba(240, 68, 82, .12); color: var(--danger); }
.adm-err-detail { display: grid; grid-template-columns: 80px 1fr; gap: 8px 12px; margin: 16px 0; font-size: 14px; }
.adm-err-detail dt { color: var(--muted); }
.adm-err-detail dd { margin: 0; word-break: break-all; }
.adm-err-pre { white-space: pre-wrap; word-break: break-all; background: var(--bg2); border-radius: 10px; padding: 12px 14px; font-size: 12px; line-height: 1.5; max-height: 420px; overflow: auto; }
.alert-group { margin-top: 24px; }
.alert-list { list-style: none; margin: 8px 0 0; padding: 0; }
.chat-at { display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; margin-right: 4px; padding: 0 4px; border-radius: 9px; background: var(--brand); color: #fff; font-size: 11px; font-weight: 800; vertical-align: 1px; }

/* ---------- 오프라인: 화면을 흐리게 + 위 띠 ---------- */
body.offline .screen, body.offline .chat-col, body.offline .rail, body.offline .sidenav { filter: grayscale(1); opacity: .55; transition: opacity .2s, filter .2s; }
.offline-bar { position: fixed; z-index: 100; left: 50%; top: calc(env(safe-area-inset-top, 0px) + 10px); transform: translateX(-50%); padding: 8px 16px; border-radius: 999px; background: #17171c; color: #fff; font-size: 13px; font-weight: 600; box-shadow: 0 6px 20px rgba(0,0,0,.25); white-space: nowrap; }
.offline-bar[hidden] { display: none; }

/* PC: 말풍선에 마우스를 올리면 "공감·더보기" 버튼 (휴대폰은 길게 누르기라 숨긴다) */
.msg-more, .msg-reply-btn { display: none; flex: 0 0 auto; width: 28px; height: 28px; border: 0; border-radius: 50%; background: var(--bg2); color: var(--muted); align-items: center; justify-content: center; cursor: pointer; align-self: center; }
.msg-more:hover, .msg-reply-btn:hover { color: var(--fg); background: var(--line); }
@media (hover: hover) and (pointer: fine) {
  .msg:hover .msg-more, .msg.open .msg-more, .msg-more:focus-visible,
  .msg:hover .msg-reply-btn, .msg-reply-btn:focus-visible { display: inline-flex; }
}
.msg.album-lead .msg-more, .msg.album-lead .msg-reply-btn { display: none !important; }

/* ---------- 앱 인트로(설치한 앱의 첫 화면) ---------- */
.intro-body { margin: 0; min-height: 100dvh; background: var(--bg); color: var(--fg); }
.intro { min-height: 100dvh; max-width: 420px; margin: 0 auto; display: flex; flex-direction: column; justify-content: center; padding: calc(env(safe-area-inset-top, 0px) + 20px) 24px calc(env(safe-area-inset-bottom, 0px) + 24px); }
.intro-brand { display: flex; align-items: center; justify-content: center; gap: 8px; color: var(--brand); }
.intro-name { margin: 0; font-size: 20px; font-weight: 800; letter-spacing: -0.03em; color: var(--fg); }
.intro-tour { display: flex; flex-direction: column; margin: 36px -24px 40px; }
.intro-slides { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.intro-slides::-webkit-scrollbar { display: none; }
.intro-slide { flex: 0 0 100%; scroll-snap-align: center; display: flex; flex-direction: column; align-items: center; text-align: center; padding: 0 24px; box-sizing: border-box; }
.intro-slide h2 { margin: 24px 0 6px; font-size: 22px; font-weight: 700; letter-spacing: -0.02em; }
.intro-slide p { margin: 0; color: var(--muted); font-size: 15px; }
.intro-dots { display: flex; justify-content: center; gap: 6px; margin-top: 18px; }
.intro-dots i { width: 6px; height: 6px; border-radius: 3px; background: var(--line); transition: width .2s, background .2s; }
.intro-dots i.on { width: 18px; background: var(--brand); }
/* 소개 그림: 도형만으로 그린 화면 미리보기 */
.ill { width: min(280px, 76vw); height: min(230px, 30vh); box-sizing: border-box; padding: 16px; border-radius: 20px; background: var(--bg2); display: flex; flex-direction: column; gap: 10px; justify-content: center; overflow: hidden; }
.ill i { display: block; height: 7px; border-radius: 4px; background: var(--line); }
.ill-card, .ill-row { display: flex; align-items: center; gap: 10px; background: var(--bg); border-radius: 12px; padding: 10px 12px; }
.ill-av, .ill-co { flex: none; width: 26px; height: 26px; border-radius: 50%; background: var(--brand-weak); }
.ill-co { border-radius: 8px; }
.ill-lines { flex: 1; display: flex; flex-direction: column; gap: 6px; }
.ill-lines i:first-child { width: 80%; background: var(--fg2); opacity: .35; }
.ill-lines i:last-child { width: 55%; }
.ill-meta { display: flex; gap: 4px; }
.ill-meta i { width: 14px; }
.ill-meta i:first-child { background: var(--brand); opacity: .6; }
.ill-chat { gap: 8px; }
.ill-chat .b { display: block; height: 22px; border-radius: 12px; background: var(--bg); }
.ill-chat .l { align-self: flex-start; border-top-left-radius: 4px; }
.ill-chat .r { align-self: flex-end; border-top-right-radius: 4px; background: var(--bubble-mine); }
.ill-chat .w1 { width: 55%; } .ill-chat .w2 { width: 40%; } .ill-chat .w3 { width: 62%; } .ill-chat .w4 { width: 70%; height: 34px; }
.ill-pill { flex: none; width: 34px; height: 16px; border-radius: 8px; }
.ill-pill.s1 { background: var(--brand); } .ill-pill.s2 { background: var(--brand-weak); } .ill-pill.s3 { background: #00c471; opacity: .8; } .ill-pill.s4 { background: var(--line); }
@media (max-height: 600px) { .ill { height: 150px; } .intro-slide h2 { margin-top: 16px; } }
.intro-actions .social { margin-top: 0; }

/* 밀어서 답장 */
#messages .msg { touch-action: pan-y; }
.msg.swiping { position: relative; will-change: transform; }
.msg.swipe-back { transition: transform .2s ease; }
.swipe-reply { position: absolute; left: -40px; top: 50%; width: 30px; height: 30px; margin-top: -15px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--bg3); color: var(--muted); opacity: 0; transition: background .15s, color .15s, transform .15s; }
.swipe-reply.ready { background: var(--brand); color: #fff; transform: scale(1.1); }
.msg.mine .swipe-reply { left: auto; right: calc(100% + 10px); }

#reply-bar:not([hidden]) ~ .chat-input { border-top-color: transparent; }

/* 관리자: 신고 상세 */
.adm-rp-open { display: inline-flex; align-items: center; gap: 6px; color: inherit; }
.adm-rp-open:hover strong { text-decoration: underline; }
.adm-rp-reason { font-size: 17px; }
.adm-rp-state { font-size: 12px; font-weight: 600; padding: 3px 9px; border-radius: 999px; background: var(--bg3); color: var(--fg2); }
.adm-rp-state.st-gone { background: var(--danger-weak); color: var(--danger); }
.adm-rp-state.st-edited, .adm-rp-state.st-hidden { background: var(--brand-weak); color: var(--brand-text); }
.adm-rp-detail { white-space: pre-wrap; word-break: break-word; }
.adm-rp-h { font-size: 15px; margin: 22px 0 8px; }
.adm-rp-text { margin: 0; white-space: pre-wrap; word-break: break-word; background: var(--bg2); border-radius: 10px; padding: 12px 14px; font: inherit; font-size: 14px; line-height: 1.6; max-height: 420px; overflow: auto; }
.adm-rp-photo img { display: block; max-width: 240px; max-height: 240px; border-radius: 10px; margin-bottom: 8px; }
.adm-chat { list-style: none; margin: 0; padding: 0; border: 1px solid var(--line); border-radius: 10px; overflow: hidden; }
.adm-chat li { display: grid; grid-template-columns: 64px 96px 1fr; gap: 8px; padding: 8px 12px; font-size: 13px; border-bottom: 1px solid var(--line2); }
.adm-chat li:last-child { border-bottom: 0; }
.adm-chat li.target { background: var(--danger-weak); }
.adm-chat li.sys { color: var(--muted); }
.adm-chat-when { color: var(--muted); }
.adm-chat-who { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.adm-chat-body { word-break: break-word; white-space: pre-wrap; }
.adm-chat-body img { max-width: 120px; max-height: 120px; border-radius: 6px; display: block; }
.adm-rp-actions { margin-top: 22px; }
@media (max-width: 600px) { .adm-chat li { grid-template-columns: 1fr; gap: 2px; } .adm-chat-when { order: 3; font-size: 11px; } }
/* 신고 종류: 한눈에 구분 */
.chip.rt-post { background: var(--brand-weak); color: var(--brand-text); }
.chip.rt-comment { background: #e5f8ef; color: #008a4f; }
.chip.rt-message { background: #f1ecff; color: #6a3fd1; }
.chip.rt-user { background: #fff3e0; color: #c2610a; }
.chip.rt-room { background: var(--bg3); color: var(--fg2); }
:root[data-theme="dark"] .chip.rt-comment { background: #173a2b; color: #5fd49c; }
:root[data-theme="dark"] .chip.rt-message { background: #2b2445; color: #b9a2ff; }
:root[data-theme="dark"] .chip.rt-user { background: #3d2a14; color: #ffb766; }
.adm-rp-where { margin: 0; }
.adm-rp-gone { margin: 0; color: var(--danger); }
/* 운영정책 위반으로 가림 */
.policy-banner { margin: 0 0 12px; padding: 10px 14px; border-radius: 10px; background: var(--danger-weak); color: var(--danger); font-size: 14px; }
.policy-note { margin-top: 4px; font-size: 12px; color: var(--danger); }
.policy-hidden { padding: 48px 16px; text-align: center; }
.adm-names h2 { font-size: 15px; margin: 18px 0 8px; }
.adm-name-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; font-size: 14px; }
.adm-name-old { color: var(--muted); text-decoration: line-through; }

/* 광고 자리: 높이를 미리 잡아 광고가 늦게 떠도 화면이 밀리지 않게 */
.ad-slot { position: relative; margin: 12px 0; min-height: 100px; }
.ad-slot .ad-label { display: block; font-size: 11px; color: var(--muted); margin: 0 0 4px 2px; }
.ad-slot.ad-post { min-height: 250px; margin: 8px 0 20px; }
.ad-slot.ad-rail { min-height: 250px; margin: 0; }
.ad-slot.ad-feed { margin: 0; padding: 12px 16px; border-bottom: 1px solid var(--line2); min-height: 120px; }
ins.adsbygoogle[data-ad-status="unfilled"] { display: none !important; }
.ad-slot:has(ins.adsbygoogle[data-ad-status="unfilled"]) { display: none; } /* 채울 광고가 없으면 자리도 숨긴다 */
/* 관리자: 광고 */
.adm-ads-help { margin: 0 0 16px; line-height: 1.6; }
.adm-ad-card { padding: 16px; border: 1px solid var(--line); border-radius: 12px; margin-bottom: 14px; }
.adm-ad-card h2 { margin: 0; font-size: 16px; }
.adm-ad-card .form { margin-top: 10px; }
.adm-ad-card .form .btn { align-self: flex-start; width: auto; padding: 0 22px; }
.adm-ad-on { background: var(--brand-weak); color: var(--brand-text); }
.form .adm-ad-toggle { display: flex; flex-direction: row; align-items: center; justify-content: flex-start; gap: 8px; font-weight: 600; text-align: left; }
.form .adm-ad-toggle input { width: 18px; height: 18px; margin: 0; }
.form .adm-ad-every { display: flex; flex-direction: row; align-items: center; justify-content: flex-start; gap: 8px; }
.form .adm-ad-every .input { width: 80px; text-align: center; }
.adm-ad-now { margin: 4px 0; }
.input.mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; }
.adm-rp-note { gap: 8px; }
.adm-rp-note .btn { align-self: flex-start; width: auto; padding: 0 18px; }
.adm-rp-history { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; font-size: 14px; }
.adm-rp-history li { display: flex; flex-wrap: wrap; gap: 4px 8px; align-items: baseline; padding-bottom: 8px; border-bottom: 1px solid var(--line2); }
.adm-rp-history-detail { flex-basis: 100%; color: var(--fg2); font-size: 13px; word-break: break-word; }
.adm-rp-memo { color: var(--fg2); }
.adm-rp-handled { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.adm-rp-handler strong { color: var(--fg); }
.chip.res-del { background: var(--danger-weak); color: var(--danger); }
.chip.res-hide { background: var(--brand-weak); color: var(--brand-text); }
.chip.res-unhide, .chip.res-none { background: var(--bg3); color: var(--fg2); }
.acct-only { flex: none; }

/* 문의하기 */
.inq-new { margin: 4px 0 8px; }
.inq-list { list-style: none; margin: 0; padding: 0; }
.inq-list > li { border-bottom: 1px solid var(--line2); }
.inq-row { display: flex; align-items: center; gap: 10px; padding: 14px 4px; color: inherit; }
.inq-row:hover { background: var(--bg2); }
.inq-row-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.inq-row-go { flex: none; color: var(--muted); display: inline-flex; }
.inq-row-who { font-size: 14px; }
.inq-row-answer { font-size: 13px; color: var(--fg2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.inq-row-answer strong { color: #008a4f; font-weight: 600; margin-right: 4px; }
:root[data-theme="dark"] .inq-row-answer strong { color: #5fd49c; }
.inq-row-top { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.inq-row-body { color: var(--fg); font-size: 15px; line-height: 1.45; overflow-wrap: anywhere; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.inq-status { flex: none; font-size: 12px; font-weight: 600; padding: 3px 9px; border-radius: 999px; background: var(--bg3); color: var(--fg2); white-space: nowrap; }
.inq-status.st-open { background: var(--brand-weak); color: var(--brand-text); }
.inq-status.st-answered { background: #e5f8ef; color: #008a4f; }
:root[data-theme="dark"] .inq-status.st-answered { background: #173a2b; color: #5fd49c; }
.inq-cats { margin-bottom: 2px; }
.inq-hints { list-style: none; margin: 0; padding: 0; }
.inq-hints li { display: none; }
.inq-hints li.on { display: block; }
.form .inq-files { display: flex; flex-direction: column; gap: 10px; align-items: flex-start; }
.inq-previews { display: flex; gap: 8px; flex-wrap: wrap; }
.inq-previews:empty { display: none; }
.inq-preview { position: relative; width: 76px; height: 76px; }
.inq-preview img { width: 100%; height: 100%; object-fit: cover; border-radius: 10px; display: block; background: var(--bg3); }
.inq-preview-del { position: absolute; top: -6px; right: -6px; width: 22px; height: 22px; border-radius: 50%; border: 0; background: var(--fg); color: var(--bg); font-size: 14px; line-height: 22px; text-align: center; padding: 0; cursor: pointer; }
.form .inq-add-photo { position: relative; display: inline-flex; flex-direction: row; align-items: center; gap: 6px; width: auto; cursor: pointer; }
.inq-add-photo.full { opacity: .45; pointer-events: none; }
.inq-file-input { position: absolute; width: 1px; height: 1px; opacity: 0; overflow: hidden; pointer-events: none; }
.inq-show .inq-row-top { margin-bottom: 12px; }
.inq-body { white-space: pre-wrap; overflow-wrap: anywhere; line-height: 1.65; margin: 0 0 12px; }
.inq-images { display: flex; gap: 8px; flex-wrap: wrap; margin: 4px 0 16px; }
.inq-images img { width: 96px; height: 96px; object-fit: cover; border-radius: 10px; background: var(--bg3); display: block; }
.inq-answer { margin-top: 16px; padding: 14px 16px; border-radius: 12px; background: var(--bg2); }
.inq-answer-head { display: flex; gap: 8px; align-items: baseline; margin-bottom: 8px; }
.adm-inq-cats { display: flex; flex-wrap: wrap; gap: 6px; margin: 12px 0; }
.adm-inq-cats .chip.on { background: var(--brand); color: #fff; }
.adm-inq-client { font-size: 12px; color: var(--fg2); word-break: break-all; }
.chip.inq-bug { background: var(--danger-weak); color: var(--danger); }
.chip.inq-appeal { background: #fff3e0; color: #c2610a; }
:root[data-theme="dark"] .chip.inq-appeal { background: #3d2a14; color: #ffb766; }
.adm-stat-link { color: inherit; display: block; border-radius: 12px; }
.adm-stat-link:hover .stat { background: var(--bg3); }

/* 알림 받기 안내: 앱은 아래 카드, 브라우저는 위쪽 띠 */
.push-ask { position: fixed; left: 50%; z-index: 90; width: min(440px, calc(100vw - 24px)); display: flex; align-items: center; gap: 10px; padding: 12px 12px 12px 14px; border-radius: 16px; background: var(--bg); border: 1px solid var(--line); box-shadow: 0 8px 28px rgba(0,0,0,.14); opacity: 0; transition: opacity .2s, transform .2s; }
.push-ask.show { opacity: 1; }
.push-ask.push-ask-card { bottom: calc(16px + var(--tabbar-h, 0px) + env(safe-area-inset-bottom, 0px)); transform: translate(-50%, 16px); flex-wrap: wrap; }
.push-ask.push-ask-card.show { transform: translate(-50%, 0); }
.push-ask.push-ask-bar { top: calc(var(--appbar-h, 56px) + env(safe-area-inset-top, 0px) + 8px); transform: translate(-50%, -12px); }
.push-ask.push-ask-bar.show { transform: translate(-50%, 0); }
.push-ask-ico { flex: none; width: 38px; height: 38px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--brand-weak); color: var(--brand); }
.push-ask-text { flex: 1; min-width: 0; font-size: 14px; line-height: 1.45; color: var(--fg); }
.push-ask-btns { flex: none; display: flex; gap: 6px; }
.push-ask.push-ask-card .push-ask-text { font-size: 15px; font-weight: 600; }
.push-ask.push-ask-card .push-ask-btns { width: 100%; justify-content: flex-end; }
@media (min-width: 900px) { .push-ask.push-ask-card { bottom: 24px; } }
