/* 장선생수학 소식 — 인증(3) + 목록 렌더(5) + 사진 캐러셀·라이트박스(6)
   docs/jm-feed-preview.html 의 jm- 토큰·카드·라이트박스를 이식.
   사진은 카드에서 캐러셀(넘겨보기), 탭하면 라이트박스. */

:root{
  --jm-primary:#45a2cb;
  --jm-primary-weak:#eaf5fa;
  --jm-primary-deep:#2f7fa3;
  --jm-text:#1a1c1e;
  --jm-sub:#8b95a1;
  --jm-line:#eceef1;
  --jm-bg:#f4f6f8;
  --jm-card:#ffffff;
  --jm-radius:16px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;}
body{
  font-family:'Pretendard Variable',Pretendard,-apple-system,sans-serif;
  background:var(--jm-bg);color:var(--jm-text);
  font-size:15px;line-height:1.5;letter-spacing:-0.02em;
  -webkit-font-smoothing:antialiased;
}
button{font-family:inherit;border:0;background:none;cursor:pointer;color:inherit;letter-spacing:-0.02em;}
input{font-family:inherit;letter-spacing:-0.02em;}
:focus-visible{outline:2px solid var(--jm-primary);outline-offset:2px;border-radius:6px;}
[hidden]{display:none !important;}

.jm-app{max-width:520px;margin:0 auto;min-height:100vh;background:var(--jm-bg);position:relative;padding-bottom:40px;}

@keyframes jmspin{to{transform:rotate(360deg);}}
.jm-spin{width:22px;height:22px;border:2.5px solid var(--jm-line);border-top-color:var(--jm-primary);border-radius:50%;animation:jmspin .7s linear infinite;}

