/* ── 디자인 토큰 · 오프화이트 + 블루 ───────────────────────
   배경은 옅은 회백색, 카드는 순백, 강조는 파랑.
   변수 이름은 기존 것을 그대로 두어 화면 코드를 건드리지 않습니다. */
:root{
  /* 면 */
  --paper:#f2f4f6;          /* 페이지 배경 (오프화이트) */
  --card:#ffffff;           /* 카드 */
  --surface:#f2f4f6;        /* 표 헤더 · 보조 면 */
  --row-hover:#f9fafb;
  --new-row:#f4f9ff;

  /* 파랑 (기존 gold 자리를 그대로 대체) */
  --gold:#3182f6;
  --gold-dark:#1b64da;
  --gold-light:#6ba6ff;
  --blue-tint:#e8f3ff;
  --blue-line:#c9e2ff;

  /* 어두운 면 (네이비 카드 · 모바일 헤더) */
  --ink:#191f28;
  --ink-2:#262d36;
  --ink-3:#2f3945;
  --ink-fg:#ffffff;
  --ink-fg-2:rgba(255,255,255,.88);
  --ink-fg-3:rgba(255,255,255,.62);
  --ink-fg-4:rgba(255,255,255,.76);

  /* 글자 */
  --tx:#191f28; --tx-2:#333d4b; --tx-3:#4e5968;
  --sub:#4e5968; --sub-2:#6b7684; --sub-3:#8b95a1; --sub-4:#b0b8c1;

  /* 선 */
  --line:#e5e8eb; --line-soft:#f2f4f6; --line-mid:#e5e8eb; --line-2:#d1d6db;

  /* 상태 */
  --warn:#f04452; --ok:#00b871; --flash:#e8f3ff;

  /* 그림자 — 아주 옅게 */
  --shadow-card:0 1px 3px rgba(0,0,0,.04), 0 6px 20px rgba(17,24,39,.05);
  --shadow-form:0 1px 3px rgba(0,0,0,.04), 0 8px 26px rgba(17,24,39,.06);
  --shadow-login:0 10px 40px rgba(17,24,39,.10);

  /* 모서리 */
  --r-sm:8px; --r-md:12px; --r-lg:16px;
}

*{box-sizing:border-box}
html,body{margin:0}
body{
  background:var(--paper); color:var(--tx);
  font-family:'Pretendard Variable',Pretendard,-apple-system,BlinkMacSystemFont,system-ui,
              'Apple SD Gothic Neo','Noto Sans KR',sans-serif;
  font-weight:400; -webkit-font-smoothing:antialiased; letter-spacing:-.01em;
}
a{color:var(--gold); text-decoration:none}
a:hover{color:var(--gold-dark)}
input,select,button,textarea{font-family:inherit; letter-spacing:-.01em}
/* 제목용 — 굵은 산세리프 */
.serif{font-weight:700; letter-spacing:-.03em}
.num{font-variant-numeric:tabular-nums}
.nowrap{white-space:nowrap}
.ell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