/* ---------- 헤더 + 탭 ---------- */
.jm-header{
  position:sticky;top:0;z-index:40;background:rgba(255,255,255,.92);
  backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid var(--jm-line);
}
.jm-header__bar{display:flex;align-items:center;gap:10px;padding:14px 18px 10px;}
.jm-header__logo{width:32px;height:32px;border-radius:10px;background:var(--jm-primary);display:grid;place-items:center;color:#fff;font-weight:800;font-size:14px;flex:0 0 auto;}
.jm-header__title{font-size:18px;font-weight:700;flex:1;}
.jm-header__title span{display:block;font-size:12px;font-weight:500;color:var(--jm-sub);margin-top:1px;}
.jm-logout{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;color:#6b7684;flex:0 0 auto;transition:background .15s;}
.jm-logout:hover{background:#f2f4f6;}
.jm-tabs{display:flex;gap:6px;padding:2px 14px 10px;overflow-x:auto;scrollbar-width:none;}
.jm-tabs::-webkit-scrollbar{display:none;}
.jm-tab{flex:0 0 auto;padding:7px 14px;border-radius:999px;font-size:13.5px;font-weight:600;color:#6b7684;background:#f2f4f6;transition:.15s;}
.jm-tab.is-on{background:var(--jm-primary);color:#fff;}
/* 저장 탭 = 학년/카테고리와 분리(아웃라인+아이콘, 활성 시 먹색). 왼쪽에 구분선 */
.jm-tabs .jm-tab--save{display:inline-flex;align-items:center;gap:5px;background:#fff;border:1.5px solid #d8dde3;color:#5a6472;margin-left:12px;padding-left:16px;position:relative;}
.jm-tabs .jm-tab--save::before{content:"";position:absolute;left:-6px;top:5px;bottom:5px;width:1px;background:var(--jm-line);}
.jm-tabs .jm-tab--save svg{width:14px;height:14px;}
.jm-tabs .jm-tab--save.is-on{background:var(--jm-text);border-color:var(--jm-text);color:#fff;}
.jm-tabs .jm-tab--save.is-on svg{fill:#fff;}
/* 하위 과목 탭 (중등/고등 선택 시) */
.jm-subtabs{display:flex;gap:6px;padding:0 14px 10px;overflow-x:auto;scrollbar-width:none;border-top:1px solid var(--jm-line);padding-top:9px;}
.jm-subtabs::-webkit-scrollbar{display:none;}
.jm-subtab{flex:0 0 auto;padding:6px 12px;border-radius:999px;font-size:12.5px;font-weight:600;color:var(--jm-primary-deep);background:var(--jm-primary-weak);transition:.15s;}
.jm-subtab.is-on{background:var(--jm-primary);color:#fff;}

/* ---------- 초기 로딩 화면 ---------- */
.jm-loading{min-height:100vh;display:grid;place-items:center;}
.jm-loading .jm-spin{width:30px;height:30px;}

/* ---------- 비로그인 게이트 (그라데이션 히어로) ---------- */
.jm-gate{position:relative;min-height:100dvh;overflow:hidden;background:linear-gradient(180deg,#eaf5fa 0%,#f7fbfd 46%,#ffffff 100%);}
.jm-gate__blob{position:absolute;border-radius:50%;filter:blur(2px);pointer-events:none;}
.jm-gate__blob.b1{width:210px;height:210px;background:radial-gradient(circle at 30% 30%,#9fd0ea,#6bb5da);top:-58px;right:-52px;opacity:.5;}
.jm-gate__blob.b2{width:140px;height:140px;background:radial-gradient(circle at 30% 30%,#bfe3f2,#8ec9e6);top:135px;left:-52px;opacity:.4;}
.jm-gate__inner{position:relative;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 34px;text-align:center;}
.jm-gate__logo{width:120px;height:76px;border-radius:20px;background:linear-gradient(145deg,#5cabd4,#3f88bb);color:#fff;display:grid;place-items:center;box-shadow:0 12px 26px rgba(63,136,187,.42);margin-bottom:22px;}
.jm-gate__logo svg{width:36px;height:36px;margin-left:3px;}
.jm-gate h2{margin:0 0 13px;font-size:24px;font-weight:800;color:var(--jm-text);letter-spacing:-.03em;}
.jm-gate h2 b{color:var(--jm-primary-deep);font-weight:800;}
.jm-gate p{margin:0 0 36px;font-size:14.5px;color:var(--jm-sub);line-height:1.75;font-weight:600;}
.jm-gate__btn{width:100%;max-width:300px;padding:15px;border-radius:15px;background:linear-gradient(135deg,#4f9ecb,#3a86b8);color:#fff;font-size:15.5px;font-weight:800;box-shadow:0 8px 20px rgba(58,134,184,.4);display:flex;align-items:center;justify-content:center;gap:8px;transition:transform .12s;}
.jm-gate__btn:active{transform:scale(.97);}

/* ---------- 로그인 ---------- */
.jm-login{padding:56px 24px;}
.jm-login__box{max-width:340px;margin:0 auto;text-align:center;}
.jm-login h2{margin:0 0 8px;font-size:20px;}
.jm-login__sub{margin:0 0 22px;font-size:13.5px;color:var(--jm-sub);}
.jm-btn{width:100%;padding:14px;border-radius:12px;font-size:15px;font-weight:700;margin-bottom:10px;}
.jm-btn--primary{background:var(--jm-primary);color:#fff;}
.jm-btn--primary:disabled{opacity:.6;}
.jm-btn--google{background:#fff;color:var(--jm-text);border:1.5px solid var(--jm-line);}
.jm-login__or{display:flex;align-items:center;gap:10px;margin:14px 0;color:#b0b8c1;font-size:12px;}
.jm-login__or::before,.jm-login__or::after{content:'';flex:1;height:1px;background:var(--jm-line);}
.jm-input{width:100%;padding:13px 14px;border:1.5px solid var(--jm-line);border-radius:12px;font-size:15px;background:#fff;margin-bottom:10px;}
.jm-input:focus{outline:none;border-color:var(--jm-primary);}
.jm-login__msg{min-height:18px;font-size:13px;font-weight:600;color:var(--jm-sub);margin:6px 0 4px;}
.jm-login__msg.is-err{color:#f5535b;}
.jm-login__aux{display:flex;justify-content:space-between;margin-top:6px;}
.jm-login__aux button{font-size:12.5px;color:var(--jm-sub);font-weight:600;}

/* ---------- 게시글 카드 ---------- */
.jm-post{
  background:var(--jm-card);margin:0 14px 12px;border-radius:var(--jm-radius);
  box-shadow:0 1px 2px rgba(0,0,0,.04);overflow:hidden;
  opacity:0;transform:translateY(14px);transition:opacity .45s ease,transform .45s ease;
}
.jm-post.is-in{opacity:1;transform:none;}
.jm-post--deep{animation:jmDeepGlow 2.6s ease-out 1;}
@keyframes jmDeepGlow{0%,42%{box-shadow:0 0 0 2px var(--jm-primary),0 1px 2px rgba(0,0,0,.04);}100%{box-shadow:0 1px 2px rgba(0,0,0,.04);}}
.jm-post__head{display:flex;align-items:center;gap:10px;padding:14px 16px 10px;}
.jm-post__ava{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:14px;font-weight:700;flex:0 0 auto;}
.jm-post__who{flex:1;min-width:0;}
.jm-post__name{font-size:14.5px;font-weight:700;display:flex;align-items:center;gap:5px;flex-wrap:wrap;}
.jm-badge{font-size:10.5px;font-weight:700;padding:2px 6px;border-radius:5px;background:var(--jm-primary-weak);color:var(--jm-primary-deep);}
.jm-badge--notice{background:#fff1f0;color:#e0574f;}
.jm-badge--hidden{background:#eceef1;color:#8b95a1;}
/* 관리자 ⋯ 메뉴 */
.jm-post__menu{flex:0 0 auto;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;color:#8b95a1;align-self:flex-start;transition:background .15s;}
.jm-post__menu:hover{background:#f2f4f6;}
.jm-menu{position:absolute;z-index:80;background:#fff;border:1px solid var(--jm-line);border-radius:12px;box-shadow:0 8px 26px rgba(0,0,0,.15);padding:5px;min-width:128px;display:flex;flex-direction:column;}
.jm-menu button{text-align:left;padding:10px 14px;font-size:14px;font-weight:600;color:var(--jm-text);border-radius:8px;background:none;}
.jm-menu button:hover{background:#f5f7f9;}
.jm-menu button.del{color:#e0574f;}
.jm-post__meta{font-size:12px;color:var(--jm-sub);margin-top:1px;}
.jm-post__body{padding:2px 16px 12px;font-size:15px;line-height:1.62;white-space:pre-wrap;word-break:break-word;}
.jm-post__body.is-clamp{display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden;}
.jm-post__expand{padding:0 16px 12px;margin-top:-8px;font-size:14px;font-weight:600;color:var(--jm-sub);}

/* ---------- 사진 캐러셀 (넘겨보기) ---------- */
.jm-car{position:relative;overflow:hidden;background:#000;touch-action:pan-y;aspect-ratio:4/3;}
.jm-car__track{display:flex;height:100%;transition:transform .32s cubic-bezier(.22,.61,.36,1);}
.jm-car__slide{flex:0 0 100%;height:100%;cursor:zoom-in;}
.jm-car__slide img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none;}
.jm-car__count{position:absolute;top:10px;right:10px;background:rgba(0,0,0,.6);color:#fff;font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:999px;}
.jm-car__dots{position:absolute;left:0;right:0;bottom:10px;display:flex;gap:5px;justify-content:center;pointer-events:none;}
.jm-car__dot{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.5);transition:.2s;}
.jm-car__dot.on{background:#fff;width:16px;border-radius:99px;}
.jm-car__nav{position:absolute;top:50%;transform:translateY(-50%);width:34px;height:34px;border-radius:50%;background:rgba(0,0,0,.35);color:#fff;display:grid;place-items:center;}
.jm-car__nav--p{left:8px;}
.jm-car__nav--n{right:8px;}
@media(hover:none){ .jm-car__nav{display:none;} }
/* 세로로 긴 사진(B안): 4:5로 높이 제한 + 상단 정렬 + 하단 페이드 "탭하면 전체" */
.jm-car--tall .jm-car__slide img{object-position:top;}
.jm-car__more{position:absolute;left:0;right:0;bottom:0;height:72px;pointer-events:none;display:flex;align-items:flex-end;justify-content:center;padding-bottom:10px;background:linear-gradient(180deg,transparent,rgba(0,0,0,.55));}
.jm-car__more span{background:rgba(0,0,0,.42);color:#fff;font-size:12px;font-weight:700;padding:4px 12px;border-radius:999px;}

/* ---------- 강의 카드 (5단계=기본 표시) ---------- */
.jm-video{position:relative;display:block;width:100%;padding:0;border:0;background:#0e1114;cursor:pointer;overflow:hidden;}
.jm-video__thumb{width:100%;aspect-ratio:16/9;object-fit:cover;display:block;transition:transform .4s ease;}
.jm-video:hover .jm-video__thumb{transform:scale(1.03);}
.jm-video__shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.05) 40%,rgba(0,0,0,.62) 100%);}
.jm-video__play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:58px;height:58px;border-radius:50%;background:rgba(255,255,255,.94);display:grid;place-items:center;box-shadow:0 4px 16px rgba(0,0,0,.3);transition:transform .2s;}
.jm-video:hover .jm-video__play{transform:translate(-50%,-50%) scale(1.08);}
.jm-video__play svg{margin-left:3px;color:var(--jm-primary-deep);}
.jm-video__dur{position:absolute;right:10px;bottom:10px;background:rgba(0,0,0,.78);color:#fff;font-size:11.5px;font-weight:600;padding:3px 7px;border-radius:5px;letter-spacing:0;}
.jm-video__meta{position:absolute;left:14px;right:80px;bottom:10px;color:#fff;text-align:left;}
.jm-video__t{font-size:14.5px;font-weight:700;line-height:1.35;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}
.jm-video__s{font-size:11.5px;opacity:.82;margin-top:3px;}
.jm-vtag{display:inline-flex;align-items:center;gap:3px;background:#f3eefe;color:#6b4fc4;}

/* ---------- 유튜브 동영상 (간단 임베드 · 인라인 재생) ---------- */
.jm-yt{position:relative;width:100%;aspect-ratio:16/9;background:#000;overflow:hidden;cursor:pointer;}
.jm-yt--v{aspect-ratio:9/16;}   /* 세로영상 = 9:16 전체폭. 세로는 유튜브 플레이어를 바로 임베드 */
.jm-yt__thumb{width:100%;height:100%;object-fit:cover;display:block;position:relative;z-index:1;}
.jm-yt__shade{position:absolute;inset:0;z-index:2;background:linear-gradient(180deg,rgba(0,0,0,.04) 40%,rgba(0,0,0,.4) 100%);}
.jm-yt__play{position:absolute;z-index:3;top:50%;left:50%;transform:translate(-50%,-50%);width:58px;height:58px;border-radius:50%;background:rgba(255,255,255,.94);display:grid;place-items:center;box-shadow:0 4px 16px rgba(0,0,0,.3);color:var(--jm-primary-deep);transition:transform .2s;}
.jm-yt__play svg{margin-left:3px;}
.jm-yt:active .jm-yt__play{transform:translate(-50%,-50%) scale(.94);}
.jm-yt__full{position:absolute;z-index:3;right:10px;bottom:10px;background:rgba(0,0,0,.66);color:#fff;font-size:12px;font-weight:700;padding:5px 11px;border-radius:8px;}
.jm-yt__iframe{position:absolute;inset:0;z-index:4;width:100%;height:100%;border:0;}
.jm-yt.is-playing .jm-yt__thumb,
.jm-yt.is-playing .jm-yt__shade,
.jm-yt.is-playing .jm-yt__play,
.jm-yt.is-playing .jm-yt__full{display:none;}

/* ---------- 좋아요 · 저장 액션 ---------- */
.jm-actions{display:flex;align-items:center;gap:4px;padding:10px 12px 2px;}
.jm-like,.jm-save,.jm-share{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:#33383d;transition:transform .12s,color .15s;}
.jm-like svg,.jm-save svg,.jm-share svg{width:25px;height:25px;}
.jm-like:active,.jm-save:active,.jm-share:active{transform:scale(.82);}
.jm-share svg{width:23px;height:23px;}
.jm-like.is-liked{color:#f5535b;}
.jm-like.is-liked svg{fill:#f5535b;}
.jm-save{margin-left:auto;}
.jm-save.is-saved{color:var(--jm-text);}
.jm-save.is-saved svg{fill:var(--jm-text);}
.jm-stat{display:flex;align-items:center;gap:5px;padding:0 18px 14px;font-size:13px;color:var(--jm-sub);}
.jm-stat .jm-likecnt{font-weight:700;color:var(--jm-text);}

/* ---------- 하단 로더 / 끝 / 빈 상태 / 에러 ---------- */
.jm-loader{display:none;justify-content:center;padding:24px 0 8px;}
.jm-end{display:none;text-align:center;color:#b0b8c1;font-size:13px;padding:22px 0;}
.jm-empty{display:none;text-align:center;color:var(--jm-sub);font-size:14px;padding:70px 24px;}

/* ⚠ 개발용 에러 표시 — 규칙·인덱스 완료 후 이 블록 지워도 됨 */
.jm-error{display:none;margin:14px;padding:16px 18px;border-radius:14px;background:#fff1f0;border:1px solid #ffd7d3;color:#b3261e;font-size:13.5px;line-height:1.6;}
.jm-error b{display:block;font-size:14.5px;margin-bottom:4px;}
.jm-error span{display:block;color:#8a4b46;}
.jm-error a{display:inline-block;margin-top:8px;color:var(--jm-primary-deep);font-weight:700;text-decoration:underline;}

/* ---------- 사진 라이트박스 (6단계) ---------- */
.jm-lb{position:fixed;inset:0;background:#000;z-index:100;display:none;flex-direction:column;}
.jm-lb.is-open{display:flex;}
.jm-lb__top{display:flex;align-items:center;padding:14px 16px;color:#fff;}
.jm-lb__count{flex:1;text-align:center;font-size:14px;font-weight:600;}
.jm-lb__x{color:#fff;padding:6px;width:36px;}
.jm-lb__stage{flex:1;position:relative;overflow:hidden;}
.jm-lb__track{display:flex;height:100%;transition:transform .3s cubic-bezier(.22,.61,.36,1);}
.jm-lb__slide{flex:0 0 100%;display:grid;place-items:center;padding:0 4px;}
.jm-lb__slide img{max-width:100%;max-height:100%;object-fit:contain;}
.jm-lb__nav{position:absolute;top:50%;transform:translateY(-50%);width:42px;height:42px;border-radius:50%;background:rgba(255,255,255,.14);color:#fff;display:grid;place-items:center;}
.jm-lb__nav--p{left:12px;}
.jm-lb__nav--n{right:12px;}

/* ---------- 방문자 버튼 (헤더, 원장·부원장) ---------- */
.jm-hbtn{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;color:#6b7684;flex:0 0 auto;transition:background .15s;}
.jm-hbtn:hover{background:#f2f4f6;}
.jm-hbtn.is-on{color:var(--jm-primary);}
.jm-hbtn.is-on svg{fill:var(--jm-primary);}

/* ---------- 방문자 화면 ---------- */
.jm-visitors{position:fixed;inset:0;z-index:92;background:var(--jm-bg);display:none;flex-direction:column;max-width:520px;margin:0 auto;}
.jm-visitors.is-open{display:flex;}
.jm-vis-load{display:flex;justify-content:center;padding:50px 0;}
.jm-vis-empty{text-align:center;color:var(--jm-sub);font-size:14px;line-height:1.7;padding:64px 20px;}
.jm-vis-day{margin-bottom:20px;}
.jm-vis-date{font-size:14.5px;font-weight:800;color:var(--jm-text);margin-bottom:10px;display:flex;align-items:center;gap:8px;}
.jm-vis-date span{font-size:11.5px;font-weight:700;color:var(--jm-primary-deep);background:var(--jm-primary-weak);padding:2px 9px;border-radius:999px;}
.jm-vis-names{display:flex;flex-wrap:wrap;gap:7px;}
.jm-vis-name{font-size:13.5px;font-weight:600;color:var(--jm-text);background:#fff;border:1px solid var(--jm-line);border-radius:10px;padding:7px 12px;}

/* ---------- 글쓰기 버튼 (헤더) ---------- */
.jm-write-btn{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;color:#fff;background:var(--jm-primary);flex:0 0 auto;transition:transform .12s;}
.jm-write-btn:active{transform:scale(.94);}

/* ---------- 글쓰기 시트 (8단계) ---------- */
.jm-composer{position:fixed;inset:0;z-index:90;background:var(--jm-bg);display:none;flex-direction:column;max-width:520px;margin:0 auto;}
.jm-composer.is-open{display:flex;}
.jm-composer__head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px;background:#fff;border-bottom:1px solid var(--jm-line);flex:0 0 auto;}
.jm-composer__title{font-size:16px;font-weight:700;}
.jm-composer__x{font-size:14.5px;font-weight:600;color:var(--jm-sub);padding:6px 4px;}
.jm-composer__post{font-size:14.5px;font-weight:700;color:#fff;background:var(--jm-primary);padding:8px 16px;border-radius:10px;}
.jm-composer__post:disabled{opacity:.5;}
.jm-composer__body{flex:1;overflow-y:auto;padding:16px;-webkit-overflow-scrolling:touch;}

.jm-field{margin-bottom:20px;}
.jm-field__label{display:block;font-size:13px;font-weight:700;color:var(--jm-text);margin-bottom:8px;}
.jm-field__label span{font-weight:500;color:var(--jm-sub);font-size:12px;}

.jm-seg{display:flex;gap:6px;flex-wrap:wrap;}
.jm-seg__btn{padding:8px 16px;border-radius:10px;font-size:13.5px;font-weight:600;color:#6b7684;background:#eef1f4;}
.jm-seg__btn.is-on{background:var(--jm-primary);color:#fff;}

.jm-chipgrp{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-bottom:8px;}
.jm-chipgrp:last-child{margin-bottom:0;}
.jm-chipgrp__l{font-size:11.5px;font-weight:800;color:var(--jm-sub);margin-right:2px;}
.jm-chip{padding:6px 12px;border-radius:999px;font-size:12.5px;font-weight:600;color:var(--jm-primary-deep);background:var(--jm-primary-weak);}
.jm-chip.is-on{background:var(--jm-primary);color:#fff;}

.jm-textarea{width:100%;min-height:140px;padding:14px;border:1.5px solid var(--jm-line);border-radius:14px;font-size:15px;line-height:1.6;background:#fff;resize:vertical;}
.jm-textarea:focus{outline:none;border-color:var(--jm-primary);}
.jm-count{text-align:right;font-size:12px;color:var(--jm-sub);margin-top:4px;}

.jm-thumbs{display:flex;flex-wrap:wrap;gap:8px;}
.jm-thumbs:not(:empty){margin-bottom:10px;}
.jm-thumb{position:relative;width:80px;height:80px;border-radius:10px;overflow:hidden;}
.jm-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.jm-thumb__x{position:absolute;top:3px;right:3px;width:20px;height:20px;border-radius:50%;background:rgba(0,0,0,.6);color:#fff;font-size:14px;line-height:1;display:grid;place-items:center;}
.jm-addphoto{padding:10px 16px;border:1.5px dashed var(--jm-gray2,#cfd6dd);border-radius:12px;font-size:13.5px;font-weight:600;color:var(--jm-sub);background:#fff;}
.jm-addphoto:disabled{opacity:.5;}

.jm-hint{margin-top:7px;font-size:12px;font-weight:600;color:var(--jm-sub);}
.jm-vidseg{display:flex;gap:6px;margin-top:9px;}
.jm-vseg{padding:7px 13px;border-radius:9px;font-size:12.5px;font-weight:600;color:#6b7684;background:#eef1f4;}
.jm-vseg.is-on{background:var(--jm-primary);color:#fff;}
.jm-composer__msg{min-height:20px;font-size:13px;font-weight:600;color:var(--jm-sub);text-align:center;margin-top:4px;}
.jm-composer__msg.is-err{color:#f5535b;}

/* ---------- 토스트 ---------- */
.jm-toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(12px);background:#1a1c1e;color:#fff;font-size:13.5px;font-weight:600;padding:11px 18px;border-radius:12px;opacity:0;pointer-events:none;transition:.22s;z-index:120;max-width:88%;text-align:center;}
.jm-toast.is-on{opacity:1;transform:translateX(-50%) translateY(0);}