@keyframes livepulse{0%,100%{opacity:1}50%{opacity:.25}}
@keyframes flashin{from{background:var(--flash)}to{background:transparent}}
@keyframes riseup{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.flash{animation:flashin 2.2s ease-out}

/* ── 상단 바 ─────────────────────────────────────────────── */
.topbar{
  min-height:64px; background:var(--card); border-bottom:1px solid var(--line);
  display:flex; align-items:center; justify-content:space-between; padding:0 40px;
}
.topbar .brand{font-size:15px;font-weight:700;color:var(--tx);letter-spacing:-.03em}
.topbar .meta{font-size:12px;color:var(--sub-3);margin-top:3px}
.tabs{display:flex;gap:2px;background:var(--surface);padding:3px;border-radius:10px}
.tabs button,.tabs a{
  padding:8px 16px;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;
  background:transparent;color:var(--sub-2);display:inline-block
}
.tabs .on{background:var(--card);color:var(--gold);box-shadow:0 1px 3px rgba(0,0,0,.06)}
.btn-logout{
  padding:9px 14px;border:1px solid var(--line);background:var(--card);color:var(--sub-2);
  border-radius:var(--r-sm);font-size:13px;cursor:pointer;font-weight:500
}
.btn-logout:hover{border-color:var(--gold);color:var(--gold)}

/* ── 공통 카드/버튼/입력 ─────────────────────────────────── */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg)}
.card.shadow{box-shadow:var(--shadow-card);border-color:transparent}
.card.shadow-form{box-shadow:var(--shadow-form);border-color:transparent}
.card-head{padding:22px 24px 16px;border-bottom:1px solid var(--line-soft)}
.card-title{font-size:18px;font-weight:700;color:var(--tx);letter-spacing:-.03em}
.card-sub{font-size:12.5px;color:var(--sub-3);margin-top:6px;line-height:1.6}
.field-label{font-size:12px;color:var(--sub-2);font-weight:600;margin-bottom:7px}
.inp,select.inp{
  width:100%;padding:12px 13px;border:1px solid var(--line);border-radius:var(--r-sm);
  font-size:14px;background:var(--card);color:var(--tx)
}
select.inp{padding:12px 9px}
.inp::placeholder{color:var(--sub-4)}
.inp:focus,select.inp:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(49,130,246,.14)}
.btn-dark{
  padding:14px;border:none;border-radius:var(--r-sm);background:var(--gold);color:#fff;
  font-size:14.5px;font-weight:600;cursor:pointer;width:100%
}
.btn-dark:hover{background:var(--gold-dark)}
.btn-dark:disabled{background:var(--line-2);cursor:default}
.btn-gold{padding:12px 16px;border:none;border-radius:var(--r-sm);background:var(--gold);color:#fff;font-size:13.5px;font-weight:600;cursor:pointer}
.btn-gold:hover{background:var(--gold-dark)}
.btn-ghost{
  padding:9px 14px;border:1px solid var(--line);background:var(--card);color:var(--sub);
  border-radius:var(--r-sm);font-size:13px;font-weight:500;cursor:pointer
}
.btn-ghost:hover{border-color:var(--gold);color:var(--gold);background:var(--blue-tint)}
.err{font-size:12.5px;color:var(--warn);min-height:16px}

/* ── 로그인 ─────────────────────────────────────────────── */
.login-wrap{
  min-height:100vh;display:flex;align-items:center;justify-content:center;padding:40px;
  background:linear-gradient(170deg,#e8f3ff 0%,#f2f4f6 55%)
}
.login-box{
  width:400px;max-width:100%;background:var(--card);border-radius:20px;
  padding:40px 36px 34px;box-shadow:var(--shadow-login)
}

/* ── 대행목록 ───────────────────────────────────────────── */
.page-2col{display:flex;flex-wrap:wrap;gap:28px;padding:32px 40px 64px;align-items:flex-start}
.col-main{flex:1 1 720px;min-width:0;max-width:1000px;display:flex;flex-direction:column;gap:20px}
.col-side{width:392px;flex:none;display:flex;flex-direction:column;gap:20px}

.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.stat{padding:18px 20px;background:var(--card);border:1px solid transparent;border-radius:var(--r-md);box-shadow:var(--shadow-card)}
.stat .lb{font-size:12px;color:var(--sub-3);font-weight:500}
.stat .v{font-size:26px;font-weight:700;color:var(--tx);margin-top:6px;font-variant-numeric:tabular-nums;letter-spacing:-.03em}
.stat .u{font-size:13px;color:var(--sub-3);font-weight:500;margin-left:2px}

.tbl-wrap{overflow-x:auto}
.grid-rooms{
  display:grid;grid-template-columns:92px 150px 140px 150px minmax(200px,1fr) 128px;
  min-width:880px;align-items:center
}
/* 일정 만들기 — 이전 내용 채움 안내 */
.prefill-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 24px;padding:9px 12px;background:var(--blue-tint);border:1px solid var(--blue-line);border-radius:8px;font-size:12px;color:#2F6FF0;line-height:1.5}
.prefill-bar[hidden]{display:none}
.prefill-bar button{flex:none;border:1px solid var(--blue-line);background:var(--card);color:#2F6FF0;border-radius:6px;padding:4px 10px;font-size:12px;font-weight:700;cursor:pointer;font-family:inherit}

/* 대행 메시지 만들기 */
.grid-rooms.week-band .wk-msg{margin-left:auto;flex:none;border:1px solid #2F6FF0;background:#fff;color:#2F6FF0;border-radius:7px;padding:4px 10px;font-size:11.5px;font-weight:700;cursor:pointer;font-family:inherit;white-space:nowrap;align-self:center}
.grid-rooms.week-band .wk-msg:hover{background:#2F6FF0;color:#fff}
.grid-rooms.week-band.none .wk-msg{border-color:var(--line-2);color:var(--sub-2)}
.msg-modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);width:min(680px,calc(100vw - 24px));max-height:calc(100vh - 40px);background:var(--card);border-radius:16px;box-shadow:0 20px 60px rgba(17,24,39,.25);z-index:121;display:flex;flex-direction:column;overflow:hidden}
.msg-modal[hidden]{display:none}
.msg-head{display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid var(--line-soft)}
.msg-head b{font-size:15px}
.msg-head span{font-size:12px;color:var(--sub-3);flex:1}
.msg-list{overflow:auto;padding:14px 18px;display:flex;flex-direction:column;gap:14px}
.msg-item-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;font-size:13px}
.msg-text{width:100%;box-sizing:border-box;font:inherit;font-size:13px;line-height:1.6;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);resize:vertical}
.msg-foot{padding:12px 18px;border-top:1px solid var(--line-soft)}
.msg-foot .btn-dark{width:100%}
@media (max-width:760px){.grid-rooms.week-band{flex-wrap:wrap}.grid-rooms.week-band .wk-msg{margin-left:0;width:100%;margin-top:6px}}

/* 주차 띠 — 대행번호 앞자리(1-xx → 1주차)가 바뀔 때마다 목록을 칸으로 나눕니다 */
.grid-rooms.week-band{
  display:flex;align-items:baseline;gap:10px;min-width:0;
  padding:9px 14px 7px;margin-top:6px;
  background:var(--blue-tint);border-top:2px solid #2F6FF0;border-bottom:1px solid var(--blue-line);
  position:sticky;top:0;z-index:1
}
.grid-rooms.week-band .wk{font-size:13px;font-weight:800;color:#2F6FF0;letter-spacing:-.01em;white-space:nowrap}
.grid-rooms.week-band .wk-sub{font-size:11.5px;color:var(--sub-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.grid-rooms.week-band.none{background:var(--surface);border-top-color:var(--line);border-bottom-color:var(--line-soft)}
.grid-rooms.week-band.none .wk{color:var(--sub-2)}
.rooms-scroll .grid-rooms.week-band{top:40px}   /* 표 머리글(약 40px) 아래에 붙습니다 */

/* 대행번호는 이름 위에 따로 한 줄 — 이름과 겹치지 않고, 긴 이름은 줄바꿈 */
.grid-rooms .c-couple{min-width:0}
.grid-rooms .job-line{margin-bottom:3px;line-height:1}
.grid-rooms .job-line .job-no{margin-right:0}
.grid-rooms .couple-nm{white-space:normal;word-break:keep-all;overflow-wrap:anywhere;line-height:1.3}
.grid-rooms.head{background:var(--surface);border-bottom:1px solid var(--line);font-size:12px;color:var(--sub-2);font-weight:600}
.grid-rooms.head>div{padding:11px 12px}
.grid-rooms.row{border-bottom:1px solid var(--line-soft);font-size:13.5px;color:var(--tx);cursor:pointer}
.grid-rooms.row:hover{background:var(--row-hover)}
.grid-rooms.row>div{padding:14px 12px}
.sub-line{font-size:12px;color:var(--sub-3);margin-top:4px}
.sub-line.xs{font-size:11.5px}
.linkcell{padding:12px !important;min-width:0;display:flex;flex-direction:column;gap:6px}
.linkrow{display:flex;gap:7px;align-items:center;font-size:11.5px;white-space:nowrap;min-width:0;cursor:copy}
.linkrow:hover{opacity:.65}
.chip{flex:none;padding:3px 7px;border-radius:6px;font-weight:600;font-size:11px}
.chip.cust{background:var(--surface);color:var(--sub-2)}
.chip.staff{background:var(--blue-tint);color:var(--gold-dark)}
.linktext{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;color:var(--sub-2)}
.linktext.gold{color:var(--gold)}
.pin{flex:none;color:var(--sub-3);font-weight:600}
.empty{padding:38px 24px;text-align:center;font-size:13px;color:var(--sub-3)}

/* ── 접수 시트 ──────────────────────────────────────────── */
.sheet-page{display:flex;flex-wrap:wrap;gap:24px;padding:32px 40px 64px;align-items:flex-start}
.sheet-main{flex:1 1 620px;min-width:0;background:var(--card);border-radius:var(--r-lg);box-shadow:var(--shadow-form);overflow-x:auto}
.sheet-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;padding:22px 24px 18px;border-bottom:1px solid var(--line-soft)}
.sum3{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--line-soft)}
.sum3>div{padding:14px 20px;border-right:1px solid var(--line-soft)}
.sum3>div:last-child{border-right:none}
.sum3 .lb{font-size:12px;color:var(--sub-3);font-weight:500}
.sum3 .v{font-size:19px;font-weight:700;color:var(--tx);margin-top:5px;font-variant-numeric:tabular-nums;letter-spacing:-.02em}

.grid-entry{display:grid;grid-template-columns:56px 1.1fr .9fr 1.1fr .5fr .5fr .95fr;min-width:680px;align-items:center}
.tk-c{font-size:12px;font-weight:600;color:var(--sub-3);margin-left:6px}
.grid-entry.head{background:var(--surface);border-bottom:1px solid var(--line);font-size:12px;color:var(--sub-2);font-weight:600}
.grid-entry.head>div{padding:11px 12px}
.grid-entry.new{background:var(--new-row);border-bottom:1px solid var(--line)}
.grid-entry.row{border-bottom:1px solid var(--line-soft);font-size:13.5px;color:var(--tx)}
.grid-entry.row>div{padding:12px}
.grid-entry .c{text-align:center}
.grid-entry .r{text-align:right}
.inp-sm{width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:var(--r-sm);font-size:13.5px;background:var(--card);color:var(--tx)}
.inp-sm:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(49,130,246,.14)}
.inp.invalid,.inp-sm.invalid{border-color:var(--warn);background:#fff5f5}
.inp.invalid:focus,.inp-sm.invalid:focus{border-color:var(--warn);box-shadow:0 0 0 3px rgba(240,68,82,.16)}
/* 명부 칸은 오른쪽 안내(유튜브 라이브)만큼 세로로 길게 */
.entry-list{max-height:min(74vh,980px);min-height:520px;overflow-y:auto}
@media (max-width:900px){.entry-list{max-height:60vh;min-height:340px}}
.sheet-foot{display:flex;justify-content:space-between;padding:16px 24px;background:var(--surface);font-size:13px;color:var(--sub);font-weight:500}
.side-guide{width:392px;flex:none;display:flex;flex-direction:column;gap:16px}
/* 세로 공간이 모자라도 카드가 찌그러지지 않고 안내단이 스크롤되게 */
.side-guide>*,.col-side>*{flex:0 0 auto}
.guide-head{padding:20px 22px 14px;border-bottom:1px solid var(--line-soft)}
.guide-title{font-size:16px;font-weight:700;color:var(--tx);letter-spacing:-.03em}
.guide-body{padding:16px 22px 22px;display:flex;flex-direction:column;gap:11px;font-size:13px;color:var(--tx-2);line-height:1.75}
.card-ink{background:var(--ink);border-radius:var(--r-lg);color:var(--ink-fg)}
.card-ink .guide-head{border-bottom:1px solid var(--ink-3)}
.card-ink .guide-title{color:var(--ink-fg)}
.card-ink .guide-body{color:var(--ink-fg-2);gap:12px}
.card-ink .no{color:var(--gold-light);font-weight:700}
.card-ink b{color:var(--ink-fg)}
.row-del{border:none;background:transparent;color:var(--sub-4);cursor:pointer;font-size:12px;padding:2px 5px;border-radius:4px}
.row-del:hover{color:var(--warn);background:#fee}
.editable{cursor:text;border-bottom:1px dashed transparent}
.editable:hover{border-bottom-color:var(--line-2)}

/* ── 고객 화면 (모바일 우선) ────────────────────────────── */
.live-body{background:var(--paper);max-width:520px;margin:0 auto;min-height:100vh}
.live-head{background:var(--gold);color:#fff;padding:24px 20px 22px}
.live-couple{font-size:27px;font-weight:700;letter-spacing:-.04em}
.live-sub{font-size:12.5px;color:rgba(255,255,255,.82);margin-top:9px;line-height:1.7}
.video-box{position:relative;background:#000;aspect-ratio:16/9;width:100%}
.video-box iframe{position:absolute;top:0;left:0;right:0;bottom:0;inset:0;width:100%;height:100%;border:0}
.live-badge{
  position:absolute;top:10px;left:10px;z-index:2;display:flex;align-items:center;gap:5px;
  background:var(--warn);color:#fff;font-size:11px;font-weight:700;padding:4px 9px;border-radius:6px
}
.live-badge .dot{width:5px;height:5px;border-radius:50%;background:#fff;animation:livepulse 1.6s infinite}
.video-wait{
  display:flex;align-items:center;justify-content:center;height:100%;
  color:#8b95a1;font-size:13px;background:#191f28
}
.live-sec{padding:20px;background:var(--card);border-bottom:1px solid var(--line-soft)}
.live-total{font-size:35px;font-weight:700;color:var(--tx);font-variant-numeric:tabular-nums;letter-spacing:-.04em}
.mini3{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line-soft);margin-top:18px;border-radius:var(--r-md);overflow:hidden}
.mini3.two{grid-template-columns:repeat(2,1fr)}
.mini3>div{background:var(--surface);padding:14px 10px;text-align:center}
.mini3 .lb{font-size:11.5px;color:var(--sub-3)}
.mini3 .v{font-size:16px;font-weight:700;color:var(--tx);margin-top:5px;font-variant-numeric:tabular-nums}
.mini2{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line-soft)}
.mini2.one{grid-template-columns:1fr}
.mini2>div{background:var(--card);padding:16px 18px}
.pay-row{display:flex;align-items:center;gap:10px;font-size:12.5px;margin-top:11px}
.pay-bar{flex:1;height:6px;background:var(--line-soft);border-radius:4px;overflow:hidden}
.pay-bar i{display:block;height:100%;background:var(--gold);border-radius:4px}
.entry-item{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid var(--line-soft)}
.avatar{
  width:36px;height:36px;border-radius:12px;background:var(--blue-tint);color:var(--gold-dark);
  display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;flex:none
}
.gate{
  min-height:100vh;display:flex;align-items:center;justify-content:center;padding:28px;
  background:linear-gradient(170deg,#e8f3ff 0%,#f2f4f6 55%)
}
.gate-box{width:360px;max-width:100%;background:var(--card);border-radius:20px;padding:36px 30px 30px;box-shadow:var(--shadow-login)}

/* ── 모바일 접수 폼 ─────────────────────────────────────── */
.m-wrap{max-width:520px;margin:0 auto;padding:0 0 90px;background:var(--card);min-height:100vh}
.m-head{background:var(--ink);color:var(--ink-fg);padding:16px 18px 14px}
.m-form{padding:18px;display:flex;flex-direction:column;gap:14px}
.m-form .inp,.m-form select.inp{padding:14px 13px;font-size:15px;min-height:50px}
.m-btn{width:100%;min-height:54px;border:none;border-radius:var(--r-md);background:var(--gold);color:#fff;font-size:16px;font-weight:600;cursor:pointer}
.m-btn:active{background:var(--gold-dark)}
.seg{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.seg button{min-height:50px;border:1px solid var(--line);background:var(--card);color:var(--sub);border-radius:var(--r-sm);font-size:14.5px;font-weight:500;cursor:pointer}
.seg button.on{background:var(--blue-tint);color:var(--gold-dark);border-color:var(--gold);font-weight:600}
.quick{display:flex;flex-wrap:wrap;gap:8px}
.quick button{padding:10px 14px;min-height:42px;border:1px solid var(--line);background:var(--card);border-radius:var(--r-sm);font-size:13.5px;color:var(--sub);cursor:pointer;font-weight:500}
.quick button:active{background:var(--blue-tint);border-color:var(--gold);color:var(--gold-dark)}
.m-list{padding:0 18px}
.offline-bar{
  position:fixed;left:0;right:0;bottom:0;background:var(--warn);color:#fff;
  font-size:13px;font-weight:500;text-align:center;padding:12px;display:none;z-index:50
}
.offline-bar.show{display:block}
.toast{
  position:fixed;left:50%;transform:translateX(-50%);bottom:24px;background:var(--ink);color:#fff;
  font-size:13.5px;font-weight:500;padding:13px 20px;border-radius:var(--r-md);opacity:0;transition:opacity .2s;z-index:60;pointer-events:none;
  box-shadow:0 8px 24px rgba(0,0,0,.18)
}
.toast.show{opacity:1}

/* ── 검색창 ─────────────────────────────────────────────── */
.search-wrap{position:relative;margin-top:12px}
.search-wrap .inp{padding:12px 38px 12px 13px;font-size:14px;background:var(--surface);border-color:transparent}
.search-wrap .inp:focus{background:var(--card);border-color:var(--gold)}
.search-wrap .inp::-webkit-search-cancel-button,
.search-wrap .inp::-webkit-search-decoration{-webkit-appearance:none;appearance:none}
.search-clear{
  position:absolute;right:7px;top:50%;transform:translateY(-50%);
  width:26px;height:26px;border:none;background:transparent;color:var(--sub-3);
  font-size:14px;cursor:pointer;line-height:1;display:none;border-radius:50%
}
.search-wrap.has-value .search-clear{display:block}
.search-clear:hover{color:var(--warn);background:var(--surface)}
.no-result{padding:30px 0;text-align:center;font-size:13px;color:var(--sub-3)}
mark{background:var(--blue-tint);color:var(--gold-dark);padding:0 2px;border-radius:3px;font-weight:600}

/* ── 인쇄용 표 ──────────────────────────────────────────── */
.print-sheet{max-width:900px;margin:0 auto;padding:40px 28px 60px}
.print-table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px}
.print-table th{
  background:var(--surface);border-bottom:1px solid var(--line);
  padding:11px 10px;text-align:left;font-weight:600;color:var(--sub-2);
  font-size:12px;white-space:nowrap
}
.print-table td{border-bottom:1px solid var(--line-soft);padding:11px 10px;color:var(--tx);word-break:keep-all}
.print-table tr{break-inside:avoid;page-break-inside:avoid}
.print-table tfoot td{background:var(--surface);border-top:1px solid var(--line);font-size:13.5px;font-weight:600}
.print-table .r{text-align:right;font-variant-numeric:tabular-nums}
.print-table .c{text-align:center}
/* 열 너비는 합이 100% 가 되게 고정 — 어긋남 방지 */
.print-table .col-no{width:7%}
.print-table .col-name{width:16%}
.print-table .col-rel{width:21%}
.print-table .col-amt{width:20%}
.print-table .col-tk{width:9%}
.print-table .col-pay{width:12%}
.print-table .col-time{width:15%}

@media print{
  .noprint{display:none !important}
  body{background:#fff}
  .print-sheet{max-width:none;padding:0}
  .print-table thead{display:table-header-group}
  a[href]:after{content:none !important}
  @page{size:A4;margin:14mm}
}

/* ── 반응형 ─────────────────────────────────────────────── */
@media (max-width:1180px){
  .col-side,.side-guide{width:100%}
  .page-2col,.sheet-page{padding:22px 16px 56px;gap:18px}
  .topbar{padding:0 18px}
}
@media (max-width:640px){
  .stats{grid-template-columns:repeat(2,1fr)}
  .topbar{padding:14px 16px;flex-wrap:wrap;gap:10px}
  .print-sheet{padding:24px 16px 48px}
  .print-table{font-size:12px}
  .print-table th,.print-table td{padding:9px 6px}
}

/* ── 현장 대화 (대행인원 ↔ 관리자) ───────────────────────────── */
.chat-card{display:flex;flex-direction:column;overflow:hidden}
.chat-head{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:16px 20px 12px;border-bottom:1px solid var(--line-soft)
}
.chat-title{font-size:14px;font-weight:700;color:var(--ink)}
.chat-sub{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--sub-2)}
.chat-tag{
  display:inline-block;margin-left:5px;padding:1px 6px;border-radius:5px;
  background:var(--gold);color:#fff;font-size:10px;font-weight:700;vertical-align:1px
}
.chat-rename{
  border:none;background:none;padding:0;font-size:11.5px;color:var(--sub-3);
  cursor:pointer;text-decoration:underline;text-underline-offset:2px
}
.chat-rename:hover{color:var(--gold)}
.chat-list{
  flex:1;min-height:180px;max-height:330px;overflow-y:auto;
  padding:14px 20px;display:flex;flex-direction:column;gap:12px;background:var(--paper)
}
.chat-card.compact .chat-list{max-height:260px}
.chat-empty{
  margin:auto;padding:24px 0;text-align:center;font-size:12.5px;color:var(--sub-4);line-height:1.7
}
.chat-msg{display:flex;flex-direction:column;align-items:flex-start;max-width:86%}
.chat-msg.mine{align-self:flex-end;align-items:flex-end}
.chat-who{font-size:11px;color:var(--sub-3);margin-bottom:4px;padding:0 2px}
.chat-bubble{
  padding:9px 12px;border-radius:12px 12px 12px 3px;background:var(--card);
  border:1px solid var(--line);font-size:13px;line-height:1.6;color:var(--tx);
  white-space:pre-wrap;word-break:break-word
}
.chat-msg.mine .chat-bubble{
  border-radius:12px 12px 3px 12px;background:var(--gold);border-color:var(--gold);color:#fff
}
.chat-row{display:flex;align-items:center;gap:4px}
.chat-msg.mine .chat-row{flex-direction:row-reverse}
.chat-del{
  flex:none;border:none;background:none;padding:2px 4px;cursor:pointer;
  color:var(--sub-4);font-size:11px;line-height:1;opacity:0;transition:opacity .12s
}
.chat-msg:hover .chat-del,.chat-del:focus{opacity:1}
.chat-del:hover{color:var(--warn)}
.chat-time{font-size:10.5px;color:var(--sub-4);margin-top:4px;padding:0 2px}
.chat-gate{padding:14px 20px 16px;border-top:1px solid var(--line-soft);background:var(--card)}
.chat-gate-title{font-size:12.5px;color:var(--sub);margin-bottom:9px;line-height:1.6}
.chat-gate-form{display:flex;gap:8px}
.chat-gate-form .inp{flex:1;min-width:0;padding:10px 12px;font-size:13px}
.chat-form[hidden],.chat-gate[hidden]{display:none}
.chat-form{
  display:flex;gap:8px;align-items:flex-end;
  padding:12px 16px;border-top:1px solid var(--line-soft);background:var(--card)
}
.chat-input{
  flex:1;min-width:0;resize:none;overflow-y:auto;max-height:96px;
  padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-sm);
  font-family:inherit;font-size:13px;line-height:1.5;color:var(--tx);background:var(--card)
}
.chat-input:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(49,130,246,.14)}
.chat-send{
  flex:none;padding:10px 15px;border:none;border-radius:var(--r-sm);
  background:var(--gold);color:#fff;font-size:13px;font-weight:600;cursor:pointer
}
.chat-send:hover{filter:brightness(.95)}
.chat-note{
  padding:9px 20px 12px;font-size:11px;color:var(--sub-4);
  background:var(--card);border-top:1px solid var(--line-soft);line-height:1.6
}
@media (max-width:900px){
  .chat-list{max-height:280px}
  .chat-del{opacity:.45;padding:6px 8px;font-size:12px}
  .chat-send{min-height:44px}
  .chat-input{min-height:44px}
}

/* ── 접속 중인 대행인원 표시 (왼쪽 위) ───────────────────────── */
.online-who{
  position:fixed;top:12px;left:12px;z-index:60;
  display:flex;align-items:center;gap:7px;
  padding:7px 13px;border-radius:999px;
  background:var(--card);border:1px solid var(--line);
  box-shadow:var(--shadow-card);
  font-size:12px;font-weight:600;color:var(--sub);letter-spacing:-.01em;
  max-width:min(70vw,420px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}
.online-who[hidden]{display:none}
.online-who .dot{
  flex:none;width:7px;height:7px;border-radius:50%;background:var(--ok);
  animation:livepulse 2s ease-in-out infinite
}
.online-who #onlineNames{color:var(--ink);font-weight:700}
.who-chip{
  display:inline-block;padding:5px 11px;border-radius:999px;
  background:var(--blue-tint);color:var(--gold-dark);font-size:12px;font-weight:700
}
.guide-warn{
  margin-top:4px;padding:10px 12px;border-radius:8px;
  background:#fff5f5;border:1px solid #ffd9dc;color:#c2333d;line-height:1.75
}

/* ── 관리자 메시지는 빨간 글씨로 구분 ────────────────────────── */
.chat-msg.admin .chat-who{color:var(--warn);font-weight:700}
.chat-msg.admin .chat-tag{background:var(--warn)}
.chat-msg.admin .chat-bubble,
.chat-msg.admin.mine .chat-bubble{
  background:#fff5f5;border-color:#ffd9dc;color:var(--warn);font-weight:600
}

/* ── 대행 화면 · 등록한 라이브 미리보기 ──────────────────────── */
.yt-preview{margin-top:14px;border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}
.yt-preview[hidden]{display:none}
.yt-preview-head{
  display:flex;align-items:center;gap:7px;padding:10px 12px;
  background:var(--surface);font-size:11.5px;font-weight:600;color:var(--sub)
}
.yt-preview-head a{margin-left:auto;font-size:11px;font-weight:600}
.yt-preview-head .live-dot{
  width:7px;height:7px;border-radius:50%;background:var(--warn);
  animation:livepulse 1.6s ease-in-out infinite
}
.yt-preview-foot{padding:9px 12px;background:var(--card);font-size:11px;color:var(--sub-4);line-height:1.6}

/* ── 접수 시작 · 마감 조작판 (대행 화면) ─────────────────────── */
.run-bar{
  display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  padding:16px 24px;border-bottom:1px solid var(--line-soft)
}
.run-bar.wait{background:var(--surface)}
.run-bar.live{background:#eafaf3;border-bottom-color:#bdecd8}
.run-bar.done{background:#fff5f5;border-bottom-color:#ffd9dc}
.run-state{display:flex;align-items:center;gap:9px;flex-wrap:wrap;min-width:0}
.run-state b{font-size:14.5px;letter-spacing:-.02em}
.run-bar.wait .run-state b{color:var(--sub-2)}
.run-bar.live .run-state b{color:#00875a}
.run-bar.done .run-state b{color:#d32f3c}
.run-hint{font-size:12px;color:var(--sub-3)}
.run-dot{flex:none;width:9px;height:9px;border-radius:50%;background:var(--sub-4)}
.run-bar.live .run-dot{background:var(--ok);animation:livepulse 1.6s ease-in-out infinite}
.run-bar.done .run-dot{background:var(--warn)}
.run-btns{display:flex;gap:8px;flex:none}
.run-btns button{
  padding:11px 22px;border:none;border-radius:var(--r-sm);
  font-size:14px;font-weight:700;cursor:pointer;letter-spacing:-.02em;min-height:44px
}
.run-btns button[hidden]{display:none}
.run-start{background:var(--ok);color:#fff}
.run-start:hover{background:#00a267}
.run-stop{background:var(--warn);color:#fff}
.run-stop:hover{background:#d32f3c}

.entry-lock{
  padding:22px 24px;text-align:center;font-size:13px;color:var(--sub-2);
  background:repeating-linear-gradient(45deg,var(--surface),var(--surface) 10px,#eef1f4 10px,#eef1f4 20px);
  border-bottom:1px solid var(--line-soft)
}
.entry-lock[hidden]{display:none}
.m-form[hidden],#entryForm[hidden]{display:none}

/* ── 대행목록 상태 배지 (시작 중 / 마감 완료 확실히 구분) ────── */
.st{
  display:inline-block;padding:5px 11px;border-radius:999px;
  font-size:11.5px;font-weight:700;letter-spacing:-.01em;white-space:nowrap
}
.st-live{background:var(--ok);color:#fff;box-shadow:0 0 0 3px rgba(0,184,113,.16)}
.st-done{background:var(--warn);color:#fff;box-shadow:0 0 0 3px rgba(240,68,82,.16)}
.st-wait{background:var(--surface);color:var(--sub-2);border:1px solid var(--line)}
.st-soon{background:var(--blue-tint);color:var(--gold-dark)}
.st-off{background:var(--surface);color:var(--sub-4);border:1px solid var(--line)}

/* ── 인원목록 (관리자 화면) ─────────────────────────────────── */
.ppl-card{overflow:hidden}
.ppl-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 20px 12px;border-bottom:1px solid var(--line-soft)
}
.ppl-title{font-size:14px;font-weight:700;color:var(--ink)}
.ppl-count{
  padding:3px 10px;border-radius:999px;background:var(--blue-tint);
  color:var(--gold-dark);font-size:11.5px;font-weight:700
}
.ppl-list{max-height:300px;overflow-y:auto}
.ppl-row{display:flex;align-items:center;gap:11px;padding:12px 20px;border-bottom:1px solid var(--line-soft)}
.ppl-row:last-child{border-bottom:none}
.ppl-row.on{background:#f3fbf7}
.ppl-ava{
  flex:none;width:34px;height:34px;border-radius:50%;background:var(--surface);
  display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:700;color:var(--sub-2)
}
.ppl-row.on .ppl-ava{background:var(--ok);color:#fff}
.ppl-main{flex:1;min-width:0}
.ppl-name{font-size:13.5px;font-weight:600;color:var(--tx);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ppl-age{font-size:11px;font-weight:500;color:var(--sub-3)}
.ppl-on{
  padding:1px 7px;border-radius:5px;background:var(--ok);color:#fff;
  font-size:10px;font-weight:700
}
.ppl-phone{font-size:12.5px;margin-top:3px}
.ppl-phone a{color:var(--gold);font-variant-numeric:tabular-nums}
.ppl-time{flex:none;text-align:right;font-size:10.5px;color:var(--sub-4);line-height:1.4}
.ppl-empty{padding:26px 20px;text-align:center;font-size:12.5px;color:var(--sub-4);line-height:1.8}
.ppl-foot{padding:10px 20px 12px;font-size:11px;color:var(--sub-4);border-top:1px solid var(--line-soft)}

/* ── 관리자 호출 ─────────────────────────────────────────────── */
.chat-call-row{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding:11px 16px;border-top:1px solid var(--line-soft);background:var(--card)
}
.chat-call{
  flex:none;padding:10px 16px;border:1px solid var(--warn);border-radius:var(--r-sm);
  background:#fff5f5;color:var(--warn);font-size:13px;font-weight:700;cursor:pointer;min-height:42px
}
.chat-call:hover{background:var(--warn);color:#fff}
.chat-call:disabled{opacity:.5;cursor:default}
.chat-call-hint{font-size:11px;color:var(--sub-4);line-height:1.5;flex:1;min-width:0}
.chat-tag.call{background:var(--warn)}
.chat-msg.call .chat-bubble,
.chat-msg.call.mine .chat-bubble{
  background:var(--warn);border-color:var(--warn);color:#fff;font-weight:700
}
.chat-msg.call .chat-who{color:var(--warn);font-weight:700}
@keyframes callring{0%,100%{box-shadow:0 0 0 0 rgba(240,68,82,0)}50%{box-shadow:0 0 0 5px rgba(240,68,82,.30)}}
.chat-card.called{animation:callring 1s ease-in-out 4}
.grid-rooms.row.called{background:#fff5f5;animation:callring 1s ease-in-out 8}

.call-bar{
  position:fixed;left:50%;transform:translateX(-50%);top:14px;z-index:90;
  max-width:min(92vw,760px);padding:13px 44px 13px 18px;border-radius:12px;
  background:var(--warn);color:#fff;font-size:13.5px;font-weight:600;
  box-shadow:0 10px 30px rgba(240,68,82,.32);line-height:1.5
}
.call-bar[hidden]{display:none}
.call-bar a{color:#fff;text-decoration:underline;margin-left:8px;font-weight:700}
.call-bar-x{
  position:fixed;left:50%;top:20px;z-index:91;margin-left:min(46vw,368px);
  border:none;background:none;color:#fff;font-size:14px;cursor:pointer;padding:4px 8px
}
.call-bar[hidden] + .call-bar-x{display:none}

/* ── 접수 시트 · 한 화면에 꽉 차게 ────────────────────────────
   페이지 전체가 스크롤되지 않고, 명부 칸과 오른쪽 안내단이
   각자 안에서만 스크롤됩니다. 명부는 남는 높이를 전부 차지합니다. */
@media (min-width:901px){
  .sheet-page{
    height:100vh; height:100dvh;
    padding-bottom:24px;
    overflow:hidden;
    align-items:stretch;
    flex-wrap:nowrap;
  }
  .sheet-page.has-top{ height:calc(100vh - 64px); height:calc(100dvh - 64px) }

  .sheet-main{
    display:flex; flex-direction:column;
    min-height:0; overflow:hidden;
  }
  /* 위아래 고정 영역은 줄어들지 않게 */
  .sheet-main > .sheet-head,
  .sheet-main > .run-bar,
  .sheet-main > .sum3,
  .sheet-main > .grid-entry,
  .sheet-main > .entry-lock,
  .sheet-main > .sheet-foot{ flex:none }

  /* 명부 칸이 남는 높이를 전부 차지합니다 */
  .entry-list{
    flex:1 1 auto;
    min-height:0; max-height:none;
    overflow-y:auto; overflow-x:hidden;
  }

  /* 오른쪽 안내단(유튜브 라이브 포함)은 자기 안에서만 스크롤 */
  .side-guide{
    min-height:0; overflow-y:auto; overflow-x:hidden;
    padding-right:4px; scrollbar-width:thin;
  }
  .side-guide::-webkit-scrollbar{width:8px}
  .side-guide::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:8px}

  /* 가로가 좁은 화면에서는 표만 가로로 밀리게 */
  .sheet-main{ overflow-x:auto }
  .entry-list{ overflow-x:visible }
}

/* 한 화면 모드에서는 위아래 고정 영역을 줄여 명부 칸에 높이를 몰아줍니다 */
@media (min-width:901px){
  .sheet-page{padding-top:20px;padding-bottom:20px;gap:20px}
  .sheet-main > .sheet-head{padding:16px 22px 14px}
  .sheet-main > .sheet-head .serif{font-size:18px}
  .sheet-main > .run-bar{padding:11px 22px}
  .sheet-main > .sum3 > div{padding:10px 20px}
  .sheet-main > .sum3 .v{font-size:17px;margin-top:3px}
  .sheet-main > .grid-entry.head > div{padding:9px 12px}
  .sheet-main > .grid-entry.new > div{padding:6px}
  .sheet-main > .sheet-foot{padding:11px 24px}
  .sheet-main > .entry-lock{padding:16px 24px}
  .grid-entry.row > div{padding:10px 12px}
}

/* "○○○ 로그인 중" 알약이 상단바·시트와 겹치지 않도록 자리를 비워 둡니다 */
.topbar + .online-who{top:76px}
@media (min-width:901px){
  body:has(.online-who:not([hidden])) .sheet-page{padding-top:56px}
}

/* ── 최종 확정 ───────────────────────────────────────────────── */
.btn-final{
  padding:9px 16px;border:none;border-radius:var(--r-sm);
  background:var(--ink);color:#fff;font-size:13px;font-weight:700;cursor:pointer
}
.btn-final:hover{background:#000}
.btn-final[hidden],#btnReissue[hidden]{display:none}
.st-final{background:var(--ink);color:#fff;box-shadow:0 0 0 3px rgba(25,31,40,.12)}
.final-note{
  margin-top:8px;padding:9px 12px;border-radius:8px;
  background:var(--surface);border:1px solid var(--line);
  font-size:11.5px;color:var(--sub);line-height:1.6
}
.final-note[hidden]{display:none}

/* ── 대행목록 · 줄마다 확정/재발급 버튼 ──────────────────────── */
.statuscell{
  padding:10px 8px;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center
}
.row-act{
  padding:5px 10px;border:1px solid var(--line);border-radius:7px;background:var(--card);
  color:var(--sub-2);font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap
}
.row-act:hover{border-color:var(--gold);color:var(--gold);background:var(--blue-tint)}
.row-act.final{background:var(--ink);border-color:var(--ink);color:#fff}
.row-act.final:hover{background:#000;border-color:#000;color:#fff}
.row-act:disabled{opacity:.5;cursor:default}
.row-act.danger{color:var(--sub-3);border-color:transparent;background:transparent;font-size:11.5px}
.row-act.danger:hover{color:#c0392b;border-color:#e8b4ae;background:#fdf2f0}
.btn-ghost.danger{color:#c0392b;border-color:#e8b4ae}
.btn-ghost.danger:hover{background:#fdf2f0;border-color:#c0392b}

/* ── 관리자 방 화면 표시 (대행인원 화면과 확실히 구분) ────────── */
body.admin-mode{background:#eef1f6}
body.admin-mode .topbar{
  background:var(--ink);border-bottom-color:#000
}
body.admin-mode .topbar .brand{color:#fff}
body.admin-mode .topbar .meta{color:var(--ink-fg-3)}
body.admin-mode .topbar .tabs{background:rgba(255,255,255,.10)}
body.admin-mode .topbar .tabs a{color:var(--ink-fg-2)}
body.admin-mode .topbar .tabs .on{background:#fff;color:var(--ink)}
body.admin-mode .btn-logout{background:transparent;border-color:rgba(255,255,255,.28);color:var(--ink-fg-2)}
body.admin-mode .btn-logout:hover{border-color:#fff;color:#fff}

.admin-band{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding:9px 40px;background:var(--ink-2);color:var(--ink-fg-2);font-size:12.5px
}
.admin-band-chip{
  flex:none;padding:3px 10px;border-radius:999px;background:var(--gold);color:#fff;
  font-size:11.5px;font-weight:700;letter-spacing:-.01em
}
.admin-band-txt{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.admin-band-link{margin-left:auto;flex:none;color:#fff;font-weight:600;text-decoration:underline;text-underline-offset:3px}
.admin-band-link:hover{color:var(--gold-light)}
@media (max-width:900px){.admin-band{padding:9px 18px}}

/* 관리자 방 화면에서는 상단바 + 띠 높이만큼 빼고 한 화면에 맞춥니다 */
@media (min-width:901px){
  body.admin-mode .sheet-page.has-top{ height:calc(100vh - 104px); height:calc(100dvh - 104px) }
  body.admin-mode .topbar + .admin-band + .online-who{top:118px}
}

/* ── 대행목록도 한 화면에 ─────────────────────────────────────── */
@media (min-width:901px){
  .page-2col{
    height:calc(100vh - 64px); height:calc(100dvh - 64px);
    padding-top:22px; padding-bottom:22px;
    overflow:hidden; align-items:stretch; flex-wrap:nowrap;
  }
  .col-main{min-height:0;display:flex;flex-direction:column;gap:16px}
  .col-main > .stats{flex:none}
  .rooms-card{min-height:0;display:flex;flex-direction:column;overflow:hidden}
  .rooms-card > div:first-child{flex:none}
  .rooms-scroll{flex:1 1 auto;min-height:0;overflow:auto}
  /* 표 머리글은 스크롤해도 위에 붙어 있게 */
  .rooms-scroll .grid-rooms.head{position:sticky;top:0;z-index:2}
  .col-side{min-height:0;overflow-y:auto;padding-right:4px;scrollbar-width:thin}
  .col-side::-webkit-scrollbar{width:8px}
  .col-side::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:8px}
}

/* 상단 제목을 눌러 대행목록으로 (별도 메뉴 없음) */
.brand-link{display:block;text-decoration:none;border-radius:8px;padding:2px 0}
.brand-link:hover .brand{color:var(--gold)}
body.admin-mode .brand-link:hover .brand{color:var(--gold-light)}

/* ── 관리자 화면 잠금 ────────────────────────────────────────── */
/* 잠긴 동안 뒤 화면은 흐리게 가리되, 알림은 계속 동작합니다 */
body.locked > *:not(.lock-wrap):not(.toast){
  filter:blur(9px);pointer-events:none;user-select:none
}
.lock-wrap{
  position:fixed;top:0;left:0;right:0;bottom:0;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;
  padding:32px;background:rgba(15,20,28,.55);backdrop-filter:blur(3px)
}
.lock-wrap[hidden]{display:none}
.lock-box{
  width:400px;max-width:100%;background:var(--card);border-radius:20px;
  padding:34px 32px 28px;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.35)
}
.lock-icon{font-size:30px;line-height:1}
.lock-title{font-size:19px;font-weight:700;color:var(--ink);margin-top:12px;letter-spacing:-.03em}
.lock-sub{font-size:12.5px;color:var(--sub);line-height:1.85;margin-top:10px}
.lock-form{display:flex;gap:8px;margin-top:20px}
.lock-form .inp{flex:1;min-width:0;text-align:center;letter-spacing:.08em}
.lock-form .btn-dark{width:auto;flex:none;padding:12px 18px;font-size:13.5px}
.lock-box .err{margin-top:10px;text-align:center}
.lock-logout{
  border:none;background:none;color:var(--sub-4);font-size:11.5px;cursor:pointer;
  text-decoration:underline;text-underline-offset:3px
}
.lock-logout:hover{color:var(--gold)}

/* 잠긴 사이 들어온 알림 */
.lock-feed{
  margin-top:18px;padding:12px 14px;border-radius:12px;
  background:var(--surface);border:1px solid var(--line);text-align:left
}
.lock-feed[hidden]{display:none}
.lock-feed-head{font-size:11px;font-weight:700;color:var(--sub-3);margin-bottom:8px}
.lock-feed-row{
  font-size:12px;color:var(--sub);line-height:1.6;padding:5px 0;
  border-top:1px solid var(--line-soft);word-break:break-word
}
.lock-feed-row:first-child{border-top:none}
.lock-feed-row.urgent{color:var(--warn);font-weight:700}

/* 방 화면 → 관리자 페이지 돌아가기 */
.btn-back{
  flex:none;padding:8px 14px;border-radius:var(--r-sm);
  border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.06);
  color:#fff;font-size:13px;font-weight:600;white-space:nowrap
}
.btn-back:hover{background:#fff;color:var(--ink);border-color:#fff}

/* ── 상호 표시 ───────────────────────────────────────────────── */
.brand-mark{
  display:flex;align-items:center;gap:7px;
  font-size:13px;font-weight:800;letter-spacing:-.02em;color:var(--gold);
  margin-bottom:10px
}
.brand-mark::before{display:none}
.brand-logo{display:block;height:22px;width:auto}
.brand-mark.on-ink{color:#fff}
.brand-mark.on-ink::before{background:var(--gold-light)}


/* ═══════════════════════════════════════════════════════════════
   모바일 입력 — iOS 자동 확대 방지
   iPhone Safari 는 입력칸 글자가 16px 보다 작으면 누를 때 화면을 확대합니다.
   접수 중에 화면이 튀면 안 되므로 모든 입력칸을 16px 이상으로 강제합니다.
   (인라인 style 로 지정된 것까지 덮어야 해서 !important 를 씁니다)
   ═══════════════════════════════════════════════════════════════ */
@media (max-width:900px), (pointer:coarse){
  input, select, textarea,
  .inp, select.inp, .inp-sm, .chat-input,
  .m-form .inp, .m-form select.inp,
  .search-wrap .inp, .chat-gate-form .inp, .lock-form .inp{
    font-size:16px !important;
  }
  .m-form .inp[name="amount"]{font-size:20px !important}

  /* 손가락으로 누르기 좋은 크기 */
  .m-form .inp,.m-form select.inp{min-height:52px;padding:14px 14px}
  .quick button{min-height:46px;font-size:14px}
  .seg button{min-height:46px;font-size:14px}
  .m-btn{min-height:56px;font-size:17px;font-weight:700}
  .chat-send,.chat-call{min-height:48px}
  .run-btns button{min-height:50px;font-size:15px;padding:12px 20px}
  .field-label{font-size:13px;margin-bottom:8px}
}

/* ── 모바일 전반 다듬기 ──────────────────────────────────────── */
@media (max-width:900px){
  .m-form{gap:16px;padding:18px}
  .quick{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
  .quick button{width:100%}
  .m-head{padding:18px}
  /* 키보드가 올라와도 입력칸이 가려지지 않도록 아래 여백 */
  .m-wrap{padding-bottom:env(safe-area-inset-bottom)}
  .online-who{top:8px;left:8px;font-size:11.5px;padding:6px 11px;max-width:82vw}
  .toast{bottom:calc(16px + env(safe-area-inset-bottom))}
  /* 관리자 화면도 좁은 폭에서 읽히게 */
  .admin-band{font-size:11.5px;gap:8px}
  .admin-band-txt{white-space:normal}
  .sheet-head{flex-direction:column;align-items:stretch;gap:12px}
  .lock-box{padding:26px 20px 22px}
}

/* ── 모바일 세부 조정 ────────────────────────────────────────── */
@media (max-width:900px){
  /* "○○○ 로그인 중" 알약이 상호를 가리지 않도록 머리 여백 확보 */
  body:has(.online-who:not([hidden])) .m-head{padding-top:56px}

  /* 기록 버튼은 항상 손 닿는 곳에 — 폼을 스크롤해도 아래에 붙어 있습니다 */
  .m-form .m-btn{
    position:sticky;bottom:12px;z-index:20;
    box-shadow:0 6px 20px rgba(49,130,246,.30)
  }
  /* 상호를 헤더에서 크게 */
  .m-head .brand-mark{font-size:14px}
}

/* 모바일 — 접속자 표시를 헤더 안에 (고정 요약을 가리지 않게) */
.m-online{
  display:flex;align-items:center;gap:6px;margin-top:8px;
  font-size:11.5px;color:var(--ink-fg-3);font-weight:500
}
.m-online[hidden]{display:none}
.m-online .dot{
  width:6px;height:6px;border-radius:50%;background:var(--ok);flex:none;
  animation:livepulse 2s ease-in-out infinite
}
.m-online #onlineNames{color:var(--ink-fg);font-weight:700}
@media (max-width:900px){
  body:has(.online-who:not([hidden])) .m-head{padding-top:18px}
}

/* ═══════════════════════════════════════════════════════════════
   모바일 대행인원 화면 — 아래 메뉴로 나눈 한 화면 구성
   머리(상호·예식)와 요약은 항상 위에, 메뉴는 항상 아래에 붙어 있고
   가운데 내용만 스크롤됩니다. 한 화면에 다 늘어놓지 않습니다.
   ═══════════════════════════════════════════════════════════════ */
body.m-body{overflow:hidden;background:var(--card)}
.m-app{
  display:flex;flex-direction:column;
  height:100vh;height:100dvh;
  max-width:560px;margin:0 auto;background:var(--card);overflow:hidden
}
.m-app > .m-head,.m-app > .m-tabs{flex:none}

.m-head-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.m-couple{font-size:18px;margin-top:5px;letter-spacing:-.02em}
.m-head-meta{font-size:11.5px;color:var(--ink-fg-3);margin-top:5px}
.m-out{margin:0;flex:none;text-align:right}
.m-out .who{font-size:11px;color:var(--ink-fg-3);margin-bottom:5px;white-space:nowrap}
.m-out button{
  padding:6px 10px;border:1px solid rgba(255,255,255,.28);background:transparent;
  color:var(--ink-fg-2);border-radius:7px;font-size:11px;cursor:pointer
}

/* 가운데 — 여기만 스크롤됩니다 */
.m-panes{
  flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;background:var(--card)
}
.m-pane{display:block;padding-bottom:20px}
.m-pane[hidden]{display:none !important}
.m-pane.pane-chat{
  height:100%;padding-bottom:0;display:flex;flex-direction:column
}
.m-pane.pane-chat .chat-card{
  flex:1;min-height:0;border:none;border-radius:0;box-shadow:none;background:var(--card)
}
.m-pane.pane-chat .chat-list{flex:1 1 auto;min-height:0;max-height:none}
.m-pane-head{
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  padding:14px 16px 10px;font-size:12.5px;color:var(--sub-2)
}
.m-pane-head .t{font-weight:700;color:var(--tx);font-size:13.5px}
.m-pane-head .c{color:var(--gold);font-variant-numeric:tabular-nums}
.m-pane-head a{font-size:11.5px}
.m-empty{padding:44px 20px;text-align:center;font-size:13px;color:var(--sub-4);line-height:1.9}

/* 아래 메뉴 */
.m-tabs{
  display:grid;grid-template-columns:repeat(5,1fr);
  background:var(--card);border-top:1px solid var(--line);
  padding-bottom:env(safe-area-inset-bottom);
  box-shadow:0 -4px 16px rgba(15,23,42,.06);z-index:40
}
.m-tabs .m-tab{
  position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  min-height:58px;padding:0 2px;border:none;background:none;cursor:pointer;
  color:var(--sub-3);font-size:11px;font-weight:600;letter-spacing:-.03em;white-space:nowrap;
  -webkit-tap-highlight-color:transparent
}
.m-tabs .m-tab .ic{display:flex;align-items:center;justify-content:center;height:22px}
.m-tabs .m-tab .ic svg{
  width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round
}
.m-tabs .m-tab.on .ic svg{stroke-width:2}
.m-tabs .m-tab.on{color:var(--gold)}
.m-tabs .m-tab.on::before{
  content:'';position:absolute;top:0;left:18%;right:18%;height:2.5px;
  background:var(--gold);border-radius:0 0 3px 3px
}
.m-tabs .m-tab:active{background:var(--surface)}
.m-dot{
  position:absolute;top:9px;right:calc(50% - 17px);
  width:8px;height:8px;border-radius:50%;background:var(--warn);
  box-shadow:0 0 0 2px var(--card)
}
.m-dot[hidden]{display:none}
.m-dot.live{background:var(--ok);animation:livepulse 2s ease-in-out infinite}

/* 접수 화면 안쪽 여백 정리 */
.m-app .run-bar{margin:0;border-radius:0;border-left:none;border-right:none}
.m-app .m-form{padding:16px 16px 20px}
.m-app .m-list{padding:0 16px}
.m-app .entry-lock{margin:16px}
@media (max-width:900px){
  /* 메뉴 막대가 이미 아래에 있으므로 기록 버튼은 흐름대로 둡니다 */
  .m-app .m-form .m-btn{position:static;box-shadow:0 4px 14px rgba(49,130,246,.24)}
  .m-app .m-head{padding-top:16px}
  .m-app .chat-note{display:none}
}

/* ═══════════════════════════════════════════════════════════════
   모바일 관리자 페이지 — 가로 스크롤 없이 한 화면에 꽉 차게
   표를 그대로 줄이면 글자가 뭉개지므로 방마다 카드로 바꿉니다.
   ═══════════════════════════════════════════════════════════════ */
@media (max-width:760px){
  html,body{overflow-x:hidden}
  .page-2col{padding:14px 12px 40px;gap:14px;width:100%;box-sizing:border-box}
  .col-main,.col-side{width:100%;max-width:100%;flex:1 1 100%;min-width:0}
  .stats{grid-template-columns:repeat(2,1fr);gap:10px}
  .stat{padding:14px 14px}
  .stat .v{font-size:22px}

  .rooms-card{width:100%;box-sizing:border-box}
  .rooms-card > div:first-child{padding:16px 16px 12px;flex-wrap:wrap;gap:6px}
  .rooms-card .card-sub{font-size:11.5px;line-height:1.6}
  .rooms-card > div:first-child > div:last-child{display:none}
  .rooms-scroll{overflow-x:hidden;width:100%}

  /* 표 머리글은 감추고, 줄 하나하나를 카드로 */
  .grid-rooms.head{display:none}
  .grid-rooms{min-width:0;width:100%}
  .grid-rooms.week-band{top:0;border-radius:0;margin-top:0;padding:10px 16px 8px}
  .grid-rooms.row{
    display:grid;grid-template-columns:minmax(0,1fr) auto;
    grid-template-areas:
      "date   status"
      "couple status"
      "venue  venue"
      "mgr    mgr"
      "links  links";
    column-gap:10px;row-gap:2px;
    padding:14px 16px;border-bottom:8px solid var(--surface);align-items:start
  }
  .grid-rooms.row > div{padding:0}
  .grid-rooms.row .c-date{grid-area:date;font-size:12px;display:flex;gap:6px;align-items:baseline}
  .grid-rooms.row .c-date .sub-line{margin-top:0}
  .grid-rooms.row .c-couple{grid-area:couple;font-size:15px;font-weight:700;margin-top:2px}
  .grid-rooms.row .c-venue{grid-area:venue;margin-top:8px;white-space:normal}
  .grid-rooms.row .c-venue .ell{white-space:normal;display:inline}
  .grid-rooms.row .c-mgr{grid-area:mgr;margin-top:3px;white-space:normal}
  .grid-rooms.row .c-venue::before{content:'장소 ';color:var(--sub-4)}
  .grid-rooms.row .c-mgr::before{content:'대행인원 ';color:var(--sub-4)}
  .grid-rooms.row .linkcell{
    grid-area:links;padding:10px 12px !important;margin-top:10px;
    background:var(--surface);border-radius:var(--r-sm);gap:8px
  }
  .grid-rooms.row .linkrow{font-size:11.5px;min-height:26px}
  .grid-rooms.row .statuscell{
    grid-area:status;display:flex;flex-direction:column;align-items:flex-end;gap:8px;
    text-align:right;justify-self:end
  }
  .grid-rooms.row .row-act{white-space:nowrap}
  .empty{padding:30px 16px;font-size:12.5px;line-height:1.8}

  /* 방 안쪽(접수 시트)도 가로로 넘치지 않게 */
  .sheet-page{padding:14px 12px 40px;gap:14px;width:100%;box-sizing:border-box}
  .sheet-main,.side-guide{width:100%;max-width:100%;flex:1 1 100%;min-width:0}
  .topbar{padding:12px 14px}
}

.m-app[data-tab="chat"] .chat-form{padding-bottom:14px}

@media (max-width:760px){
  /* 오늘 배정 현황 줄이 화면 밖으로 밀려나지 않게 */
  .col-side .nowrap{white-space:normal;min-width:0;word-break:keep-all}
}

/* ── 모바일 명단 맨 아래 최종 합계 ─────────────────────────────
   위에 고정해 두지 않고, 명단을 끝까지 내리면 나오게 했습니다.  */
.m-final{
  margin:18px 16px 8px;padding:16px 18px 18px;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md)
}
.m-final .ttl{font-size:12px;color:var(--sub-3);font-weight:700;margin-bottom:12px}
.m-final .rows{display:flex;flex-direction:column;gap:10px}
.m-final .rows > div{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.m-final .lb{font-size:13px;color:var(--sub-2)}
.m-final .v{font-size:15px;font-weight:700;color:var(--tx)}
.m-final .big{
  margin-top:4px;padding-top:12px;border-top:1px solid var(--line)
}
.m-final .big .lb{font-size:13.5px;color:var(--tx-2);font-weight:600}
.m-final .big .v{font-size:22px;color:var(--gold);letter-spacing:-.02em}

/* ── 휴대폰으로 본 관리자 화면 ───────────────────────────────── */
.m-app.m-admin .m-head{background:var(--ink-2)}
.m-adm-chip{
  display:inline-block;padding:3px 9px;border-radius:6px;
  background:var(--gold);color:#fff;font-size:11px;font-weight:700;letter-spacing:-.01em
}
.m-out-btn{
  flex:none;padding:8px 12px;border:1px solid rgba(255,255,255,.28);border-radius:8px;
  color:var(--ink-fg-2);font-size:12px;font-weight:600;white-space:nowrap
}
.m-out-btn:hover{color:#fff}
.m-admbar{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  padding:12px 16px;border-bottom:1px solid var(--line-soft);background:var(--card)
}
.m-admbar .row-act{
  padding:8px 12px;border:1px solid var(--line);border-radius:8px;background:var(--card);
  color:var(--sub);font-size:12.5px;font-weight:600;cursor:pointer;min-height:38px;
  display:inline-flex;align-items:center
}
.m-admbar .row-act.final{background:var(--ink);border-color:var(--ink);color:#fff}
.m-admbar .row-act[hidden]{display:none}

/* ═══════════════════════════════════════════════════════════════
   접수측 표시 — 신랑측 / 신부측 / 양가
   현장에서 가장 자주 헷갈리는 항목이라 색을 완전히 갈라 놓았습니다.
   ═══════════════════════════════════════════════════════════════ */
.side-badge{
  display:inline-flex;align-items:center;gap:5px;
  padding:5px 11px;border-radius:999px;
  font-size:12.5px;font-weight:700;letter-spacing:-.02em;white-space:nowrap;
  border:1px solid transparent
}
.side-badge::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
.side-badge.sm{padding:3px 8px;font-size:11px}
.side-badge.lg{padding:7px 14px;font-size:14px}
.side-badge.side-groom{background:#eaf1ff;color:#1b64da;border-color:#c9dcff}
.side-badge.side-bride{background:#ffeef3;color:#d6336c;border-color:#ffd3e0}
.side-badge.side-both {background:#eef7ee;color:#118a4e;border-color:#cfeada}
/* 어두운 머리글 위에 얹을 때 */
.side-badge.on-ink{border-color:transparent}

/* ═══════════════════════════════════════════════════════════════
   예식 안내 카드 (휴대폰 "안내" 메뉴 · PC 오른쪽 안내단 공용)
   ═══════════════════════════════════════════════════════════════ */
.venue-card{overflow:hidden}
.venue-top{padding:18px 20px 16px;border-bottom:1px solid var(--line-soft)}
.venue-top.side-groom{background:#eaf1ff}
.venue-top.side-bride{background:#ffeef3}
.venue-top.side-both {background:#eef7ee}
.venue-side{
  font-size:13px;font-weight:800;letter-spacing:-.02em;
}
.venue-top.side-groom .venue-side{color:#1b64da}
.venue-top.side-bride .venue-side{color:#d6336c}
.venue-top.side-both  .venue-side{color:#118a4e}
.venue-couple{font-size:20px;color:var(--ink);margin-top:7px}

.venue-rows{padding:6px 20px 4px}
.vrow{display:flex;gap:14px;padding:12px 0;border-bottom:1px solid var(--line-soft)}
.vrow:last-child{border-bottom:none}
.vrow .lb{flex:none;width:66px;font-size:12.5px;color:var(--sub-3);font-weight:600;padding-top:1px}
.vrow .v{flex:1;min-width:0;font-size:14.5px;color:var(--tx);font-weight:600;word-break:keep-all}
.vrow .vsub{font-size:13px;color:var(--sub-2);font-weight:500;margin-top:4px}
.vmark{
  display:inline-block;margin-left:6px;padding:2px 7px;border-radius:5px;
  background:var(--gold);color:#fff;font-size:10.5px;font-weight:700;vertical-align:2px
}

.venue-map{padding:14px 20px 18px;border-top:1px solid var(--line-soft);background:var(--surface)}
.map-open{
  display:flex;align-items:center;gap:12px;
  padding:14px 14px;border-radius:var(--r-md);
  background:var(--card);border:1px solid var(--line);
  color:var(--tx);min-height:62px
}
.map-open:hover{border-color:var(--gold);color:var(--tx)}
.map-open .pin{
  flex:none;width:38px;height:38px;border-radius:10px;background:#03c75a;
  display:flex;align-items:center;justify-content:center
}
.map-open .pin svg{width:21px;height:21px;fill:none;stroke:#fff;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.map-open .tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.map-open .tx b{font-size:14px;font-weight:700;color:var(--tx)}
.map-open .tx .sub{font-size:11.5px;color:var(--sub-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.map-open .go{flex:none;font-size:20px;color:var(--sub-4);line-height:1}
.map-sub{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.map-sub .btn-ghost{text-align:center;min-height:44px;line-height:24px}

.venue-edit{padding:16px 20px 18px;border-top:1px solid var(--line-soft)}
.venue-hint{font-size:11.5px;color:var(--sub-3);line-height:1.75;margin-top:9px}

@media (max-width:900px){
  .venue-card{border-radius:var(--r-lg)}
  .map-sub .btn-ghost{min-height:48px;line-height:28px}
}

/* ── 모바일 머리글 — 고정하지 않고 함께 스크롤 ─────────────────── */
.m-app .m-head{flex:none}
.m-side{margin-top:9px}
.m-couple{font-size:20px;margin-top:4px}
/* 대화 화면에서는 머리글을 아예 접어 대화가 화면을 다 씁니다 */
.m-app[data-tab="chat"] .m-head{display:none}

/* 일정 만들기 · 장소 고치기 — 칸 아래 짧은 설명 */
.mini-hint{font-size:11.5px;color:var(--sub-4);margin-top:6px;line-height:1.6}
.mini-hint b{color:var(--sub-2)}
.venue-edit-ttl{
  font-size:13px;font-weight:700;color:var(--tx);margin-bottom:12px;
  display:flex;align-items:center;gap:7px
}
.venue-edit-ttl span{
  padding:2px 7px;border-radius:5px;background:var(--surface);
  color:var(--sub-3);font-size:10.5px;font-weight:700
}
.vsub.addr{color:var(--gold);font-weight:600}

/* ═══════════════════════════════════════════════════════════════
   축의금 인수인계 확인서
   휴대폰에서도 PC 에서도 화면 하나를 꽉 채우고,
   인쇄하면 종이 한 장으로 떨어지도록 만들었습니다.
   ═══════════════════════════════════════════════════════════════ */
body.ho-body{background:var(--paper);overflow:hidden}
body.no-scroll{overflow:hidden}
.ho-app{display:flex;flex-direction:column;height:100vh;height:100dvh}

.ho-bar{
  flex:none;display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:12px 16px;background:var(--card);border-bottom:1px solid var(--line);
  box-shadow:0 1px 3px rgba(17,24,39,.04)
}
.ho-bar-t{font-size:14.5px;font-weight:700;color:var(--tx);letter-spacing:-.03em}
.ho-back,.ho-print{
  flex:none;padding:8px 12px;border:1px solid var(--line);border-radius:8px;
  background:var(--card);color:var(--sub);font-size:12.5px;font-weight:600;cursor:pointer;
  white-space:nowrap
}
.ho-back:hover,.ho-print:hover{border-color:var(--gold);color:var(--gold)}
/* 돌아가기는 한눈에 보이게 (인쇄 버튼과 구분) */
.ho-back{
  background:var(--ink);border-color:var(--ink);color:#fff;font-weight:700;
  padding:9px 14px;border-radius:20px;text-decoration:none
}
.ho-back:hover{background:var(--ink-2);border-color:var(--ink-2);color:#fff}

.ho-scroll{
  flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:18px 14px calc(28px + env(safe-area-inset-bottom))
}

.ho-paper{
  max-width:760px;margin:0 auto;background:var(--card);
  border-radius:var(--r-lg);box-shadow:var(--shadow-form);
  padding:30px 26px 26px
}
.ho-title{
  font-size:21px;font-weight:800;color:var(--ink);text-align:center;
  letter-spacing:.06em;padding-bottom:14px;border-bottom:2.5px solid var(--gold)
}
.ho-brand{text-align:center;font-size:11.5px;color:var(--sub-3);margin-top:10px;font-weight:600}

.ho-table{width:100%;border-collapse:collapse;margin-top:22px;table-layout:fixed}
.ho-table th,.ho-table td{border:1px solid var(--line);padding:12px 12px;font-size:13.5px;vertical-align:middle}
.ho-table th{
  width:112px;background:var(--blue-tint);color:var(--gold-dark);
  font-weight:700;text-align:center;letter-spacing:.02em;word-break:keep-all
}
.ho-table td{color:var(--tx);word-break:break-word}
.ho-num{font-variant-numeric:tabular-nums;font-size:16px;font-weight:800;color:var(--ink)}
.ho-num.big{font-size:19px;color:var(--gold)}
.ho-live{display:block;font-size:11px;color:var(--sub-4);margin-top:5px;font-weight:500}
.ho-chk{display:inline-flex;align-items:center;gap:6px;margin-left:10px;font-size:12.5px;color:var(--sub-2);cursor:pointer}
.ho-chk input{width:17px;height:17px;accent-color:var(--gold)}
.ho-chk.on{color:var(--tx);font-weight:600;cursor:default}

.ho-oath{
  margin-top:22px;padding:16px 18px;background:var(--blue-tint);
  border-top:2.5px solid var(--gold);border-bottom:2.5px solid var(--gold);text-align:center
}
.ho-oath .t{font-size:14.5px;font-weight:700;color:var(--ink);letter-spacing:-.02em}
.ho-oath .s{font-size:12px;color:var(--sub-2);margin-top:8px;line-height:1.7}

.ho-signs{margin-top:22px;border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}
.ho-sign-row{
  display:flex;align-items:center;gap:14px;padding:16px 16px;
  border-bottom:1px solid var(--line-soft)
}
.ho-sign-row:last-child{border-bottom:none}
.ho-sign-row .who{
  flex:none;width:64px;font-size:13px;font-weight:700;color:var(--gold-dark);letter-spacing:.04em
}
.ho-sign-row .fields{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px}
.fx{display:flex;align-items:center;gap:10px;min-width:0}
.fx > span{flex:none;width:96px;font-size:12px;color:var(--sub-3);font-weight:600}
.fx .inp{flex:1;min-width:0}
.fx b{font-size:14.5px;color:var(--tx)}

.sign-slot{
  flex:none;width:150px;height:78px;border:1.5px dashed var(--line-2);border-radius:10px;
  display:flex;align-items:center;justify-content:center;background:var(--surface);
  cursor:pointer;overflow:hidden;position:relative
}
.sign-slot:hover{border-color:var(--gold);background:var(--blue-tint)}
.sign-slot.filled,.sign-slot.done{border-style:solid;border-color:var(--line);background:var(--card);cursor:default}
.sign-slot .sign-hint{font-size:11.5px;color:var(--sub-4);text-align:center;padding:0 8px;line-height:1.5}
.sign-slot .sign-img{max-width:94%;max-height:88%;object-fit:contain}

.ho-stamp{
  margin-top:18px;text-align:center;font-size:12px;color:var(--ok);font-weight:700
}

.ho-actions{max-width:760px;margin:18px auto 0}
.ho-actions .btn-dark{min-height:54px;font-size:16px}
.ho-note{font-size:11.5px;color:var(--sub-3);line-height:1.8;margin-top:12px;text-align:center}

/* 서명 그리는 상자 */
.sign-modal{
  position:fixed;top:0;left:0;right:0;bottom:0;inset:0;z-index:200;background:rgba(15,23,42,.55);
  display:flex;align-items:center;justify-content:center;padding:16px
}
.sign-modal[hidden]{display:none}
.sign-box{
  width:100%;max-width:560px;background:var(--card);border-radius:16px;
  padding:16px;box-shadow:0 20px 60px rgba(15,23,42,.3)
}
.sign-head{display:flex;align-items:center;justify-content:space-between;font-size:14.5px;font-weight:700;color:var(--tx)}
.sign-head button{border:none;background:none;font-size:17px;color:var(--sub-3);cursor:pointer;padding:4px 6px}
.sign-pad{
  display:block;width:100%;height:210px;margin-top:12px;
  border:2px dashed var(--line-2);border-radius:12px;background:#fff;touch-action:none;cursor:crosshair
}
.sign-guide{font-size:11.5px;color:var(--sub-4);text-align:center;margin-top:9px}
.sign-btns{display:grid;grid-template-columns:1fr 1.6fr;gap:10px;margin-top:12px}
.sign-btns .btn-ghost,.sign-btns .btn-dark{min-height:50px}

/* 방 화면에 다는 확인서 메뉴 카드 */
.ho-entry{
  display:flex;align-items:center;gap:12px;padding:16px 16px;
  color:var(--tx);background:var(--card)
}
.ho-entry:hover{border-color:var(--gold);color:var(--tx)}
.ho-entry .ic{
  flex:none;width:40px;height:40px;border-radius:11px;background:var(--blue-tint);
  display:flex;align-items:center;justify-content:center
}
.ho-entry .ic svg{width:22px;height:22px;fill:none;stroke:var(--gold);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.ho-entry .tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.ho-entry .tx b{font-size:14.5px;font-weight:700}
.ho-entry .tx .sub{font-size:11.5px;color:var(--sub-3);line-height:1.5}
.ho-entry .go{flex:none;font-size:20px;color:var(--sub-4);line-height:1}
/* 서명이 끝나도 카드 색은 나머지 서류와 똑같이 둡니다 (체크만 표시) */
.ho-entry.done .go{color:var(--gold);font-size:17px;font-weight:800}
.ho-tip{
  margin-top:14px;padding:14px 16px;background:var(--surface);border-radius:var(--r-md);
  font-size:12px;color:var(--sub-2);line-height:1.85
}
.m-dot.ok{background:var(--ok)}

@media (max-width:640px){
  .ho-paper{padding:22px 16px 20px;border-radius:var(--r-md)}
  .ho-title{font-size:17px;letter-spacing:.02em}
  .ho-table th{width:88px;padding:10px 6px;font-size:12px}
  .ho-table td{padding:10px 10px;font-size:13px}
  .ho-sign-row{flex-direction:column;align-items:stretch;gap:12px}
  .ho-sign-row .who{width:auto}
  .fx{flex-direction:column;align-items:stretch;gap:6px}
  .fx > span{width:auto}
  .sign-slot{width:100%;height:96px}
  .sign-pad{height:200px}
}

/* 인쇄 · PDF 저장 — 화면 장식은 빼고 종이만 */
@media print{
  body.ho-body{background:#fff;overflow:visible}
  .ho-app{height:auto;display:block}
  .ho-bar,.ho-actions,.sign-modal,.toast{display:none !important}
  .ho-scroll{overflow:visible;padding:0}
  .ho-paper{max-width:none;box-shadow:none;border-radius:0;padding:0}
  .ho-live{display:none}
  .ho-table th{background:#eef4ff !important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .ho-oath{background:#f7fafc !important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
}

/* 손님 화면 — 서류 내려받기 카드 묶음 */
.doc-sec .ho-entry{margin-bottom:10px}
.doc-sec .ho-entry:last-child{margin-bottom:0}
.ho-entry.waiting{opacity:.72}
.ho-entry.waiting .ic{background:var(--surface)}
.ho-entry.waiting .ic svg{stroke:var(--sub-4)}
.ho-entry.waiting .go{color:var(--sub-4)}

/* ═══════════════════════════════════════════════════════════════
   서류 보기 — 완성된 서류를 화면 가득
   위쪽에 돌아가기 · 내려받기 아이콘, 아래는 종이 한 장.
   ═══════════════════════════════════════════════════════════════ */
body.dv-body{background:var(--paper);overflow:hidden}
.dv-app{display:flex;flex-direction:column;height:100vh;height:100dvh}

.dv-bar{
  flex:none;display:flex;align-items:center;gap:10px;
  padding:10px 12px;background:var(--ink);color:var(--ink-fg);
  padding-top:calc(10px + env(safe-area-inset-top))
}
.dv-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;text-align:center}
.dv-t b{font-size:14.5px;font-weight:700;letter-spacing:-.03em;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dv-t span{font-size:11px;color:var(--ink-fg-3);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dv-icon{
  flex:none;width:42px;height:42px;border-radius:11px;
  display:flex;align-items:center;justify-content:center;
  border:1px solid rgba(255,255,255,.22);background:transparent;cursor:pointer;
  -webkit-tap-highlight-color:transparent
}
.dv-icon svg{
  width:21px;height:21px;fill:none;stroke:var(--ink-fg);stroke-width:1.9;
  stroke-linecap:round;stroke-linejoin:round
}
.dv-icon:hover{background:rgba(255,255,255,.10)}
.dv-icon:active{background:rgba(255,255,255,.18)}
.dv-icon b{font-size:9px;font-weight:800;letter-spacing:.04em;line-height:1;margin-top:1px;color:var(--ink-fg)}
.dv-icon.dl,.dv-icon.xls{width:auto;min-width:46px;padding:0 9px;flex-direction:column;gap:2px}
.dv-icon.dl svg,.dv-icon.xls svg{width:17px;height:17px}
.dv-icon.xls{background:#1D6F42;border-color:#1D6F42}
.dv-icon.xls:hover{background:#175A35;border-color:#175A35}
.dv-icon.dl{background:var(--gold);border-color:var(--gold)}
.dv-icon.dl:hover{background:var(--gold-dark);border-color:var(--gold-dark)}

.dv-scroll{
  flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:16px 12px calc(28px + env(safe-area-inset-bottom))
}
.dv-sheet{
  max-width:820px;margin:0 auto;background:var(--card);
  border-radius:var(--r-lg);box-shadow:var(--shadow-form);
  padding:26px 22px;overflow-x:auto
}
/* 종이 안에 또 종이를 그리지 않도록 */
.dv-sheet .ho-paper.bare,
.dv-sheet .print-sheet.bare{
  max-width:none;margin:0;padding:0;box-shadow:none;border-radius:0;background:transparent
}
.dv-sheet .print-table{width:100%;min-width:520px}

@media (max-width:640px){
  .dv-t b{font-size:13.5px}
  .dv-scroll{padding:12px 10px calc(20px + env(safe-area-inset-bottom))}
  .dv-sheet{padding:18px 14px;border-radius:var(--r-md)}
}

/* 인쇄하면 위 막대는 빼고 서류만 */
@media print{
  body.dv-body{background:#fff;overflow:visible}
  .dv-app{height:auto;display:block}
  .dv-bar{display:none !important}
  .dv-scroll{overflow:visible;padding:0}
  .dv-sheet{max-width:none;box-shadow:none;border-radius:0;padding:0;overflow:visible}
}

/* 서류 보기 안의 접수내역서 — 좁은 화면에서도 읽히게 */
.dv-sheet .print-sheet.bare .serif{font-size:19px !important;line-height:1.35}
.dv-sheet .tbl-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-top:20px}
.dv-sheet .tbl-scroll .print-table{margin-top:0}
@media (max-width:640px){
  .dv-sheet .print-sheet.bare .serif{font-size:16.5px !important}
  /* 요약 네 칸은 두 줄로 */
  .dv-sheet .print-sheet.bare > div:nth-of-type(2){grid-template-columns:repeat(2,1fr) !important}
  .dv-sheet{padding:16px 12px}
  .dv-sheet .print-table{font-size:12px;min-width:460px}
  .dv-sheet .print-table th,.dv-sheet .print-table td{padding:9px 6px}
}

/* ── 정산 완료 ─────────────────────────────────────────────────
   이걸 눌러야 혼주 화면에서 접수내역서 · 정산확인서가 열립니다. */
.run-bar.settled{background:#eaf1ff;border-bottom-color:#c9dcff}
.run-bar.settled .run-state b{color:var(--gold-dark)}
.run-bar.settled .run-dot{background:var(--gold)}
.run-settle{background:var(--gold);color:#fff}
.run-settle:hover{background:var(--gold-dark)}
.run-unsettle{
  background:var(--card);color:var(--sub-2);border:1px solid var(--line) !important;
  font-weight:600 !important
}
.run-unsettle:hover{border-color:var(--warn) !important;color:var(--warn)}
.st-settled{background:var(--gold);color:#fff;box-shadow:0 0 0 3px rgba(49,130,246,.16)}

/* ── 확인서 메뉴 잠금 (정산 완료 전) ────────────────────────── */
.m-tabs .m-tab.locked{opacity:.42}
.m-tabs .m-tab.locked .ic svg{stroke-dasharray:2.5 3}
.ho-locked{
  display:flex;flex-direction:column;align-items:center;gap:12px;
  padding:38px 22px 30px;text-align:center;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg)
}
.ho-locked .ic{
  width:52px;height:52px;border-radius:14px;background:var(--card);
  display:flex;align-items:center;justify-content:center;border:1px solid var(--line)
}
.ho-locked .ic svg{
  width:26px;height:26px;fill:none;stroke:var(--sub-3);stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round
}
.ho-locked b{font-size:15px;color:var(--tx);letter-spacing:-.02em}
.ho-locked span:not(.ic){font-size:13px;color:var(--sub-2);line-height:1.85}
.ho-locked .btn-ghost{margin-top:6px;min-height:46px;padding:12px 20px}

/* ── 오래된 안드로이드 크롬 대비 ──────────────────────────────
   aspect-ratio 를 모르는 브라우저에서도 영상 칸이 찌그러지지 않게. */
@supports not (aspect-ratio: 16 / 9){
  .video-box{height:0;padding-top:56.25%}
}

/* ═══════════════════════════════════════════════════════════════
   업무 위탁 계약서 — 회원가입 마지막 단계 (대행자는 서명만)
   ═══════════════════════════════════════════════════════════════ */
body.ct-body{background:var(--paper);overflow:hidden}
.ct-app{display:flex;flex-direction:column;height:100vh;height:100dvh}
.ct-bar{
  flex:none;display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:12px 14px;background:var(--ink);color:var(--ink-fg);
  padding-top:calc(12px + env(safe-area-inset-top))
}
.ct-bar-t{flex:1;text-align:center;font-size:14.5px;font-weight:700;letter-spacing:-.03em}
.ct-back{
  flex:none;padding:8px 11px;border:1px solid rgba(255,255,255,.24);border-radius:8px;
  color:var(--ink-fg-2);font-size:12px;font-weight:600;white-space:nowrap
}
.ct-back:hover{color:#fff}
.ct-dl{
  flex:none;width:40px;height:40px;border-radius:10px;background:var(--gold);
  display:flex;align-items:center;justify-content:center
}
.ct-dl svg{width:20px;height:20px;fill:none;stroke:#fff;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.ct-scroll{
  flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:16px 12px calc(28px + env(safe-area-inset-bottom))
}
.ct-paper{
  max-width:820px;margin:0 auto;background:var(--card);
  border-radius:var(--r-lg);box-shadow:var(--shadow-form);padding:30px 28px 28px
}

.ct-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;
  padding-bottom:14px;border-bottom:1px solid var(--line)}
.ct-logo{font-size:21px;font-weight:800;color:var(--ink);letter-spacing:-.04em}
.ct-latin{font-size:9.5px;font-weight:800;color:var(--gold);letter-spacing:.22em;margin-top:3px}
.ct-co{text-align:right;display:flex;flex-direction:column;gap:3px;min-width:0}
.ct-co b{font-size:11.5px;color:var(--gold);font-weight:700}
.ct-co span{font-size:10.5px;color:var(--sub-2);word-break:keep-all}

.ct-title{
  margin:26px 0 12px;font-size:19px;font-weight:800;color:var(--ink);
  text-align:center;letter-spacing:.14em;padding-bottom:12px;border-bottom:2px solid var(--gold)
}

.ct-party{width:100%;border-collapse:collapse;margin-top:20px;table-layout:fixed}
.ct-party th,.ct-party td{border:1px solid var(--line);padding:13px 14px;vertical-align:middle}
.ct-party th{width:64px;background:var(--blue-tint);color:var(--gold-dark);font-size:13px;font-weight:800;text-align:center}
.ct-party td{font-size:13px;color:var(--tx)}
.ct-party .ln{display:flex;align-items:center;gap:8px;flex-wrap:wrap;line-height:1.9}
.ct-party .ln.sub{color:var(--sub);font-size:12.5px}
.seal-wrap{display:inline-flex;align-items:center}

.ct-intro{font-size:12.5px;color:var(--tx-2);line-height:1.9;margin:20px 0 8px}
.ct-clause{
  margin-top:18px;padding:8px 12px;background:var(--surface);
  border-left:3px solid var(--gold);font-size:13px;font-weight:800;color:var(--ink)
}
.ct-p{font-size:12.5px;color:var(--tx-2);line-height:1.9;margin:10px 0 0;word-break:keep-all}
.ct-ol{margin:10px 0 0;padding-left:26px;font-size:12.5px;color:var(--tx-2);line-height:2}

.ct-sign{
  margin-top:30px;padding:20px 18px;background:#fafbfc;border:1px solid var(--line);border-radius:var(--r-md)
}
.ct-date{text-align:center;font-size:14px;color:var(--ink);font-weight:600;letter-spacing:.04em}
.ct-row{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-top:16px}
.ct-row .who{font-size:13px;font-weight:800;color:var(--gold-dark)}
.ct-row .val{font-size:13.5px;color:var(--ink);font-weight:600}
.ct-row .mark{flex:none;display:flex;align-items:center;justify-content:center;min-width:120px}
.ct-slot{width:120px;height:52px}
.sign-img.done{max-width:110px;max-height:46px;object-fit:contain}

.ct-actions{max-width:820px;margin:16px auto 0}
.ct-actions .btn-dark{min-height:54px;font-size:16px}
.ct-note{
  padding:14px 16px;background:var(--blue-tint);border:1px solid var(--blue-line);
  border-radius:var(--r-md);font-size:12.5px;color:var(--gold-dark);line-height:1.9;margin-bottom:12px
}
.ct-stamp{text-align:center;font-size:13px;color:var(--ok);font-weight:800;margin-bottom:12px}

@media (max-width:640px){
  .ct-paper{padding:20px 15px 20px;border-radius:var(--r-md)}
  .ct-title{font-size:15.5px;letter-spacing:.04em;margin-top:20px}
  .ct-logo{font-size:18px}
  .ct-co{text-align:left}
  .ct-party th{width:44px;padding:11px 4px;font-size:12px}
  .ct-party td{padding:11px 10px;font-size:12.5px}
  .ct-row{flex-wrap:wrap;justify-content:space-between}
  .ct-slot{width:110px;height:50px}
}

@media print{
  body.ct-body{background:#fff;overflow:visible}
  .ct-app{height:auto;display:block}
  .ct-scroll{overflow:visible;padding:0}
  .ct-paper{max-width:none;box-shadow:none;border-radius:0;padding:0}
}
.ppl-birth{font-size:11.5px;color:var(--sub-3);margin-top:3px}
.ppl-ct{display:inline-block;margin-top:5px;font-size:11.5px;font-weight:600;color:var(--gold)}
.ppl-ct.none{color:var(--sub-4);font-weight:500}
.ct-cell{display:flex;align-items:center;justify-content:space-between;gap:14px}
.ct-lines{flex:1;min-width:0}
.ct-mark{flex:none;display:flex;align-items:center;justify-content:center;min-width:112px}

@media (max-width:640px){
  /* 좁은 화면에서는 도장·서명을 줄 아래로 내립니다 */
  .ct-cell{flex-direction:column;align-items:stretch;gap:10px}
  .ct-mark{align-self:flex-end;min-width:0}
  .ct-party th{width:38px;font-size:11.5px;padding:10px 2px}
  .ct-party td{padding:12px 10px}
  .ct-party .ln{line-height:1.75;font-size:12.5px}
  .ct-latin{letter-spacing:.16em}
}
.ct-mirror{display:inline-flex;align-items:center;justify-content:center;min-width:96px;min-height:44px}
.ct-mirror .ct-in{font-size:13px;color:var(--sub-3);font-weight:600}
.ct-mirror .sign-img{max-width:96px;max-height:40px;object-fit:contain}
.ct-ok{
  display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;
  padding:22px 18px;background:#eafaf3;border:1px solid #bdecd8;border-radius:var(--r-md);margin-bottom:14px
}
.ct-ok .ic{
  width:44px;height:44px;border-radius:50%;background:var(--ok);
  display:flex;align-items:center;justify-content:center
}
.ct-ok .ic svg{width:24px;height:24px;fill:none;stroke:#fff;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.ct-ok b{font-size:15.5px;color:#00875a;letter-spacing:-.02em}
.ct-ok span:not(.ic){font-size:12.5px;color:var(--sub);line-height:1.85}

/* ═══════════════════════════════════════════════════════════════
   현장 이용 가이드 — 영상 + 실무 규칙
   ═══════════════════════════════════════════════════════════════ */
body.gd-body{background:var(--paper);overflow:hidden}
.gd-app{display:flex;flex-direction:column;height:100vh;height:100dvh}
.gd-bar{
  flex:none;display:flex;align-items:center;gap:8px;padding:12px 14px;
  background:var(--ink);color:var(--ink-fg);
  padding-top:calc(12px + env(safe-area-inset-top))
}
/* 돌아가기 — 어두운 바 위에서도 확실히 보이는 알약 버튼 */
.gd-back{
  flex:none;display:inline-flex;align-items:center;gap:2px;
  padding:8px 14px;border-radius:20px;text-decoration:none;
  background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.28);
  color:#fff;font-size:13px;font-weight:700;letter-spacing:-.03em;white-space:nowrap;
  transition:background .12s ease
}
.gd-back:hover{background:rgba(255,255,255,.28);color:#fff}
.gd-bar-pad{flex:none;width:96px}
/* 맨 아래 큰 돌아가기 */
.gd-back-big{
  display:block;margin:0 0 6px;padding:16px;border-radius:var(--r-lg);text-align:center;
  background:var(--gold);color:#fff;text-decoration:none;
  font-size:15px;font-weight:700;letter-spacing:-.03em;
  box-shadow:0 3px 10px rgba(27,100,218,.22)
}
.gd-back-big:hover{background:var(--gold-dark);color:#fff}
.gd-bar-t{flex:1;text-align:center;font-size:14.5px;font-weight:700;letter-spacing:-.03em}
.gd-scroll{
  flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:0 0 calc(40px + env(safe-area-inset-bottom))
}
.gd-wrap{max-width:820px;margin:0 auto;padding:0 16px}

.gd-hero{padding:30px 4px 24px;text-align:center}
.gd-hero .brand-mark{
  font-size:11px;letter-spacing:.24em;color:var(--gold);font-weight:700;margin-bottom:14px
}
.gd-hero h1{font-size:23px;font-weight:800;letter-spacing:-.045em;margin:0 0 12px;color:var(--tx)}
.gd-hero p{font-size:13.5px;color:var(--sub);line-height:1.9;margin:0;letter-spacing:-.02em}
.gd-hero b{color:var(--tx)}

.gd-sec{
  background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:20px 18px 22px;margin-bottom:14px
}
.gd-sec.red{border-color:#ffd4d8;background:#fffafa}
.gd-sec.gold{border-color:var(--blue-line);background:#fbfdff}
.gd-h{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.gd-no{
  flex:none;min-width:24px;height:24px;line-height:24px;padding:0 7px;border-radius:12px;
  background:var(--ink);color:#fff;font-size:12px;font-weight:800;text-align:center;
  letter-spacing:-.02em
}
.gd-sec.red .gd-no{background:var(--warn)}
.gd-sec.gold .gd-no{background:var(--gold)}
.gd-h h2{font-size:16px;font-weight:800;letter-spacing:-.04em;margin:0;color:var(--tx);line-height:1.4}

/* 영상 — 휴대폰편 · PC편 */
.gd-switch{display:flex;gap:8px;margin-bottom:12px}
.gd-switch button{
  flex:1;padding:11px 8px;border-radius:10px;cursor:pointer;font-family:inherit;
  border:1px solid var(--line-2);background:#fff;color:var(--sub-2);
  font-size:13px;font-weight:700;letter-spacing:-.03em;transition:all .12s ease
}
.gd-switch button:hover{border-color:var(--gold);color:var(--gold-dark)}
.gd-switch button.on{background:var(--ink);border-color:var(--ink);color:#fff}
.gd-play[hidden]{display:none !important}
.gd-play .gd-v{
  display:block;width:100%;max-height:60vh;background:#0d1016;object-fit:contain;
  border-radius:var(--r-md);box-shadow:0 6px 24px rgba(17,24,39,.14)
}
.gd-vnote{margin-top:10px;font-size:11.5px;color:var(--sub-3);line-height:1.7}
.gd-vcap{margin-top:12px;font-size:12px;color:var(--sub-2);line-height:1.85;letter-spacing:-.02em}
.gd-vcap b{color:var(--tx-3)}
.gd-vnone{
  padding:34px 20px;text-align:center;background:var(--surface);border-radius:var(--r-md);
  font-size:13px;color:var(--sub-3);line-height:1.8
}

/* 2인 1팀 */
.gd-team{display:flex;flex-direction:column;gap:10px}
.gd-role{padding:14px 15px;border-radius:var(--r-md);background:var(--surface)}
.gd-role.main{background:var(--blue-tint)}
.gd-role .who{
  display:inline-block;font-size:12.5px;font-weight:800;letter-spacing:-.03em;
  color:var(--tx);margin-bottom:7px;padding:3px 9px;border-radius:20px;background:#fff
}
.gd-role.main .who{color:var(--gold-dark)}
.gd-role .what{display:block;font-size:13px;color:var(--sub);line-height:1.85;letter-spacing:-.02em}
.gd-role .what b,.gd-note b{color:var(--tx)}
.gd-note{margin-top:12px;font-size:12.5px;color:var(--sub-2);line-height:1.8}

/* 규칙 블록 */
.gd-lead{font-size:14px;color:var(--tx-2);line-height:1.9;letter-spacing:-.025em;margin-bottom:14px}
.gd-lead b{color:var(--warn);font-weight:800}
.gd-sec.gold .gd-lead b{color:var(--gold-dark)}
.gd-two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.gd-ok,.gd-no2{padding:14px 14px 15px;border-radius:var(--r-md);background:#fff;border:1px solid var(--line)}
.gd-ok{border-color:#bfe9d5}
.gd-no2{border-color:#ffd4d8}
.gd-ok .t,.gd-no2 .t{font-size:12.5px;font-weight:800;letter-spacing:-.03em;margin-bottom:9px}
.gd-ok .t{color:#00875a}
.gd-no2 .t{color:var(--warn)}
.gd-ok ul,.gd-no2 ul{margin:0;padding-left:16px}
.gd-ok li,.gd-no2 li{font-size:12.5px;color:var(--sub);line-height:1.75;margin-bottom:7px;letter-spacing:-.02em}
.gd-ok li:last-child,.gd-no2 li:last-child{margin-bottom:0}
.gd-ok li b,.gd-no2 li b{color:var(--tx)}
.gd-why{
  margin-top:12px;padding:13px 14px;background:#fff;border-radius:var(--r-md);
  border:1px dashed #ffc9ce;font-size:12.5px;color:var(--sub);line-height:1.85;letter-spacing:-.02em
}
.gd-why b{color:var(--warn)}

/* 계수 순서 */
.gd-steps{margin:0;padding-left:20px;counter-reset:none}
.gd-steps li{font-size:13px;color:var(--sub);line-height:1.8;margin-bottom:9px;letter-spacing:-.02em}
.gd-steps li:last-child{margin-bottom:0}
.gd-steps li b{color:var(--tx)}
.gd-bundle{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}
.gd-bundle .b{
  padding:14px 12px;border-radius:var(--r-md);background:#fff;border:1px solid var(--blue-line);
  text-align:center
}
.gd-bundle .n{display:block;font-size:12.5px;font-weight:800;color:var(--tx);letter-spacing:-.03em}
.gd-bundle .x{
  display:block;font-size:20px;font-weight:800;color:var(--gold-dark);margin:5px 0 3px;
  font-variant-numeric:tabular-nums
}
.gd-bundle .e{display:block;font-size:11.5px;color:var(--sub-3)}
.gd-warn{
  margin-top:14px;padding:13px 14px;background:#fff5f5;border-radius:var(--r-md);
  font-size:12.5px;color:#c0303c;line-height:1.85;letter-spacing:-.02em
}
.gd-warn b{font-weight:800}

/* 접수 기록 방법 */
.gd-list{margin:0;padding-left:18px}
.gd-list li{font-size:13px;color:var(--sub);line-height:1.85;margin-bottom:9px;letter-spacing:-.02em}
.gd-list li:last-child{margin-bottom:0}
.gd-list li b{color:var(--tx)}

/* 하루 흐름 */
.gd-flow{display:flex;flex-direction:column}
.gd-step{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--line-soft)}
.gd-step:last-child{border-bottom:0;padding-bottom:0}
.gd-step .n{
  flex:none;width:24px;height:24px;line-height:24px;text-align:center;border-radius:12px;
  background:var(--surface);color:var(--sub-2);font-size:11.5px;font-weight:800
}
.gd-step > div{flex:1;min-width:0}
.gd-step b{display:block;font-size:13.5px;font-weight:700;color:var(--tx);letter-spacing:-.03em;margin-bottom:3px}
.gd-step span{display:block;font-size:12.5px;color:var(--sub-2);line-height:1.75;letter-spacing:-.02em}
.gd-step span b{display:inline;font-size:inherit;color:var(--tx-3);margin:0}

.gd-end{
  margin:6px 0 10px;padding:18px 16px;background:var(--ink);color:var(--ink-fg-2);
  border-radius:var(--r-lg);text-align:center;font-size:13px;line-height:1.9;letter-spacing:-.02em
}
.gd-end b{color:#fff}

/* 방 화면에 다는 가이드 카드 — 다른 카드에 묻히지 않게 색을 채웁니다 */
.gd-entry{
  display:flex;align-items:center;gap:13px;padding:17px 16px;text-decoration:none;
  border:0;border-radius:var(--r-lg);
  background:linear-gradient(135deg,var(--gold-dark) 0%,var(--gold) 62%,#4a97ff 100%);
  box-shadow:0 3px 10px rgba(27,100,218,.22), 0 10px 26px rgba(27,100,218,.20);
  position:relative;overflow:hidden;transition:transform .12s ease,box-shadow .12s ease
}
.gd-entry::after{
  content:"";position:absolute;right:-34px;top:-34px;width:112px;height:112px;border-radius:50%;
  background:rgba(255,255,255,.10);pointer-events:none
}
.gd-entry:hover{transform:translateY(-1px);box-shadow:0 5px 14px rgba(27,100,218,.28), 0 14px 32px rgba(27,100,218,.26)}
.gd-entry .ic{
  flex:none;width:44px;height:44px;border-radius:50%;background:#fff;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 2px 8px rgba(0,0,0,.16)
}
.gd-entry .ic svg{width:20px;height:20px;stroke:none;fill:var(--gold-dark);margin-left:2px}
.gd-entry .tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.gd-entry .tag{
  align-self:flex-start;font-size:10.5px;font-weight:800;letter-spacing:.02em;
  color:#fff;background:rgba(255,255,255,.24);border-radius:20px;padding:3px 8px;margin-bottom:3px
}
.gd-entry .tx b{font-size:15.5px;font-weight:800;color:#fff;letter-spacing:-.035em}
.gd-entry .tx .sub{font-size:11.5px;color:rgba(255,255,255,.86);line-height:1.55;letter-spacing:-.02em}
.gd-entry .go{flex:none;font-size:22px;color:rgba(255,255,255,.9);line-height:1}
.ct-next{margin-top:16px}
.ct-next-t{font-size:12px;color:var(--sub-3);font-weight:700;letter-spacing:-.02em;margin-bottom:8px}

@media (max-width:560px){
  .gd-two,.gd-bundle{grid-template-columns:1fr}
  .gd-hero{padding:24px 4px 20px}
  .gd-hero h1{font-size:21px}
  .gd-sec{padding:18px 15px 20px}
}

@media print{
  body.gd-body{background:#fff;overflow:visible}
  .gd-app{height:auto;display:block}
  .gd-bar,.gd-video,.gd-vcap,.gd-vnone{display:none !important}
  .gd-scroll{overflow:visible;padding:0}
  .gd-sec{break-inside:avoid;box-shadow:none}
}

/* 대행방 옆 안내 카드 — 역할 · 주의사항 */
.g-role{padding:12px 13px;border-radius:var(--r-md);background:var(--surface);margin-bottom:4px}
.g-role.main{background:var(--blue-tint)}
.g-role > b{
  display:inline-block;font-size:11.5px;font-weight:800;color:var(--tx);letter-spacing:-.03em;
  padding:2px 8px;border-radius:20px;background:#fff;margin-bottom:6px
}
.g-role.main > b{color:var(--gold-dark)}
.g-role > span{display:block;font-size:12px;color:var(--sub);line-height:1.8}
.g-caution{border-color:#ffd4d8}
.g-rule{padding:14px 14px 15px;border-radius:var(--r-md);margin-bottom:12px}
.g-rule:last-child{margin-bottom:0}
.g-rule.red{background:#fffafa;border:1px solid #ffd4d8}
.g-rule.gold{background:#fbfdff;border:1px solid var(--blue-line)}
.g-rule-t{font-size:13px;font-weight:800;letter-spacing:-.035em;margin-bottom:9px;line-height:1.45}
.g-rule.red .g-rule-t{color:var(--warn)}
.g-rule.gold .g-rule-t{color:var(--gold-dark)}
.g-yn{display:grid;grid-template-columns:1fr;gap:8px;margin-top:10px}
.g-yn > div{padding:11px 11px 12px;border-radius:var(--r-sm);background:#fff;border:1px solid var(--line)}
.g-yn .ok{border-color:#bfe9d5}
.g-yn .no{border-color:#ffd4d8}
.g-yn > div > b{display:block;font-size:11.5px;font-weight:800;margin-bottom:7px;letter-spacing:-.03em}
.g-yn li b{color:var(--tx)}
.g-yn .ok > b{color:#00875a}
.g-yn .no > b{color:var(--warn)}
.g-yn ul{margin:0;padding-left:15px}
.g-yn li{font-size:11.5px;color:var(--sub);line-height:1.7;margin-bottom:5px}
.g-yn li:last-child{margin-bottom:0}
.g-why{
  margin-top:10px;padding:11px 12px;background:#fff;border:1px dashed #ffc9ce;
  border-radius:var(--r-sm);font-size:11.5px;color:var(--sub);line-height:1.8
}
.g-steps{margin:10px 0 0;padding-left:18px}
.g-steps li{font-size:12px;color:var(--sub);line-height:1.75;margin-bottom:6px}
.g-steps li:last-child{margin-bottom:0}
.g-bundle{display:flex;gap:8px;margin-top:11px;flex-wrap:wrap}
.g-bundle span{
  flex:1 1 46%;padding:9px 8px;border-radius:var(--r-sm);background:#fff;
  border:1px solid var(--blue-line);text-align:center;font-size:11.5px;color:var(--sub-2)
}
.g-bundle span b{display:block;color:var(--gold-dark);font-size:12.5px;margin-bottom:2px}

/* 가이드 — 괄호로 붙는 짧은 단서 */
.gd-sub{
  display:block;margin-top:3px;font-size:11.5px;color:var(--sub-3);
  font-weight:500;letter-spacing:-.02em;line-height:1.55
}
.gd-ok .gd-sub{color:#00875a}
.gd-no2 .gd-sub{color:var(--warn)}
.gd-sec.gold .gd-steps .gd-sub{color:var(--gold-dark)}
.gd-steps li{margin-bottom:11px}

/* ── 매니저 표시 ─────────────────────────────────────────
   관리자가 지정한 한 사람. 대화창·인원목록·본인 화면에 같은 배지로 나옵니다. */
.mgr-chip{
  display:inline-flex;align-items:center;flex:none;
  padding:3px 9px;border-radius:20px;font-size:11px;font-weight:800;letter-spacing:-.02em;
  color:#fff;background:linear-gradient(135deg,#7b4bd6,#a06bf0);
  box-shadow:0 1px 4px rgba(123,75,214,.30)
}
.mgr-chip.on-ink{margin-left:6px;font-size:10.5px;padding:2px 7px}
.chat-tag.mgr{background:#7b4bd6;color:#fff}
.chat-sub .chat-tag.mgr{margin-left:6px}

.ppl-mgr{
  margin-left:6px;padding:2px 7px;border-radius:20px;font-size:10.5px;font-weight:800;
  color:#fff;background:linear-gradient(135deg,#7b4bd6,#a06bf0);letter-spacing:-.02em
}
.ppl-row.mgr{background:#faf7ff}
.ppl-row.mgr .ppl-ava{background:#7b4bd6;color:#fff}
.ppl-mgr-btn{
  margin-top:7px;padding:5px 9px;border-radius:8px;cursor:pointer;
  border:1px solid var(--line-2);background:#fff;color:var(--sub-2);
  font-size:11px;font-weight:700;letter-spacing:-.02em;white-space:nowrap;
  font-family:inherit;transition:all .12s ease
}
.ppl-mgr-btn:hover{border-color:#7b4bd6;color:#7b4bd6}
.ppl-mgr-btn.on{background:#7b4bd6;border-color:#7b4bd6;color:#fff}
.ppl-mgr-btn.on:hover{background:#6a3cc4;color:#fff}
.ppl-mgr-btn:disabled{opacity:.5;cursor:default}
.ppl-mgr-btn.ppl-out{margin-left:4px;color:var(--sub-3)}
.ppl-mgr-btn.ppl-out:hover{border-color:#D62828;color:#D62828;background:#fff5f5}
.mgr-chip[hidden],.chat-tag[hidden],.ppl-mgr[hidden]{display:none !important}

/* 방 만들기 · 예식 정보 — 나중에 넣어도 되는 칸 표시 */
.field-label .opt{font-weight:500;color:var(--sub-4);font-size:11px;margin-left:4px}
.venue-rows .vnone{color:var(--sub-4);font-weight:400}

/* 관리자 메시지 띠 — 누르면 대화로 이동 */
.call-bar.msg-bar{
  background:#2F6FF0;color:#fff;box-shadow:0 10px 30px rgba(47,111,240,.45);
  border:2px solid rgba(255,255,255,.9);cursor:pointer;text-align:left;font-family:inherit;padding-right:18px;
  white-space:pre-wrap;word-break:break-all;max-height:40vh;overflow:hidden
}
.call-bar.msg-bar:active{transform:translateX(-50%) scale(.985)}
/* 대화 카드 안 "알림 켜기" 안내 줄 */
.notif-ask{
  display:flex;align-items:center;gap:8px;margin:0 14px 8px;padding:9px 10px 9px 12px;
  border-radius:9px;background:var(--blue-tint);border:1px solid var(--blue-line);
  font-size:12px;color:var(--gold-dark);line-height:1.5
}
.notif-ask[hidden]{display:none}
.notif-ask span{flex:1}
.notif-ask .notif-on{
  flex:none;border:0;border-radius:7px;padding:6px 10px;background:var(--gold);color:#fff;
  font-size:12px;font-weight:700;cursor:pointer;font-family:inherit
}
.notif-ask .notif-x{flex:none;border:0;background:none;color:var(--sub-4);cursor:pointer;font-size:13px;padding:2px 4px}

/* 대행번호 표식 */
.job-no{
  display:inline-block;margin-right:6px;padding:1px 7px;border-radius:6px;
  background:var(--blue-tint);border:1px solid var(--blue-line);color:#2F6FF0;
  font-size:11.5px;font-weight:700;letter-spacing:.02em;vertical-align:1px;white-space:nowrap
}
.job-no.lg{font-size:13px;padding:3px 9px;margin-right:0}
.job-no.on-ink{display:inline-block;background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.28);color:#fff;margin:0 0 4px}

/* 하객 구분 종류 고르기 (예식 정보 고치기) */
.guest-kind{display:grid;gap:6px;margin:8px 0 0 26px}
.guest-kind[hidden]{display:none}
.guest-kind .gk{display:flex;gap:9px;align-items:flex-start;padding:9px 11px;border:1px solid var(--line);border-radius:10px;cursor:pointer;background:var(--card)}
.guest-kind .gk.on{border-color:#2F6FF0;background:var(--blue-tint)}
.guest-kind .gk input{margin-top:3px;flex:none}
.guest-kind .gk b{display:block;font-size:13px;color:var(--ink)}
.guest-kind .gk small{display:block;font-size:11.5px;color:var(--sub-3);margin-top:2px;line-height:1.5}
.gtag.g-g{background:#E8F0FF;color:#2F6FF0}
.gtag.g-b{background:#FFE9F1;color:#D6336C}
.gtag.g-gp{background:#2F6FF0;color:#fff}
.gtag.g-bp{background:#D6336C;color:#fff}

/* 하객 구분 (부 / 모) */
.gtag{display:inline-block;min-width:18px;padding:0 5px;border-radius:5px;font-size:10.5px;font-weight:800;line-height:17px;text-align:center;vertical-align:1px;margin-right:2px}
.gtag.g-f{background:#E3EDFF;color:#2F6FF0}
.gtag.g-m{background:#FDE7EF;color:#D6336C}
.gtag.g-n{background:var(--surface);color:var(--sub-4)}
.seg.two{grid-template-columns:repeat(2,1fr)}
.seg.two button small{display:block;font-size:11px;font-weight:400;color:var(--sub-4);margin-top:2px}
.seg.two button.on small{color:var(--gold-dark)}
.seg.invalid button{border-color:var(--warn)}
.relcell{display:flex;align-items:center;gap:6px;min-width:0}
.relcell>span{flex:1;min-width:0}
.gsel{flex:none;border:1px solid var(--line);border-radius:6px;background:var(--card);font-size:11.5px;padding:3px 2px;color:var(--tx);font-family:inherit}
.gsum{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:14px;padding:10px 12px;border:1px solid var(--line-soft);border-radius:8px;font-size:12px;color:var(--sub)}
.gsum b{color:var(--ink)}
.chk-row{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border:1px solid var(--line);border-radius:8px;cursor:pointer;font-size:13px;color:var(--tx);line-height:1.5}
.chk-row input{margin-top:3px;width:16px;height:16px;flex:none}
.chk-row small{color:var(--sub-3);font-size:11.5px}
.print-table .col-gof{width:44px}

/* 대행인원 직접 수정 */
.edit-hint{font-size:11px;font-weight:500;color:var(--gold-dark);margin-left:6px}
.edit-hint.m{margin:0 18px 6px;padding:8px 10px;border-radius:8px;background:var(--blue-tint);border:1px solid var(--blue-line);font-size:12px}
.m-list[data-edit] .entry-item{cursor:pointer}
.m-list[data-edit] .entry-item:active{background:var(--surface)}
.esheet-bg{position:fixed;inset:0;background:rgba(15,20,30,.45);z-index:120}
.esheet{position:fixed;left:0;right:0;bottom:0;z-index:121;background:var(--card);border-radius:18px 18px 0 0;padding:14px 18px calc(18px + env(safe-area-inset-bottom));box-shadow:0 -10px 40px rgba(0,0,0,.25);max-height:88vh;overflow:auto}
.esheet[hidden],.esheet-bg[hidden]{display:none}
.esheet-head{display:flex;align-items:center;gap:8px;margin-bottom:10px;font-size:15px}
.esheet-head span{color:var(--sub-4);font-size:12px;flex:1}
.esheet-x{border:0;background:var(--surface);border-radius:8px;width:34px;height:34px;font-size:15px;cursor:pointer}
.esheet-form label{display:block;font-size:12px;color:var(--sub-2);margin-top:10px}
.esheet-form label .inp{display:block;width:100%;margin-top:4px;font-size:15px;padding:11px 12px}
.esheet-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.esheet-btns{display:flex;gap:10px;margin-top:16px}
.esheet-save{flex:1;min-height:50px;border:0;border-radius:12px;background:var(--gold);color:#fff;font-size:16px;font-weight:700;cursor:pointer}
.esheet-del{flex:none;min-height:50px;padding:0 16px;border:1px solid var(--warn);border-radius:12px;background:#fff;color:var(--warn);font-size:14px;font-weight:600;cursor:pointer}

/* 자체 라이브 — 혼주 화면 */
.video-box video{width:100%;height:100%;object-fit:contain;background:#000;display:block}
/* 대행인원 라이브 탭 카드 */
.cast-card{padding:14px 14px 12px;border:1px solid var(--gold);border-radius:12px;background:var(--card);margin-bottom:16px}
.cast-card-t{font-size:14.5px;font-weight:700}
.cast-card-t .opt{font-size:11px;font-weight:500;color:var(--sub-4);margin-left:6px}
.cast-card-s{font-size:12px;color:var(--sub-2);margin-top:6px;line-height:1.6}
.cast-card-state{margin-top:10px;font-size:12.5px;color:var(--sub-4)}
.cast-card-state.on{color:var(--ok);font-weight:700}
/* 방송 화면 */
.cast-body{background:#0f141b;color:#e8ecf2}
.cast{max-width:560px;margin:0 auto;padding:0 0 40px}
.cast-head{display:flex;align-items:center;gap:10px;padding:14px 16px 10px;padding-top:calc(14px + env(safe-area-inset-top))}
.cast-back{color:#aab3c0;text-decoration:none;font-size:13px;flex:none}
.cast-title{flex:1;font-weight:700;font-size:15px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cast-title span{display:block;font-size:11px;font-weight:500;color:#8b95a5}
.cast-state{flex:none;font-size:12px;display:flex;align-items:center;gap:6px;color:#aab3c0}
.cast-state .dot{width:8px;height:8px;border-radius:50%;background:#556}
.cast-state.on{color:#4ade80}.cast-state.on .dot{background:#4ade80;box-shadow:0 0 0 4px rgba(74,222,128,.2)}
.cast-state.warn{color:#fbbf24}.cast-state.warn .dot{background:#fbbf24}
.cast-video{position:relative;aspect-ratio:16/9;background:#000;margin:0 12px;border-radius:14px;overflow:hidden}
.cast-video video{width:100%;height:100%;object-fit:cover;display:block}
.cast-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:20px}
.cast-overlay[hidden]{display:none}
.cast-overlay-t{font-size:14px;color:#cfd6e0}.cast-overlay-s{font-size:12px;color:#8b95a5}
.cast-badge{position:absolute;left:12px;top:12px;background:#e11d48;color:#fff;font-size:12px;font-weight:800;padding:4px 9px;border-radius:7px;display:flex;align-items:center;gap:6px}
.cast-badge[hidden]{display:none}
.cast-badge .dot{width:7px;height:7px;border-radius:50%;background:#fff;animation:castblink 1.2s infinite}
@keyframes castblink{50%{opacity:.25}}
.cast-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 12px 0}
.cast-stats div{background:#182029;border-radius:10px;padding:10px 12px}
.cast-stats span{display:block;font-size:11px;color:#8b95a5}
.cast-stats b{display:block;font-size:14px;margin-top:3px;color:#e8ecf2}
.cast-btns{display:flex;gap:10px;margin:16px 12px 0}
.cast-start,.cast-stop{flex:1;min-height:58px;border:0;border-radius:14px;font-size:18px;font-weight:800;cursor:pointer}
.cast-start{background:#e11d48;color:#fff}.cast-start:disabled{opacity:.6}
.cast-stop{background:#283241;color:#fff}
.cast-flip{flex:none;width:58px;border:0;border-radius:14px;background:#283241;color:#fff;font-size:22px;cursor:pointer}
.cast-btns [hidden]{display:none}
.cast .err{margin:10px 16px 0;color:#fb7185;font-size:13px}
.cast-tips{margin:22px 16px 0;padding:14px 16px;background:#182029;border-radius:12px;font-size:12.5px;line-height:1.7;color:#cfd6e0}
.cast-tips b{color:#fff}
.cast-tips ul{margin:6px 0 0;padding-left:18px}
.cast-diag{margin:14px 16px 0;font-size:12px;color:#aab3c0}
.cast-diag summary{cursor:pointer;color:#8b95a5}
.cast-diag pre{margin:8px 0 0;padding:10px 12px;background:#182029;border-radius:10px;white-space:pre-wrap;word-break:break-all;font-size:11.5px;line-height:1.6;color:#cfd6e0;font-family:inherit}

/* ── 권종별 계수 카드 ─────────────────────────────────── */
.m-count{padding:0 16px 8px}
.m-count:empty{display:none}
.count-card{padding:16px 16px 12px;font-variant-numeric:tabular-nums}
.count-card[hidden]{display:none}
.count-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;width:100%;background:none;border:0;padding:0;text-align:left;font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.count-head>div{flex:1;min-width:0}
.count-chev{flex:none;width:9px;height:9px;margin:6px 2px 0 0;border-right:2px solid var(--sub-3);border-bottom:2px solid var(--sub-3);transform:rotate(45deg);transition:transform .15s}
.count-card.collapsed .count-chev{transform:rotate(-45deg)}
.count-card.collapsed>*:not(.count-head){display:none}
.count-card.collapsed{padding-bottom:14px}
.count-title{font-size:15.5px;font-weight:800;color:var(--ink)}
.count-sub{font-size:11.5px;color:var(--sub-4);margin-top:2px}
.count-badge{flex:none;font-size:11px;font-weight:700;padding:4px 9px;border-radius:999px;background:var(--surface);color:var(--sub)}
.count-card.confirmed .count-badge{background:var(--ok-tint,#E6F6EC);color:var(--ok)}
.count-card .ledger{display:grid;grid-template-columns:1.1fr .8fr 1.1fr;gap:1px;background:var(--line-soft);border:1px solid var(--line-soft);border-radius:10px;overflow:hidden;margin-top:12px}
.count-card .ledger>div{background:var(--card);padding:9px 10px;min-width:0}
.count-card .ledger .lb{font-size:11px;color:var(--sub-3)}
.count-card .ledger .v{font-size:14px;font-weight:700;color:var(--ink);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.count-card .ledger .v.b{color:var(--gold-dark)}
.count-card .ledger .v small{font-size:11px;font-weight:500;color:var(--sub-4)}
.count-rows{margin:8px 0 0;padding:0;list-style:none;border-top:1px solid var(--line-soft)}
.count-rows li{display:grid;grid-template-columns:78px 1fr auto;align-items:center;gap:8px;padding:10px 0;border-bottom:1px solid var(--line-soft)}
.count-rows .den{font-weight:700;color:var(--ink);font-size:13.5px}
.count-rows .den small{display:block;font-size:10.5px;font-weight:500;color:var(--sub-4)}
.count-rows .step{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--card)}
.count-rows .step button{width:38px;height:40px;border:0;background:var(--surface);color:var(--sub);font-size:18px;cursor:pointer;font-family:inherit}
.count-rows .step button:disabled{opacity:.4;cursor:default}
.count-rows .step input{width:58px;height:40px;border:0;text-align:center;font:inherit;font-weight:700;font-size:16px;color:var(--ink);background:var(--card)}
.count-rows .step input:focus{outline:2px solid var(--gold);outline-offset:-2px}
.count-rows .amt{text-align:right;font-weight:700;color:var(--tx);min-width:88px;font-size:13.5px}
.count-rows .amt.zero{color:var(--sub-4);font-weight:500}
.count-rows .amt-in{width:104px;text-align:right;padding:8px 10px;font-weight:700}
.count-sum{margin:12px 0 0;padding:12px 14px;border-radius:12px;background:var(--surface)}
.count-sum>div{display:flex;justify-content:space-between;gap:10px;font-size:12.5px;color:var(--sub);padding:3px 0}
.count-sum>div b{color:var(--ink)}
.count-sum .big{font-size:14px;padding-top:8px;margin-top:6px;border-top:1px solid var(--line)}
.count-sum .big b{font-size:17px}
.count-match{display:flex;align-items:center;gap:10px;margin:12px 0 0;padding:11px 13px;border-radius:12px;font-weight:700;font-size:13px}
.count-match.ok{background:var(--ok-tint,#E6F6EC);color:var(--ok)}
.count-match.bad{background:var(--warn-tint,#FDEBF1);color:var(--warn)}
.count-match .ic{width:26px;height:26px;border-radius:50%;background:currentColor;display:grid;place-items:center;flex:none}
.count-match .ic span{color:#fff;font-size:14px}
.count-match small{display:block;font-weight:400;font-size:11.5px;opacity:.9;margin-top:2px}
.count-note{display:block;margin-top:12px;font-size:12px;color:var(--sub-2)}
.count-note[hidden]{display:none}
.count-note small{color:var(--sub-4)}
.count-note .inp{display:block;width:100%;margin-top:5px}
.count-btns{margin-top:12px;display:flex;flex-direction:column;gap:8px}
.count-confirm{width:100%;min-height:50px;border:0;border-radius:12px;background:var(--gold);color:#fff;font:inherit;font-size:16px;font-weight:800;cursor:pointer}
.count-confirm[hidden],.count-unconfirm[hidden]{display:none}
.count-unconfirm{width:100%;min-height:42px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--sub);font:inherit;font-size:13px;font-weight:600;cursor:pointer}
.count-saved{font-size:11px;color:var(--sub-4);text-align:right;min-height:14px}
.count-hint{font-size:11.5px;color:var(--sub-4);line-height:1.6;margin-top:10px}
.count-card .err:empty{display:none}
/* 혼주 화면 · 정산확인서 결과 표 */
.count-result{margin:0 18px 6px;padding:14px 14px 10px;border:1px solid var(--line);border-radius:14px;background:var(--card);position:relative;font-variant-numeric:tabular-nums}
.cr-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.cr-title{font-size:14.5px;font-weight:800;color:var(--ink)}
.cr-stamp{padding:4px 9px;border:2px solid var(--ok);color:var(--ok);border-radius:8px;font-weight:900;font-size:11px;letter-spacing:.06em;transform:rotate(-4deg)}
.count-result.off .cr-stamp{border-color:var(--warn);color:var(--warn)}
.count-result .crow{display:grid;grid-template-columns:72px 1fr auto;gap:10px;padding:8px 0;border-bottom:1px solid var(--line-soft);font-size:13px}
.count-result .crow .d{color:var(--ink);font-weight:700}
.count-result .crow .n{color:var(--sub);text-align:right}
.count-result .crow .a{text-align:right;font-weight:700;color:var(--tx)}
.count-result .crow .a.dim{color:var(--sub-4);font-weight:500}
.count-result .crow.tot{border-bottom:0;padding-top:10px}
.count-result .crow.tot .d{color:var(--sub)}
.count-result .crow.tot .a{color:var(--gold-dark);font-size:15px}
.cr-by{display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px 14px;font-size:11.5px;color:var(--sub-3);padding:8px 0 2px;border-top:1px solid var(--line-soft)}
.cr-by b{color:var(--sub)}
.cr-by b.good{color:var(--ok)}.cr-by b.bad{color:var(--warn)}
.cr-note{font-size:11.5px;color:var(--warn);padding:4px 0 2px}
/* 줌 라이브 */
.zoom-box{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:20px;text-align:center;background:#0f141b;color:#e8ecf2}
.zoom-box .live-badge{position:absolute;left:12px;top:12px}
.zoom-t{font-size:15px;font-weight:700;margin-top:10px}
.zoom-btn{display:inline-block;padding:13px 22px;border-radius:12px;background:#2D8CFF;color:#fff;font-weight:800;font-size:15px;text-decoration:none}
.zoom-s{font-size:11.5px;color:#aab3c0;max-width:300px;line-height:1.5}
.side-guide .count-card{margin-bottom:14px}
.gtag.g-r{background:#E9F7EF;color:#1D9A5B}
.seg.three{grid-template-columns:repeat(3,1fr)}
.seg.four{grid-template-columns:repeat(2,1fr)}
.seg.four button small{display:block;font-size:10.5px;font-weight:400;color:var(--sub-4);margin-top:2px}
.seg.four button.on small{color:var(--gold-dark)}
.seg.three button small{display:block;font-size:10.5px;font-weight:400;color:var(--sub-4);margin-top:2px}
.seg.three button.on small{color:var(--gold-dark)}


/* ═══ 회원(대행인원 풀) · 일정 신청 ═══════════════════════ */
.mb-body{background:var(--surface)}
.mb-wrap{max-width:640px;margin:0 auto;padding:16px 16px 60px}
.mb-brand{padding:10px 2px 2px}
.mb-head{display:flex;justify-content:space-between;align-items:center;padding:6px 2px 14px}
.mb-hello{font-size:19px;font-weight:800;letter-spacing:-.03em}
.mb-meta{font-size:12px;color:var(--sub-3);margin-top:2px}
.mb-flash{background:var(--blue-tint);border:1px solid var(--blue-line);color:#2F6FF0;border-radius:10px;padding:10px 12px;font-size:13px;margin-bottom:10px}
.mb-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-bottom:16px}
.mb-tabs a{display:flex;align-items:center;justify-content:center;gap:4px;padding:11px 4px;white-space:nowrap;border-radius:10px;background:var(--card);border:1px solid var(--line);color:var(--sub);font-size:13.5px;font-weight:700;text-decoration:none;position:relative}
.mb-tabs a.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.mb-tabs a b{background:#2F6FF0;color:#fff;border-radius:999px;font-size:11px;padding:1px 7px}
.mb-tabs a.on b{background:#fff;color:var(--ink)}
.mb-dot{width:7px;height:7px;border-radius:50%;background:#D62828;display:inline-block}
.mb-sec-t{font-size:13px;font-weight:800;color:var(--sub-2);margin:4px 2px 10px}
.mb-sec-t small{font-weight:500;color:var(--sub-4);margin-left:6px}
.mb-item{display:flex;gap:12px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:13px 14px;margin-bottom:10px;text-decoration:none;color:inherit}
.mb-item:not(.static):hover{border-color:var(--gold)}
.mb-date{flex:none;width:64px;text-align:center;border-right:1px solid var(--line-soft);padding-right:10px}
.mb-date b{display:block;font-size:14px;letter-spacing:-.02em}
.mb-date span{font-size:12px;color:var(--sub-3)}
.mb-date.sat b{color:#2F6FF0}
.mb-date.sun b{color:#E03131}
.mb-main{flex:1;min-width:0}
.mb-title{font-size:14.5px;font-weight:700;word-break:keep-all}
.mb-title .job-no{margin-right:6px}
.mb-sub{font-size:12px;color:var(--sub);margin-top:3px;display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.mb-sub.dim{color:var(--sub-4)}
.mb-go{flex:none;font-size:12.5px;font-weight:700;color:#2F6FF0;white-space:nowrap}
.mb-act{flex:none;display:flex;flex-direction:column;gap:6px;align-items:flex-end}
.mb-state{font-size:12px;font-weight:700;padding:5px 9px;border-radius:8px;white-space:nowrap}
.mb-state.ok{background:#E6F6EC;color:#1D9A5B}
.mb-state.wait{background:var(--blue-tint);color:#2F6FF0}
.mb-state.no{background:var(--surface);color:var(--sub-3)}
.mb-role{display:inline-block;font-size:11px;font-weight:800;padding:1px 7px;border-radius:6px;background:var(--surface);color:var(--sub-2)}
.mb-role.mgr{background:#7b4bd6;color:#fff}
.btn-dark.sm,.btn-ghost.sm{padding:7px 12px;font-size:12.5px;border-radius:8px;width:auto}
.mb-empty{background:var(--card);border:1px dashed var(--line);border-radius:14px;padding:22px 16px;text-align:center;font-size:13px;color:var(--sub-3);line-height:1.8}
.mb-payout-now{display:grid;grid-template-columns:1fr 1fr;gap:6px 14px;font-size:13px}
.mb-payout-now div{display:flex;justify-content:space-between;border-bottom:1px solid var(--line-soft);padding:6px 0}
.mb-payout-now span{color:var(--sub-3)}

/* 관리자 — 신청자 카드 */
.ap-card .guide-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.ap-cnt{font-size:11px;font-weight:700;color:#fff;background:#D62828;border-radius:999px;padding:2px 8px;margin-left:6px}
.ap-cnt:empty{display:none}
.ap-toggle{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--sub-2);cursor:pointer}
.ap-note{display:flex;gap:6px;padding:0 22px 10px}
.ap-note .inp{flex:1;padding:8px 10px;font-size:12.5px}
.ap-list{padding:0 22px 6px}
.ap-row{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:10px 0;border-top:1px solid var(--line-soft)}
.ap-row.declined{opacity:.6}
.ap-name{font-size:13.5px;font-weight:700}
.ap-name small{font-weight:400;color:var(--sub-3);margin-left:6px}
.ap-sub{font-size:11.5px;color:var(--sub-3);margin-top:2px}
.ap-act{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end;flex:none;max-width:200px}
.ap-btn{border:1px solid var(--line-2);background:#fff;color:var(--sub-2);border-radius:8px;padding:5px 9px;font-size:11.5px;font-weight:700;cursor:pointer;font-family:inherit;white-space:nowrap}
.ap-btn.mgr{border-color:#7b4bd6;color:#7b4bd6}
.ap-btn.mgr:hover{background:#7b4bd6;color:#fff}
.ap-btn:hover{border-color:#2F6FF0;color:#2F6FF0}
.ap-btn.no{color:var(--sub-3)}
.ap-btn.no:hover{border-color:#D62828;color:#D62828}
.ap-btn:disabled{opacity:.5}
.ap-state{font-size:12px;font-weight:700;padding:4px 8px;border-radius:7px}
.ap-state.ok{background:#E6F6EC;color:#1D9A5B}
.ap-state.no{background:var(--surface);color:var(--sub-3)}
.ap-hint{padding:8px 22px 16px;font-size:11.5px;color:var(--sub-3);line-height:1.7}
.rc-badge{display:inline-block;margin-left:5px;font-size:10.5px;font-weight:800;padding:1px 6px;border-radius:6px;background:#E6F6EC;color:#1D9A5B;vertical-align:1px}
.rc-badge.wait{background:#FFF1E0;color:#C2410C}

/* 관리자 — 회원 목록 */
.mem-2col{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:24px;align-items:start;padding:32px 40px 64px}
.mem-right{position:sticky;top:16px}
.mem-panel{display:flex;flex-direction:column;max-height:calc(100vh - 32px);overflow:hidden}
.mem-panel-head{padding:16px 18px 12px;border-bottom:1px solid var(--line-mid)}
.mem-scroll{overflow-y:auto;flex:1;min-height:0}
.mem-head,.mem-row{display:grid;grid-template-columns:minmax(0,1fr) 40px 40px 44px 40px;gap:6px;align-items:center;padding:9px 14px}
.mem-row.new{grid-template-columns:minmax(0,1fr) auto;background:#F3F8FF}
.mem-new{font-size:10.5px;font-weight:800;color:#fff;background:#2F6FF0;border-radius:6px;padding:1px 6px}
.mem-approve{display:flex;gap:4px}
.ap-btn.ok{border-color:#1D9A5B;color:#1D9A5B}
.ap-btn.ok:hover{background:#1D9A5B;color:#fff}
@media (max-width:1100px){.mem-2col{grid-template-columns:1fr}.mem-right{position:static}.mem-panel{max-height:none}.mem-scroll{max-height:70vh}}
.mem-head{background:var(--surface);border-bottom:1px solid var(--line);font-size:12px;color:var(--sub-2);font-weight:600}
.mem-row{border-bottom:1px solid var(--line-soft);font-size:13px}
.mem-row.has-pending{background:#FFFBF5}
.mem-row[hidden]{display:none}
.mem-name{font-size:14px;font-weight:700}
.mem-pend{margin-left:6px;font-size:10.5px;font-weight:800;padding:1px 6px;border-radius:6px;background:#FFF1E0;color:#C2410C;vertical-align:1px}
.mem-sub{font-size:12px;color:var(--sub-2);margin-top:2px}
.mem-sub.dim{color:var(--sub-4)}
.mem-stat{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;text-align:center}
.mem-stat b{display:block;font-size:16px}
.mem-stat span{font-size:11px;color:var(--sub-3)}
.mem-sched{display:flex;flex-wrap:wrap;gap:4px}
.mem-chip{font-size:11px;padding:2px 7px;border-radius:6px;background:var(--surface);border:1px solid var(--line);white-space:nowrap}
.mem-chip.mgr{border-color:#7b4bd6;color:#7b4bd6}
.mem-chip.more{color:var(--sub-3)}
.mem-pay{font-size:12.5px}
.mem-head div:not(:first-child),.mem-n{text-align:center}
.mem-n{font-size:14px;font-weight:800;font-variant-numeric:tabular-nums}
.mem-n.mgr{color:#7b4bd6}
.mem-who{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;min-width:0}
.mem-who .mem-name{font-size:13.5px}
.mem-who .mem-sub{font-size:11.5px}
.mem-who .mem-sub{margin:0}
/* 대행방별 지원 현황 */
.rb{border-bottom:1px solid var(--line-mid)}
.rb.has-pending{background:#FFFBF5}
.rb-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 24px 6px;flex-wrap:wrap}
.rb-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13.5px}
.rb-title b{font-size:14px}
.rb-venue{color:var(--sub-2)}
.rb-off{font-size:11px;font-weight:700;color:var(--sub-3);background:var(--surface);border:1px solid var(--line);padding:1px 7px;border-radius:6px}
.rb-meta{display:flex;align-items:center;gap:6px}
.rb-cnt{font-size:11.5px;font-weight:700;padding:3px 8px;border-radius:7px}
.rb-cnt.wait{background:#FFF1E0;color:#C2410C}
.rb-cnt.ok{background:#E6F6EC;color:#1D9A5B}
.rb-list{padding:0 24px 8px}
.rb-list .ap-row{border-top:1px solid var(--line-soft)}
.rb-list .ap-act{max-width:none}
.rb-empty{padding:4px 24px 12px;font-size:12px;color:var(--sub-4)}
.rb-people{display:flex;flex-wrap:wrap;gap:8px;padding:2px 24px 14px}
.pp{display:flex;flex-direction:column;align-items:flex-start;gap:1px;border:1.5px solid var(--line-2);background:#fff;border-radius:10px;padding:7px 12px;cursor:pointer;font-family:inherit;text-align:left;min-width:112px;transition:border-color .12s,box-shadow .12s}
.pp:hover,.pp.open{border-color:#2F6FF0;box-shadow:0 0 0 3px rgba(47,111,240,.12)}
.pp-name{font-size:14px;font-weight:800;color:var(--ink)}
.pp-tag{font-size:11px;font-weight:700;color:#C2410C}
.pp-cnt{font-size:10.5px;color:var(--sub-3)}
.pp.applied{border-color:#F59E0B;background:#FFFBF0}
.pp.mgr{border-color:#7b4bd6;background:#F6F1FF}.pp.mgr .pp-tag{color:#7b4bd6}
.pp.stf{border-color:#1D9A5B;background:#EEF9F2}.pp.stf .pp-tag{color:#1D9A5B}
.pp.declined{opacity:.55}.pp.declined .pp-tag{color:var(--sub-3)}.pp.declined .pp-name{text-decoration:line-through}
.pp-menu{position:fixed;z-index:60;background:#fff;border:1px solid var(--line-2);border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.14);padding:6px;min-width:180px;display:flex;flex-direction:column;gap:2px}
.pp-menu[hidden]{display:none}
.pp-menu-t{font-size:12.5px;font-weight:800;padding:6px 10px 4px;border-bottom:1px solid var(--line-soft);margin-bottom:4px;display:flex;flex-direction:column}
.pp-menu-t small{font-weight:600;color:var(--sub-3);font-size:11px}
.pp-item{border:0;background:#fff;text-align:left;padding:9px 10px;border-radius:8px;font-size:13.5px;font-weight:700;cursor:pointer;font-family:inherit;color:var(--ink)}
.pp-item:hover{background:var(--surface)}
.pp-item.mgr{color:#7b4bd6}.pp-item.stf{color:#1D9A5B}.pp-item.no{color:#D62828}
.pp-item:disabled{opacity:.5}
.mb-go .mb-role.big{display:block;font-size:12px;padding:3px 9px;margin:0 0 6px;text-align:center}
@media (max-width:900px){.mem-head{display:none}.mem-row{grid-template-columns:1fr 1fr;gap:8px}.mem-sched{grid-column:1/-1}}

/* 관리자 — 일정표 만들기 */
.bd-quick{padding:16px 24px 14px;border-bottom:1px solid var(--line-mid);background:var(--blue-tint)}
.bd-quick-t{font-size:13px;font-weight:800;color:#2F6FF0;margin-bottom:10px}
.bd-quick .prefill-bar{margin:0 0 10px}
.bd-quick-grid{display:grid;grid-template-columns:120px 160px 120px 1fr 1fr 1fr auto;gap:10px 12px;align-items:end}
.bd-quick-grid .g-groom{grid-column:4 / 6}
.bd-quick-grid .g-bride{grid-column:6 / 8}
.bd-quick-grid .g-venue{grid-column:1 / 8}
.bd-quick-grid .g-note{grid-column:4 / 7}
.bd-quick-grid .g-btn .btn-dark{padding:11px 18px;white-space:nowrap}
.bd-head,.bd-row{display:grid;grid-template-columns:54px 222px minmax(86px,1fr) 108px 74px 88px minmax(48px,.6fr) 52px 176px;gap:5px;align-items:center;padding:8px 12px}
.bd-names{display:flex;gap:4px}
.bd-names .inp{min-width:0;padding-left:6px;padding-right:4px}
#bdList{overflow-x:auto}
.bd-head{background:var(--surface);border-bottom:1px solid var(--line);font-size:12px;color:var(--sub-2);font-weight:600}
.bd-row{border-bottom:1px solid var(--line-soft)}
.bd-row.off{background:var(--surface);opacity:.75}
.bd-row .inp.sm{padding:7px 7px;font-size:13px}
.bd-row .bd-job .inp.sm{padding-left:6px;padding-right:4px}
.rooms-card .btn-ghost.sm{white-space:nowrap}
.bd-when{display:flex;gap:6px}
.bd-when input[type=time]{width:88px;flex:none;padding-left:4px;padding-right:0}
.bd-when input[type=date]{min-width:0;padding-left:6px;padding-right:2px}
.bd-row .row-act{padding:6px 8px}
.bd-apps{display:flex;gap:4px;flex-wrap:wrap}
.bd-cnt{font-size:11.5px;font-weight:700;padding:3px 8px;border-radius:7px;text-decoration:none}
.bd-cnt.wait{background:#FFF1E0;color:#C2410C}
.bd-cnt.ok{background:#E6F6EC;color:#1D9A5B}
.bd-cnt.none{color:var(--sub-4)}
.bd-act{display:flex;gap:4px 6px;align-items:center;justify-content:flex-end;flex-wrap:wrap}
.bd-on{display:flex;align-items:center;gap:4px;font-size:12px;font-weight:700;color:var(--sub-2);white-space:nowrap}
.mb-gender{display:inline-block;font-size:11px;font-weight:800;padding:1px 7px;border-radius:6px;margin-left:4px}
.mb-gender.f{background:#FFE9F1;color:#D6336C}
.mb-gender.m{background:#E8F0FF;color:#2F6FF0}
@media (max-width:1180px){.bd-quick-grid{grid-template-columns:1fr 1fr 1fr}.bd-quick-grid .g-groom,.bd-quick-grid .g-bride,.bd-quick-grid .g-need{grid-column:auto}.bd-quick-grid .g-venue,.bd-quick-grid .g-note,.bd-quick-grid .g-btn{grid-column:1 / -1}.bd-head{display:none}.bd-row{grid-template-columns:1fr 1fr;padding:12px 16px}.bd-place,.bd-names,.bd-note,.bd-act{grid-column:span 2}}
/* 대행목록 — 번호를 누르면 바로 고치기 */
button.job-no.js-jobedit{cursor:pointer;font-family:inherit;border-style:solid}
button.job-no.js-jobedit:hover{box-shadow:0 0 0 3px rgba(47,111,240,.14)}
button.job-no.js-jobedit.none{background:transparent;border:1px dashed var(--line-2);color:var(--sub-4);font-weight:600}
button.job-no.js-jobedit:disabled{opacity:.5}
/* 실시간 팁 */
.tip-kind{display:inline-block;font-size:11px;font-weight:800;padding:2px 8px;border-radius:6px}
.tip-kind.tip{background:#E8F0FF;color:#2F6FF0}
.tip-kind.bad{background:#FFE9E9;color:#D62828}
.tip-kind.notice{background:#FFF1E0;color:#C2410C}
.tip-pin{font-size:11px;font-weight:700;color:var(--sub-2)}
.tip-form{padding:16px 24px 14px;border-bottom:1px solid var(--line-mid);background:var(--blue-tint)}
.tip-form-grid{display:grid;grid-template-columns:150px 1fr;gap:10px 12px;align-items:end}
.tip-form-grid .g-body{grid-column:1 / -1}
.tip-form-grid .g-opt{grid-column:1 / 2}
.tip-form-grid .g-btn{display:flex;gap:8px;justify-content:flex-end}
.tip-form-grid textarea.inp{resize:vertical;line-height:1.6;font-family:inherit}
.tip-row{display:flex;justify-content:space-between;gap:12px;padding:14px 24px;border-bottom:1px solid var(--line-soft)}
.tip-row.pinned{background:#FFFBF0}
.tip-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tip-head small{color:var(--sub-3);font-size:11.5px}
.tip-title{font-size:14.5px}
.tip-body{font-size:13px;color:var(--sub);white-space:pre-wrap;line-height:1.7;margin-top:6px}
.tip-act{display:flex;gap:6px;flex:none;align-items:flex-start}
.row-act.danger{color:#D62828}
.mb-tabs a b.red{background:#D62828;color:#fff}
.mb-tabs a.on b.red{background:#fff;color:#D62828}
.mb-tip{background:var(--card);border:1px solid var(--line-soft);border-radius:14px;padding:14px 16px;margin-bottom:10px}
.mb-tip.pinned{border-color:#F59E0B;background:#FFFBF0}
.mb-tip-head{display:flex;align-items:center;gap:8px}
.mb-tip-head small{margin-left:auto;color:var(--sub-3);font-size:11.5px}
.mb-tip-title{font-size:15px;font-weight:800;margin-top:8px;letter-spacing:-.02em;word-break:keep-all}
.mb-tip-body{font-size:13.5px;color:var(--sub);white-space:pre-wrap;line-height:1.75;margin-top:6px}
/* 유의 회원 */
.mem-caution{border:1px solid var(--line-2);background:#fff;color:var(--sub-4);border-radius:6px;padding:1px 6px;font-size:11px;cursor:pointer;font-family:inherit;font-weight:700}
.mem-caution.on{border-color:#D62828;background:#FFE9E9;color:#D62828}
.mem-row.caution .mem-name{color:#D62828}
.pp.caution{border-color:#D62828}
.pp.caution .pp-name::before{content:'⚠ ';color:#D62828}
.ap-name .ap-caution{color:#D62828;font-weight:800;font-size:12px;margin-left:4px}
/* 관리자 메시지 — 확인 누를 때까지 떠 있는 큰 창 */
.msg-pop{position:fixed;inset:0;z-index:9000;background:rgba(15,23,42,.55);display:flex;align-items:center;justify-content:center;padding:20px;animation:msgpop-in .2s ease-out}
.msg-pop[hidden]{display:none}
.msg-pop-box{background:#fff;border-radius:18px;padding:22px 22px 18px;width:min(440px,100%);box-shadow:0 24px 60px rgba(0,0,0,.35);border:3px solid #2F6FF0;animation:msgpop-shake .6s ease-in-out 2}
.msg-pop-t{font-size:20px;font-weight:900;letter-spacing:-.03em;color:#2F6FF0}
.msg-pop-who{font-size:12.5px;color:var(--sub-3);margin-top:4px}
.msg-pop-body{font-size:17px;font-weight:700;line-height:1.6;margin:14px 0 18px;white-space:pre-wrap;word-break:keep-all;color:var(--ink)}
.msg-pop-ok{width:100%;padding:13px;font-size:15px}
@keyframes msgpop-in{from{opacity:0}to{opacity:1}}
@keyframes msgpop-shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-6px)}40%{transform:translateX(6px)}60%{transform:translateX(-4px)}80%{transform:translateX(4px)}}
/* 계수 — 수표 장부대로 채우기 · 현금+수표 합계 */
.count-rows li.chk-fill{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:6px 0 8px}
.count-rows li.chk-fill small{font-size:11px;color:var(--sub-4)}
.count-sum .all{color:var(--sub-2)}
/* 실시간 팁 — 종류별로 따로 */
.tip-sec-t{display:flex;align-items:center;gap:8px;padding:14px 24px 6px;border-top:1px solid var(--line-mid);background:var(--surface)}
.tip-sec-t b{font-size:12px;color:var(--sub-3)}
.tip-sec.bad .tip-sec-t{background:#FFF5F5}
.tip-sec.notice .tip-sec-t{background:#FFF8EE}
.tip-sec-empty{padding:8px 24px 14px;font-size:12px;color:var(--sub-4)}
.mb-tipjump{display:flex;gap:6px;margin-bottom:14px}
.mb-tipjump a{flex:1;text-align:center;padding:9px 6px;border-radius:10px;font-size:12.5px;font-weight:800;text-decoration:none;border:1px solid var(--line)}
.mb-tipjump a.tip{background:#E8F0FF;color:#2F6FF0;border-color:#C9DBFF}
.mb-tipjump a.bad{background:#FFE9E9;color:#D62828;border-color:#FFC9C9}
.mb-tipjump a.notice{background:#FFF1E0;color:#C2410C;border-color:#FFD9B3}
.mb-tipsec{margin-bottom:22px;scroll-margin-top:12px}
.mb-tipsec .mb-sec-t b{font-size:12px;color:var(--sub-3);font-weight:800}
.mb-tipsec.bad .mb-tip{border-left:4px solid #D62828}
.mb-tipsec.tip .mb-tip{border-left:4px solid #2F6FF0}
.mb-tipsec.notice .mb-tip{border-left:4px solid #C2410C}
/* 번호 일괄 복사 */
.ph-modal{position:fixed;inset:0;z-index:130;background:rgba(15,23,42,.45);display:flex;align-items:center;justify-content:center;padding:16px}
.ph-modal[hidden]{display:none}
.ph-box{background:var(--card);border-radius:16px;box-shadow:0 20px 60px rgba(17,24,39,.25);padding:18px 20px;width:min(520px,100%);max-height:calc(100vh - 32px);overflow:auto}
.ph-head{display:flex;justify-content:space-between;align-items:center;font-size:16px}
.ph-opts{display:grid;grid-template-columns:1fr 1fr;gap:8px 10px;margin:12px 0 8px}
.ph-opts label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700;color:var(--sub-2)}
.ph-opts label.chk{flex-direction:row;align-items:center;gap:6px;align-self:end;padding-bottom:8px}
.ph-opts .inp{padding:7px 9px;font-size:13px}
.ph-count{font-size:12.5px;font-weight:800;color:#2F6FF0;margin-bottom:6px}
#phText{width:100%;font-family:ui-monospace,Menlo,monospace;font-size:13px;line-height:1.6;resize:vertical}
.mem-dm{text-decoration:none;font-size:13px;opacity:.65}
.mem-dm:hover{opacity:1}
/* 1:1 문의 — 공통 말풍선 */
.dm-list{display:flex;flex-direction:column;gap:8px}
.dm-msg{display:flex;flex-direction:column;max-width:82%}
.dm-msg.me{align-self:flex-end;align-items:flex-end}
.dm-msg.them{align-self:flex-start;align-items:flex-start}
.dm-bubble{padding:9px 13px;border-radius:16px;font-size:14px;line-height:1.55;white-space:pre-wrap;word-break:break-word}
.dm-msg.me .dm-bubble{background:#2F6FF0;color:#fff;border-bottom-right-radius:5px}
.dm-msg.them .dm-bubble{background:#fff;border:1px solid var(--line);color:var(--ink);border-bottom-left-radius:5px}
.dm-meta{font-size:10.5px;color:var(--sub-4);margin-top:3px}
.dm-empty{text-align:center;font-size:13px;color:var(--sub-3);line-height:1.8;padding:30px 10px}
.dm-form{display:flex;gap:8px;align-items:flex-end}
.dm-form textarea{flex:1 1 auto;width:auto;min-width:0;resize:none;font-family:inherit;line-height:1.5;padding:10px 12px;font-size:14px}
.dm-form .btn-dark{flex:0 0 auto;width:auto;padding:12px 18px;white-space:nowrap}
.mem-panel-btns{display:flex;gap:6px;margin-top:10px}
.mem-panel-btns>*{flex:1;text-align:center;white-space:nowrap;padding:7px 6px!important;font-size:12px!important}
/* 회원 쪽 */
.dm-wrap .dm-list{min-height:40vh;padding:6px 2px 90px}
.dm-wrap .dm-form{position:fixed;left:0;right:0;bottom:0;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:var(--card);border-top:1px solid var(--line);max-width:640px;margin:0 auto;z-index:20}
.dm-fab{position:fixed;right:14px;bottom:calc(16px + env(safe-area-inset-bottom));z-index:30;background:#2F6FF0;color:#fff;text-decoration:none;font-size:13.5px;font-weight:800;padding:11px 16px;border-radius:999px;box-shadow:0 8px 22px rgba(47,111,240,.35);display:flex;align-items:center;gap:6px}
.dm-fab b{background:#D62828;color:#fff;border-radius:999px;font-size:11px;padding:1px 7px}
/* 관리자 문의함 */
.ib-wrap{display:grid;grid-template-columns:320px minmax(0,1fr);gap:20px;padding:28px 40px 40px;align-items:start}
.ib-side{display:flex;flex-direction:column;max-height:calc(100vh - 140px);overflow:hidden}
.ib-head{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line-mid)}
.ib-list{overflow-y:auto}
.ib-item{display:block;padding:11px 16px;border-bottom:1px solid var(--line-soft);text-decoration:none;color:inherit}
.ib-item:hover{background:var(--surface)}
.ib-item.on{background:var(--blue-tint)}
.ib-item.unread{background:#FFFBF0}
.ib-top{display:flex;align-items:center;gap:6px}
.ib-top b{font-size:14px}
.ib-top b.caution{color:#D62828}
.ib-top small{margin-left:auto;font-size:11px;color:var(--sub-4)}
.ib-badge{background:#D62828;color:#fff;border-radius:999px;font-size:10.5px;font-weight:800;padding:1px 7px}
.ib-last{font-size:12.5px;color:var(--sub-3);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ib-last span{color:var(--sub-4)}
.ib-main{display:flex;flex-direction:column;height:calc(100vh - 140px);min-height:420px;overflow:hidden}
.ib-mhead{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line-mid)}
.ib-mhead small{color:var(--sub-3);margin-left:6px}
.ib-thread{flex:1;overflow-y:auto;padding:16px 18px;background:var(--surface)}
.ib-main .dm-form{padding:12px 14px;border-top:1px solid var(--line-mid)}
.ib-none{margin:auto;text-align:center;color:var(--sub-3);line-height:1.9;padding:40px}
.dm-link{position:relative}
.dm-link b{background:#D62828;color:#fff;border-radius:999px;font-size:10.5px;padding:1px 6px;margin-left:5px}
.dm-link b[hidden]{display:none}
@media (max-width:900px){.ib-wrap{grid-template-columns:1fr;padding:16px}.ib-side{max-height:40vh}.ib-main{height:70vh}}
/* 인원 다 구함 · 모집 성별 */
.rb.filled{background:#E5E7EB;filter:grayscale(1)}
.rb.filled .rb-head{background:transparent}
.rb.filled .rb-title b,.rb.filled .rb-venue{color:#6B7280;text-decoration:line-through;text-decoration-thickness:2px;text-decoration-color:#4B5563}
.rb.filled .job-no,.rb.filled .side-badge{color:#6B7280;opacity:.8}
.rb.filled .job-no{background:#D1D5DB;border-color:#D1D5DB}
.rb.filled .rb-filled{background:#374151;font-size:12px;padding:3px 10px}
.rb.filled .pp{opacity:.75;background:#F3F4F6}
.rb.filled .rb-cnt.ok{background:#D1D5DB;color:#374151}
.rb.filled .rb-people{padding-bottom:12px}
.rb-filled small{font-weight:700;opacity:.8;margin-left:2px}
.rb-role{font-size:11px;font-weight:800;color:#2F6FF0;background:#E8F0FF;border:1px solid #C9DBFF;padding:1px 7px;border-radius:6px}
.rb-role.done{color:#6B7280;background:#F3F4F6;border-color:#E5E7EB}
.rb[hidden]{display:none}
.rb-filled{font-size:11px;font-weight:800;color:#fff;background:#6B7280;padding:2px 8px;border-radius:6px}
.row-act.fill{border-color:#1D9A5B;color:#1D9A5B;font-weight:700}
.row-act.fill:hover{background:#1D9A5B;color:#fff}
.rb-gender{font-size:11.5px;font-weight:800;padding:2px 6px;border-radius:6px;border:1px solid var(--line-2);background:#fff;color:var(--sub-2);cursor:pointer;font-family:inherit}
.rb-gender.g-남{background:#E8F0FF;color:#2F6FF0;border-color:#C9DBFF}
.rb-gender.g-여{background:#FFE9F1;color:#D6336C;border-color:#FFC9DA}
.rb-filter{display:flex;gap:4px;margin-top:10px}
.rb-filter button{border:1px solid var(--line-2);background:#fff;border-radius:999px;padding:4px 12px;font-size:12px;font-weight:700;color:var(--sub-2);cursor:pointer;font-family:inherit}
.rb-filter button.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.bd-on.fill{color:#6B7280}
.bd-row.filled{background:#F6F7F9}
.bd-row.filled .bd-job .inp{text-decoration:line-through}
.mb-gender.any{background:var(--surface);color:var(--sub-3)}
.mb-item.filled{opacity:.6}
.grid-rooms.row.chatted{box-shadow:inset 4px 0 0 #2F6FF0;background:#EEF4FF}
.mem-pay-btn{border:0;background:none;cursor:pointer;font-size:13px;opacity:.35;padding:0 2px}
.mem-pay-btn.on{opacity:.75}
.mem-pay-btn:hover{opacity:1}
label.pf{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700;color:var(--sub-2)}
label.pf small{font-weight:600;color:var(--sub-3);margin-left:4px}
/* 가입자 — 이름 누르면 한 대행 · 탈퇴 */
button.mem-name{border:0;background:none;padding:0;font:inherit;font-weight:700;font-size:13.5px;color:inherit;cursor:pointer;text-decoration:underline;text-decoration-color:var(--line-2);text-underline-offset:3px}
button.mem-name:hover,button.mem-name.open{color:#2F6FF0;text-decoration-color:#2F6FF0}
.mem-row.caution button.mem-name{color:#D62828}
.mem-hist{padding:8px 14px 12px 22px;background:var(--surface);border-bottom:1px solid var(--line-soft)}
.mem-hist[hidden]{display:none}
.mh-t{font-size:12px;color:var(--sub-2);margin-bottom:6px}
.mh-t b{color:#2F6FF0}
.mh-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;max-height:220px;overflow:auto}
.mh-list li{display:flex;align-items:center;gap:8px;font-size:12.5px}
.mh-list .job-no{margin:0;min-width:44px;text-align:center}
.mh-list .job-no.none{background:var(--surface);color:var(--sub-4);border-color:var(--line)}
.mh-venue{color:var(--ink)}
.mh-empty{font-size:12px;color:var(--sub-4)}
.mh-foot{display:flex;justify-content:flex-end;margin-top:8px}
.mem-gone{border-top:1px solid var(--line-mid)}
.mem-gone summary{padding:10px 14px;font-size:12.5px;font-weight:700;color:var(--sub-3);cursor:pointer}
.mem-row.gone{grid-template-columns:minmax(0,1fr) auto;opacity:.6}
/* 도착 · 접수 시작 시간 */
.arr-chip{display:inline-block;font-size:11px;font-weight:800;padding:2px 7px;border-radius:6px;white-space:nowrap}
.arr-chip.arrive{background:#FFF1E0;color:#C2410C}
.arr-chip.start{background:#E8F0FF;color:#2F6FF0}
.arr-chip.wed{background:var(--surface);color:var(--sub-2)}
.arrive-strip{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:8px;font-size:13px}
.arrive-strip b{font-size:14px}
.arrive-strip .sep{color:var(--sub-4)}
.arrive-line{display:flex;align-items:center;gap:8px;margin:2px 0}
.arrive-line b{font-size:14.5px}
.arrive-line small{font-size:11px;color:var(--sub-4)}
.m-arrive{margin-top:6px;font-size:12.5px;color:rgba(255,255,255,.82)}
.m-arrive b{color:#fff;font-size:13.5px}
.mb-arrive{display:block;font-size:11.5px;font-weight:800;color:#C2410C;margin-bottom:4px;text-align:center}
.mb-date em{display:block;font-style:normal;font-size:10.5px;font-weight:700;color:#C2410C;margin-top:2px;white-space:nowrap}
.mem-copy{border:1px solid var(--line-2);background:#fff;color:var(--sub-2);border-radius:6px;padding:1px 7px;font-size:11px;font-weight:700;cursor:pointer;font-family:inherit;white-space:nowrap}
.mem-copy:hover{border-color:#2F6FF0;color:#2F6FF0}

/* 일정표 만들기 — 마감·내린 일정은 접어 둡니다 */
.bd-done{border-top:1px solid var(--line-mid);margin-top:6px}
.bd-done>summary{cursor:pointer;padding:12px 24px;font-size:13px;color:var(--sub);list-style:none;display:flex;gap:8px;align-items:center;flex-wrap:wrap;user-select:none}
.bd-done>summary::-webkit-details-marker{display:none}
.bd-done>summary::before{content:'▸';font-size:12px;color:var(--sub-3)}
.bd-done[open]>summary::before{content:'▾'}
.bd-done>summary b{color:var(--ink)}
.bd-done>summary span{font-size:11.5px;color:var(--sub-3)}
.bd-done>summary:hover{background:var(--surface)}

/* 관리자 목록 — 날짜에 요일 · 토요일은 파랑, 일요일은 빨강 */
.grid-rooms.row .c-date{color:var(--sub)}
.grid-rooms.row .c-date .dow{display:inline-block;margin-left:4px;font-size:11px;font-weight:800;padding:1px 5px;border-radius:5px;background:var(--surface);color:var(--sub-2)}
.grid-rooms.row .c-date.sat{color:#2F6FF0}
.grid-rooms.row .c-date.sat .dow{background:#E8F0FE;color:#2F6FF0}
.grid-rooms.row .c-date.sun{color:#E5484D}
.grid-rooms.row .c-date.sun .dow{background:#FDECEC;color:#E5484D}
.grid-rooms.row .c-date.sat .sub-line,.grid-rooms.row .c-date.sun .sub-line{color:var(--sub)}
/* 일정표 만들기 — 날짜 옆 요일 */
.bd-when .dow{align-self:center;flex:none;font-size:11px;font-weight:800;padding:2px 6px;border-radius:5px;background:var(--surface);color:var(--sub-2)}
.bd-when .dow.sat{background:#E8F0FE;color:#2F6FF0}
.bd-when .dow.sun{background:#FDECEC;color:#E5484D}

/* 기록 이력 */
.hd-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;padding:20px 24px 14px;border-bottom:1px solid var(--line-mid)}
.hd-tabs{display:flex;gap:4px;padding:10px 16px 0;border-bottom:1px solid var(--line);background:var(--surface)}
.hd-tab{border:0;background:none;font:inherit;font-size:13px;font-weight:600;color:var(--sub-2);padding:10px 12px;border-bottom:2px solid transparent;cursor:pointer;margin-bottom:-1px}
.hd-tab b{font-weight:800;margin-left:3px;color:var(--sub-3)}
.hd-tab.on{color:#2F6FF0;border-bottom-color:#2F6FF0}.hd-tab.on b{color:#2F6FF0}
.hd-note{padding:10px 24px;font-size:12px;color:var(--sub-3);line-height:1.7;border-bottom:1px solid var(--line-soft)}
.hd-row,.hd-log{display:grid;grid-template-columns:136px 58px 110px 1fr 56px;gap:10px;align-items:baseline;padding:9px 24px;border-bottom:1px solid var(--line-soft);font-size:13px}
.hd-log{grid-template-columns:170px 56px 1fr 120px}
.hd-row.head{background:var(--surface);font-size:12px;color:var(--sub-2);font-weight:600;padding:7px 24px}
.hd-row.del{background:#FFF6F6}.hd-row.edit{background:#FFFBEB}
.hd-t{font-variant-numeric:tabular-nums;color:var(--sub);font-size:12.5px;white-space:nowrap}
.hd-by{font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hd-id{font-size:11px;color:var(--sub-4);text-align:right;font-variant-numeric:tabular-nums}
.hd-ip{font-size:11px;color:var(--sub-4);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hd-badge{display:inline-block;font-size:11px;font-weight:800;padding:2px 7px;border-radius:6px;background:#E8F0FE;color:#2F6FF0}
.hd-badge.edit{background:#FEF3C7;color:#B45309}.hd-badge.del{background:#FDECEC;color:#C62828}
.hd-body .hd-f{font-size:11px;color:var(--sub-3);margin-right:2px}
.hd-body s{color:var(--sub-3)}.hd-body b{color:var(--ink)}
.hd-who{font-weight:700;margin-right:6px}
.hd-del{text-decoration:line-through;color:#C62828}
.hd-gone{font-size:11px;color:var(--sub-3)}
.hd-log.dim{color:var(--sub-3);background:var(--surface)}
.hd-ent{display:grid;grid-template-columns:40px 150px 110px 1fr 110px 50px 44px 150px;gap:8px;align-items:center;padding:8px 24px;border-bottom:1px solid var(--line-soft);font-size:13px}
.hd-ent.head{background:var(--surface);font-size:12px;color:var(--sub-2);font-weight:600;padding:7px 24px}
.hd-ent .n{color:var(--sub-3);font-variant-numeric:tabular-nums}
.hd-ent .t{font-variant-numeric:tabular-nums;color:var(--sub);display:flex;flex-direction:column;gap:2px}
.hd-ent .t .gapmark{font-size:11px;color:#B45309;font-weight:700}
.hd-ent.gap{border-top:2px dashed #F59E0B}
.hd-ent .who{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hd-ent .nm .rel{margin-left:6px;font-size:12px;color:var(--sub-3)}
.hd-ent .amt{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.hd-ent .tk{text-align:center}
@media (max-width:900px){.hd-row,.hd-log,.hd-ent{grid-template-columns:1fr 1fr;padding:10px 16px}.hd-row.head,.hd-ent.head{display:none}.hd-body,.hd-ent .nm{grid-column:1 / -1}}

/* 기록 이력 · 일정표 만들기 — 큰 화면에서는 페이지가 고정 높이라, 카드 안에서 스크롤합니다 */
@media (min-width:901px){
  .hd-card{min-height:0;display:flex;flex-direction:column;overflow:hidden}
  .hd-card > .hd-head,.hd-card > .hd-tabs{flex:none}
  .hd-card > .hd-pane{flex:1 1 auto;min-height:0;overflow:auto}
  .hd-card > .hd-pane .hd-row.head,.hd-card > .hd-pane .hd-ent.head{position:sticky;top:0;z-index:2}
  .rooms-card.bd-card{overflow:auto}
}

/* 사진 — 대화 · 문의 · 팁 */
.chat-photo{flex:none;border:1px solid var(--line);background:var(--card);border-radius:10px;width:40px;height:40px;font-size:18px;cursor:pointer;padding:0;line-height:1}
.chat-photo:hover{background:var(--surface)}
.chat-photo:disabled{opacity:.6}
.chat-bubble.has-img{padding:4px}
.chat-bubble.has-img .chat-text{padding:6px 8px 4px}
.chat-img,.dm-img{display:block;max-width:min(260px,70vw);max-height:320px;border-radius:10px;cursor:zoom-in;object-fit:cover}
.dm-bubble.has-img{padding:4px}
.dm-bubble.has-img .dm-text{padding:6px 8px 4px}
.img-view{position:fixed;inset:0;z-index:400;background:rgba(0,0,0,.88);display:flex;align-items:center;justify-content:center;cursor:zoom-out}
.img-view img{max-width:96vw;max-height:94vh;border-radius:8px;box-shadow:0 10px 40px rgba(0,0,0,.5)}
.img-view-x{position:fixed;top:14px;right:14px;width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,255,255,.15);color:#fff;font-size:18px;cursor:pointer}
.tip-imgs{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.tip-img{width:120px;height:90px;object-fit:cover;border-radius:8px;border:1px solid var(--line-soft);cursor:zoom-in}
.tip-pick{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.tip-pick .pk{position:relative;width:84px;height:64px}
.tip-pick .pk img{width:100%;height:100%;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.tip-pick .pk button{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;border:0;background:#C62828;color:#fff;font-size:11px;cursor:pointer;line-height:20px;padding:0}
.tip-pick .add{width:84px;height:64px;border:1px dashed var(--line-2);border-radius:8px;background:var(--surface);cursor:pointer;font-size:12px;color:var(--sub-2);font-family:inherit}
.ppl-head{gap:8px;flex-wrap:wrap}
.ppl-head .ppl-count{margin-right:auto}

/* 회원 일정표 — 매니저 / 대행인원 두 갈래 신청 */
.mb-apply2{display:flex;flex-direction:column;gap:6px;align-items:stretch}
.mb-apply2 .btn-dark.sm,.mb-apply2 .btn-ghost.sm{white-space:nowrap;padding:7px 9px;font-size:12px;min-height:0}
.pp.applied.mgrwant .pp-tag{background:#E8F0FE;color:#2F6FF0}
.mb-apply2 .btn-dark.sm small{font-weight:600;opacity:.8;margin-left:2px;font-size:11px}

/* 역할별 모집 · 마감 표시 */
.mb-roles{display:flex;gap:6px;margin-top:6px;flex-wrap:wrap}
.mb-rs{font-size:11px;font-weight:700;padding:2px 7px;border-radius:6px}
.mb-rs.open{background:#E8F7EE;color:#1B7F4B}
.mb-rs.closed{background:#F1F3F5;color:var(--sub-3);text-decoration:line-through}
.rb-filled.part{background:#FEF3C7;color:#B45309}
.bd-on.role{font-size:11px;color:var(--sub-2)}
.ap-want{color:#2F6FF0}
.bd-gender{display:flex;gap:4px}
.bd-gender .bd-need{width:44px;flex:none;padding-left:6px;padding-right:2px;text-align:center}
.bd-quick-grid .g-need{grid-column:3 / 4}

/* 지원 현황 — 날짜 띠 */
.rb-day{display:flex;align-items:baseline;gap:10px;padding:9px 24px 7px;background:var(--blue-tint);border-top:2px solid #2F6FF0;border-bottom:1px solid var(--blue-line);position:sticky;top:0;z-index:2}
.rb-day b{font-size:14px;font-weight:800;color:#2F6FF0;white-space:nowrap}
.rb-day span{font-size:12px;color:var(--sub-2)}
.rb-day span em{font-style:normal;color:#B45309;font-weight:700}
.rb-day.sun{background:#FDF2F2;border-top-color:#E5484D;border-bottom-color:#F6C9C9}
.rb-day.sun b{color:#E5484D}
.rb .rb-title .job-no{font-size:13px;padding:3px 9px}

/* 회원 일정표 — 이번 주 / 다음 주 구분 띠 */
.mb-week{display:flex;align-items:baseline;gap:8px;margin:18px 2px 8px;padding-bottom:6px;border-bottom:2px solid var(--line-2)}
.mb-week:first-of-type{margin-top:4px}
.mb-week b{font-size:15px;font-weight:800;color:var(--sub-2)}
.mb-week.now b{color:#2F6FF0}.mb-week.now{border-bottom-color:#2F6FF0}
.mb-week span{font-size:12px;color:var(--sub-3)}
/* 실시간 팁 — 새 글이 있으면 탭이 빨갛게 빛남 */
@keyframes tipGlow{0%,100%{box-shadow:0 0 0 0 rgba(229,72,77,.0);border-color:#E5484D}50%{box-shadow:0 0 0 5px rgba(229,72,77,.28);border-color:#E5484D}}
.mb-tabs a.glow{border-color:#E5484D;color:#C62828;animation:tipGlow 1.4s ease-in-out infinite}
.mb-tabs a b.red{background:#E5484D}
.mb-tip.fresh{border-left:4px solid #E5484D}
.tip-new{font-size:10px;font-weight:900;color:#fff;background:#E5484D;border-radius:5px;padding:1px 6px;margin-right:6px;letter-spacing:.04em}

/* 상단 바 로고 */
.topbar .brand{display:flex;align-items:center;gap:10px}
.topbar .brand .brand-logo{height:26px}
.topbar .brand .brand-role{font-size:12px;font-weight:700;color:var(--sub-2);padding:2px 8px;border:1px solid var(--line-2);border-radius:6px}
.topbar .brand .lg-dark{display:none}
body.admin-mode .topbar .brand .lg-light{display:none}
body.admin-mode .topbar .brand .lg-dark{display:block}
body.admin-mode .topbar .brand .brand-role{color:rgba(255,255,255,.7);border-color:rgba(255,255,255,.3)}

/* 신청자 칩 툴팁 — 횟수 · 최근 예식 */
.pp-tip{position:fixed;z-index:160;width:330px;background:#fff;border:1px solid var(--line-2);border-radius:12px;box-shadow:0 12px 36px rgba(17,24,39,.18);padding:12px 14px;font-size:12.5px;color:var(--ink)}
.pt-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.pt-head b{font-size:14px}.pt-head span{color:var(--sub-3);font-size:12px}.pt-head em{font-style:normal;color:#C62828;font-weight:700;font-size:12px}
.pt-stats{display:flex;gap:10px;flex-wrap:wrap;padding:7px 10px;background:var(--surface);border-radius:8px;margin-bottom:8px;color:var(--sub)}
.pt-stats b{color:var(--ink);font-size:13.5px}
.pt-sub{font-size:11px;color:var(--sub-3);margin:4px 0 4px;font-weight:600}
.pt-row{display:grid;grid-template-columns:48px 42px 44px 1fr 36px;gap:6px;align-items:baseline;padding:4px 0;border-top:1px solid var(--line-soft)}
.pt-job{font-weight:800;color:#2F6FF0;font-size:12px}.pt-date{color:var(--sub-3);font-variant-numeric:tabular-nums}
.pt-role{font-size:11px;font-weight:700;color:var(--sub-2)}.pt-role.mgr{color:#7b4bd6}
.pt-amt{text-align:right;font-variant-numeric:tabular-nums}.pt-cnt{text-align:right;color:var(--sub-3);font-size:11px}
.pt-none{color:var(--sub-3);padding:4px 0}
.mb-state small{display:block;font-size:10.5px;font-weight:600;opacity:.8;line-height:1.3}

/* 대행 목록 — 대행인원 칸: 한 줄에 한 명 (이름 · 매니저/서브 · 서명안함) */
.crew-line{display:flex;align-items:baseline;gap:4px;flex-wrap:wrap;line-height:1.45}
.crew-nm{font-weight:700;color:var(--ink)}
.crew-role{font-size:10.5px;font-weight:800;color:#6B7280;background:#F3F4F6;border-radius:5px;padding:0 5px}
.crew-line.mgr .crew-role{color:#2F6FF0;background:#E8F0FF}
.crew-ns{font-style:normal;font-size:10.5px;font-weight:700;color:#E5484D}
.crew-line.unsigned .crew-nm{color:var(--sub-2)}
.crew-none{color:var(--sub-4)}

/* 물품 지원 */
.mem-supply{position:relative}
.mem-supply small{position:absolute;top:-4px;right:-5px;font-size:9px;font-weight:800;background:#2F6FF0;color:#fff;border-radius:999px;padding:0 4px;line-height:13px}
.sup-list{display:flex;flex-direction:column;gap:2px;margin-bottom:12px;max-height:260px;overflow:auto}
.sup-row{display:grid;grid-template-columns:76px 1fr 90px 36px;gap:8px;align-items:center;padding:6px 8px;border-top:1px solid var(--line-soft);font-size:12.5px}
.sup-row:first-child{border-top:0}
.sup-row .sd{color:var(--sub-3);font-size:11.5px}.sup-row .si b{display:block}.sup-row .si span{color:var(--sub-3);font-size:11px}
.sup-row .sa{text-align:right;font-weight:700;font-variant-numeric:tabular-nums}
.sup-row .sx{border:0;background:none;color:var(--sub-3);cursor:pointer;font-size:13px}.sup-row .sx:hover{color:#E5484D}
.sup-total{display:flex;justify-content:space-between;padding:8px;background:var(--surface);border-radius:8px;font-size:12.5px;font-weight:700;margin-top:4px}
.sup-empty{color:var(--sub-3);font-size:12.5px;padding:8px}
.sup-form{display:grid;grid-template-columns:1fr 90px 130px;gap:8px}
.sup-form input[name=note]{grid-column:1/3}
.pt-sup{margin-top:8px;border-top:1px dashed var(--line-mid);padding-top:6px}
.pt-sup-row{display:flex;justify-content:space-between;gap:8px;padding:3px 0;font-size:12px}
.pt-sup-row span{color:var(--sub-3);font-size:11px;flex:none}.pt-sup-row b{font-variant-numeric:tabular-nums}

/* 동행 봉투 (한 사람이 여러 봉투) — 대표 줄 밑에 들여쓴 줄 */
.namecell{display:flex;align-items:center;gap:6px;min-width:0}
.namecell>.editable,.namecell>span{min-width:0}
.sub-add{flex:none;width:18px;height:18px;border-radius:5px;border:1px solid var(--line-2);background:#fff;color:var(--sub-3);font-size:13px;line-height:1;cursor:pointer;font-family:inherit;opacity:0;transition:opacity .12s}
.grid-entry.row:hover .sub-add,.sub-add:focus{opacity:1}
.sub-add:hover{border-color:#2F6FF0;color:#2F6FF0;background:#E8F0FF}
.grid-entry.row.sub{background:#FAFBFF}
.grid-entry.row.sub>div{padding-top:5px;padding-bottom:5px}
.grid-entry.row.sub .namecell{padding-left:28px}
.sub-mark{flex:none;color:#2F6FF0;font-weight:800;font-size:12px}
.grid-entry.row.subform{background:#EEF4FF;border-top:1px dashed #C9DBFF;border-bottom:1px dashed #C9DBFF}
.grid-entry.row.subform .namecell{padding-left:28px}
.grid-entry.row.subform .inp-sm{width:100%}
.entry-item.sub{margin-left:22px;background:#FAFBFF;border-left:2px solid #C9DBFF}
.entry-item.sub .avatar{background:#E8F0FF;color:#2F6FF0}
.sub-tag{display:inline-block;font-size:10px;font-weight:800;color:#2F6FF0;background:#E8F0FF;border-radius:4px;padding:0 5px;margin-left:4px;vertical-align:middle}
.print-sheet tr.sub td{color:var(--sub-2)}
.print-sheet tr.sub td:nth-child(2){padding-left:14px;white-space:nowrap}
.print-sheet .sub-mark{margin-right:4px}

/* 폰 — 줄 오른쪽 [+] (동행 봉투) */
.sub-add-m{flex:none;width:26px;height:26px;margin-left:8px;border-radius:50%;border:1px solid var(--line-2);background:#fff;color:var(--sub-3);font-size:16px;line-height:1;cursor:pointer;font-family:inherit;display:flex;align-items:center;justify-content:center}
.sub-add-m:active{background:#E8F0FF;color:#2F6FF0;border-color:#C9DBFF}
.entry-item.sub .sub-add-m{display:none}
