/* 로그인 홈 — 결정 BJ(2026-09-28). 카드 틀(.tw-home-row·.tw-home-log·.tw-home-notice)은 app.css, 이 파일은 BJ 새 모양만.
   색은 테마 변수만(라이트 = 결정 AQ: 녹색 대신 검정 계열 --me). 인라인 style 없음(CSP).
   결정 CN·CQ·CR 새 스타일(갈래 C, 2026-09-30): 옛 토큰 이름 → 새 이름, 칸 바탕 없음(CN2), 모서리 16·8·3, 금색 채움·번짐 없음(CR15). */

/* ---------- BJ1 도시 칸: 그림(작게) + 이름·단계·속성 + 점령 길드 + 설명 한 줄 + (길드원) 전쟁 한 줄 ---------- */
.tw-hm-city { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--sp-2); align-items: start; min-width: 0; }
.tw-hm-city:has(> .tw-hm-city__art:not([hidden])) { grid-template-columns: auto minmax(0, 1fr); }
.tw-hm-city__art[hidden] { display: none; }
/* 모바일 112×63(높이 96px 이하), 600px 이상 160×90 */
.tw-hm-city__art { width: 112px; height: 63px; overflow: hidden; border: var(--bw) solid var(--line); border-radius: var(--radius-sm); background: transparent; }
.tw-hm-city__art img { display: block; width: 100%; height: 100%; object-fit: cover; }
@media (min-width: 600px) { .tw-hm-city__art { width: 160px; height: 90px; } }
.tw-hm-city__body { display: grid; gap: var(--sp-1); min-width: 0; align-content: start; }
.tw-hm-city__head { display: flex; align-items: baseline; flex-wrap: wrap; gap: 2px var(--sp-2); min-width: 0; }
.tw-hm-city__head .tw-home-card__key { flex: none; }
.tw-hm-city__name { font-size: var(--fs-body); color: var(--fg-2); overflow-wrap: anywhere; }
.tw-hm-city__head small { color: var(--muted); }
.tw-hm-city__owner { display: flex; min-width: 0; font-size: var(--fs-sub); }
.tw-hm-owner { display: inline-flex; align-items: center; gap: var(--sp-1); min-width: 0; max-width: 100%; }
.tw-hm-owner b { min-width: 0; color: var(--fg-2); }
.tw-hm-owner small { flex: none; color: var(--muted); }
.tw-hm-owner.is-none { color: var(--muted); }
.tw-hm-city__desc { display: flex; align-items: baseline; gap: var(--sp-1); min-width: 0; font-size: var(--fs-sub); color: var(--fg); }
/* 결정 CK1(2026-09-29): 설명(서사파편 등)은 줄 수 제한 없이 끝까지 — 결정 BV6의 모바일 두 줄·PC 한 줄 말줄임을 대체.
   출처 태그 옆 좁은 칸에서 글이 세로로 길어지지 않게 한 문단으로 흐른다(태그 = 글 앞머리) */
.tw-hm-city__desc { display: block; line-height: var(--lh-base); }
.tw-hm-city__desc .tw-hm-src { margin-right: var(--sp-1); }
.tw-hm-city__text { white-space: normal; overflow-wrap: anywhere; }
.tw-hm-city__fragment { grid-column: 1 / -1; min-width: 0; overflow-wrap: anywhere; }
.tw-hm-log-link { display: flex; align-items: center; gap: var(--sp-2); min-height: 44px; min-width: 0; width: 100%; color: inherit; text-decoration: none; }
.tw-hm-profile-link { display: inline-flex; align-items: center; min-height: 44px; color: inherit; }
/* 결정 CM8(CK2 B안): 도시 칸 짧은 표 3줄(세금·서사파편·모험가) — 그림 아래까지 칸 전체 폭.
   결정 CN(갈래 C): 라벨 왼쪽(옅게)·값(밝게) + 값 칸 세로선(장식 --rule-v, CQ10 가로 줄 없음) */
.tw-hm-facts { grid-column: 1 / -1; display: grid; gap: 2px; margin: 0; min-width: 0; font-size: var(--fs-sub); }
.tw-hm-facts > div { display: grid; grid-template-columns: 4.5em minmax(0, 1fr); gap: var(--sp-2); min-width: 0; padding: 2px 0 2px var(--deco-pl); border-left: 2px solid var(--rule-v); }
.tw-hm-facts dt { color: var(--muted); }
.tw-hm-facts dd { margin: 0; min-width: 0; overflow-wrap: anywhere; color: var(--fg); }
.tw-hm-facts small { color: var(--muted); font-size: var(--fs-cap); }
/* 설명 출처 = 상태 태그(결정 BU3 — 모양은 app.css .tw-tag, 테두리 없음). 결정 BS② 2단계: 옛 외곽선 칩 → 글자색만 */
.tw-hm-src { flex: none; color: var(--muted); }
.tw-hm-src.is-city_intro { color: var(--gold); }
.tw-hm-src.is-fragment { color: var(--accent); }
.tw-hm-src.is-guild_intro { color: var(--fg-2); }   /* 결정 BN4: 점령 길드 소개 출처 칩 */
.tw-hm-war { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: 2px var(--sp-1); min-width: 0; font-size: var(--fs-cap); padding-top: var(--sp-1); border-top: var(--bw) solid var(--rule); }
.tw-hm-war > span { display: inline-flex; align-items: center; gap: var(--sp-1); min-width: 0; overflow-wrap: anywhere; }
.tw-hm-war__icon { color: var(--foe); font-size: var(--fs-sub); }   /* 선 아이콘(lineIcon 'swords' — 1em) */
.tw-hm-war__phase { color: var(--fg-2); font-weight: 700; }
.tw-hm-sep { color: var(--faint); }

/* ---------- BJ4 → 결정 CK3·CK4·CK5·CM3·CM10 세계지도 칸 ----------
   지도 높이: 결정 CM10(M2)로 BJ4 '모바일 200px 이하' → 휴대폰 270px · 넓은 화면(600px 이상) 320px [임시]. 폭은 칸 전체 —
   screens_home.js mountMap 이 칸 폭에 맞춰 좌표를 가로로 펼친다(CM3, 문장 칸·글자 크기 그대로). 색 = 테마 변수·문장 바탕 8색(emblem.css 와 같은 값). */
.tw-hm-worldsec { gap: var(--sp-1); }
.tw-hm-map { position: relative; width: 100%; min-width: 0; border: var(--bw) solid var(--line); border-radius: var(--radius-sm); background: transparent; touch-action: manipulation; }
.tw-hm-map__svg { display: block; width: 100%; border-radius: inherit; overflow: hidden; }
.tw-hm-map__svg > svg { display: block; width: 100%; height: 270px; }
@media (min-width: 600px) { .tw-hm-map__svg > svg { height: 320px; } }
.tw-hm-edges line { stroke: var(--line); stroke-width: 1; vector-effect: non-scaling-stroke; }
.tw-hm-edges line.is-hot { stroke: var(--me); stroke-width: 2; }
.tw-hm-node { stroke: var(--line); stroke-width: 1; vector-effect: non-scaling-stroke; fill: var(--bg); }
.tw-hm-node.is-owned { fill: var(--fg); }
/* 중립 도시·시작 거점 = 작은 점선 네모(점령 불가), 혼돈 = 작은 마름모 */
.tw-hm-node.is-neutral { fill: var(--bg); stroke: var(--muted); stroke-dasharray: 1.5 1; }
.tw-hm-node.is-chaos { fill: var(--foe); }
/* 결정 CM4(M3 U2): 무소속(점령 가능·주인 없음) = 빈 방패 칸. 회색 바탕(9번째 — 길드는 못 고름) + 점선 = '빈 자리'. 지금은 선 그림(도트 그림은 Codex 발주 뒤) */
.tw-hm-un__bg { fill: #5C5A55; stroke: var(--muted); stroke-width: 1; stroke-dasharray: 2 1.5; vector-effect: non-scaling-stroke; }
:root[data-theme="light"] .tw-hm-un__bg { fill: #8C8980; stroke: var(--line); }
@media (prefers-color-scheme: light) { :root[data-theme="system"] .tw-hm-un__bg { fill: #8C8980; stroke: var(--line); } }
.tw-hm-un__ic { fill: none; stroke: #F2E6C8; stroke-width: 1.2; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.tw-hm-unic { display: inline-block; flex: none; width: 16px; height: 16px; vertical-align: middle; }
/* 같은 길드 땅(M1 B안): 길드마다 한 묶음(g)에 원 + 굵은 길 → 묶음 전체를 옅게. 색 = 문장 바탕색, 흑·백은 테마 바탕에 묻혀 땅 색만 바꿈 [임시] */
.tw-hm-terr { opacity: .34; }
:root[data-theme="light"] .tw-hm-terr { opacity: .26; }
@media (prefers-color-scheme: light) { :root[data-theme="system"] .tw-hm-terr { opacity: .26; } }
.tw-hm-terr line { stroke-width: 6; stroke-linecap: round; }
.tw-hm-terr.is-bg-red { fill: #B8392F; stroke: #B8392F; } .tw-hm-terr.is-bg-blue { fill: #2F5FBF; stroke: #2F5FBF; } .tw-hm-terr.is-bg-green { fill: #3A8F45; stroke: #3A8F45; }
.tw-hm-terr.is-bg-gold { fill: #D2A22B; stroke: #D2A22B; } .tw-hm-terr.is-bg-purple { fill: #7446B8; stroke: #7446B8; } .tw-hm-terr.is-bg-teal { fill: #22968B; stroke: #22968B; }
.tw-hm-terr.is-bg-white { fill: #ECEAE2; stroke: #ECEAE2; } .tw-hm-terr.is-bg-black { fill: #8A8A99; stroke: #8A8A99; } .tw-hm-terr.is-bg-none { fill: var(--muted); stroke: var(--muted); }
:root[data-theme="light"] .tw-hm-terr.is-bg-white { fill: #9A988E; stroke: #9A988E; }
:root[data-theme="light"] .tw-hm-terr.is-bg-black { fill: #17171B; stroke: #17171B; }
/* 현재 위치 = 칸 바깥 네모 테두리(문장을 가리지 않음) + 퍼지는 네모. 고른 거점(이름 상자) = 점선 네모 */
.tw-hm-here { fill: none; stroke: var(--me); stroke-width: 2; vector-effect: non-scaling-stroke; }
.tw-hm-here.is-pulse { transform-box: fill-box; transform-origin: center; animation: tw-hm-pulse 1.8s ease-out infinite; }
@keyframes tw-hm-pulse { from { opacity: .85; transform: scale(1); } to { opacity: 0; transform: scale(1.8); } }
.tw-hm-pick { fill: none; stroke: var(--fg-2); stroke-width: 1.5; stroke-dasharray: 2 1; vector-effect: non-scaling-stroke; pointer-events: none; }
/* 결정 CI3: 지도 속 글자도 화면에서 12px 이상. 결정 CM10(M2) 높이 270·320px, viewBox 높이 98 → 1단위 ≈ 2.76px·3.27px
   → 이름표 4.6단위 ≈ 12.7px(휴대폰)·3.9단위 ≈ 12.7px(넓은 화면)(옛 200·230px 때 6·5.2단위). screens_home.js hereLabel 도 같은 값으로 자리를 잡는다. */
.tw-hm-herelabel { font-size: 4.6px; font-weight: 700; text-anchor: middle; fill: var(--fg-2); paint-order: stroke; stroke: var(--bg); stroke-width: 1px; }
@media (min-width: 600px) { .tw-hm-herelabel { font-size: 3.9px; } }
/* 결정 CI3: 점령 도시 문장 칸 안 첫 글자(옛 .tw-hm-emb__ch)는 없다 — 바탕색 칸 + 그림. 결정 CK5: 32px 그림을 17~20px로 줄여 그리므로 부드럽게(최근접이면 도트가 빠져 뭉개짐) */
.tw-hm-emb__img { image-rendering: auto; }
/* 범례 누름(M6): 그 길드 문장·땅만 또렷, 나머지 흐림 */
.tw-hm-map.is-focus .tw-hm-city:not(.is-on), .tw-hm-map.is-focus .tw-hm-terr:not(.is-on) { opacity: .25; }
/* 결정 CK4 거점 이름 작은 상자: 글자 13px, 여백 3·6px, 최대 폭 220px. 위치는 screens_home.js(CSSOM).
   결정 CN(갈래 C): 떠 있는 겹 칸 = 팝오버 모양(약간 투명 바탕 + 선 + 모서리 8 + 부드러운 그림자 — CN2 칸 바탕 대상 아님) */
.tw-hm-tip { position: absolute; z-index: 5; left: 0; top: 0; pointer-events: none; display: grid; gap: 2px; max-width: 220px; padding: 3px 6px;
  background: var(--pop-bg); color: var(--fg); border: var(--bw) solid var(--line-strong); border-radius: var(--radius-sm); box-shadow: var(--pop-shadow); font-size: var(--fs-sub); line-height: var(--lh-tight); white-space: nowrap; }
.tw-hm-tip[hidden] { display: none; }
.tw-hm-tip__nm, .tw-hm-tip__own { display: flex; align-items: center; gap: var(--sp-1); min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.tw-hm-tip__nm b { color: var(--fg-2); }
.tw-hm-tip small { color: var(--muted); font-size: var(--fs-cap); }
.tw-hm-tip__here { color: var(--me); font-size: var(--fs-cap); font-weight: 700; }
/* 결정 CK5 범례 한 줄: 문장 + (넓은 화면만) 길드 이름 + 거점 수, 많은 순. 무소속은 빈 방패 */
.tw-hm-legend { display: flex; flex-wrap: nowrap; align-items: center; gap: 2px var(--sp-2); min-width: 0; margin: 0; overflow: hidden; font-size: var(--fs-sub); }
.tw-hm-lg { display: inline-flex; align-items: center; gap: var(--sp-1); flex: none; min-height: 24px; padding: 0 2px; border: 0; background: none; color: var(--fg); font: inherit; cursor: pointer; }
.tw-hm-lg b { color: var(--fg-2); }
.tw-hm-lg__nm { max-width: 6em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tw-hm-lg__noemb { display: inline-block; width: 16px; height: 16px; border: var(--bw) solid var(--line-strong); border-radius: var(--radius-chip); }   /* 문장 없는 길드 = 빈 명판(채움 없음, CN2) */
.tw-hm-lg[aria-pressed="true"] { color: var(--accent); box-shadow: inset 0 -2px 0 var(--accent); }   /* 고른 범례 = 인디고 글자 + 밑줄(지금 탭과 같은 강조) */
.tw-hm-lg[aria-pressed="true"] b { color: var(--accent); }
.tw-hm-lg.is-un, .tw-hm-lg.is-more { cursor: default; color: var(--muted); }
.tw-hm-lg.is-un b { color: var(--fg); }
@media (max-width: 599px) { .tw-hm-lg[data-g] .tw-hm-lg__nm { display: none; } }
.tw-hm-world__sum { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px var(--sp-2); min-width: 0; }
.tw-hm-focus:empty { display: none; }
.tw-hm-focus { color: var(--fg-2); }
.tw-hm-world__sum .tw-gname, .tw-hm-war .tw-gname { font-weight: inherit; }   /* 결정 BS② 2단계: 공용 길드 이름 칸 — 요약 줄 굵기 그대로 */
/* 결정 CK6·CM9 최근 소식: 사건 주인(캐릭터·길드 이름 — 서버가 가린 값 그대로) */
.tw-hm-log__who { color: var(--fg-2); font-weight: 700; }
.tw-hm-log__who .tw-gname { font-weight: inherit; }
/* 결정 CJ11(A안): 효과 칭호 HOME_FRAME = 홈 스태미너 카드 테두리(2px 실선 한 겹, 그림자 없음). 모르는 값은 테두리 없음.
   '방랑자' 초록은 장식 테두리라 BT4(녹색은 성공·결과에만) 범위 밖. teal = 새 토큰 --frame-teal(이 화면 css — 결정 CJ11).
   결정 CN(갈래 C): 모서리는 카드와 같은 16(옛 직각 없음) — 색·두께는 CJ11 그대로. */
:root, :root[data-theme="dark"] { --frame-teal: #55ffff; --frame-green: #55ff55; }
:root[data-theme="light"] { --frame-teal: #006b73; --frame-green: #1f7a1f; }
@media (prefers-color-scheme: light) { :root[data-theme="system"] { --frame-teal: #006b73; --frame-green: #1f7a1f; } }
.tw-stamina.tw-hm-frame { border: 2px solid var(--hm-frame, var(--line)); box-shadow: none; }
.tw-stamina.is-frame-gold { --hm-frame: var(--gold); }
.tw-stamina.is-frame-silver { --hm-frame: var(--grade-relic); }
.tw-stamina.is-frame-teal { --hm-frame: var(--frame-teal); }
.tw-stamina.is-frame-green { --hm-frame: var(--frame-green); }

/* ---------- BJ8 랭킹: 한 줄(옛 칸 101px보다 낮게) ---------- */
/* 결정 CN(갈래 C): 금색 왼쪽 띠·금색 번짐 바탕 없음 — 1위 강조는 메달·종류 글자 금색만(CR15 색 세로선 줄이기) */
.tw-home-row.tw-hm-ranksec { display: block; padding-top: var(--sp-1); padding-bottom: var(--sp-1); }
.tw-hm-rank { display: flex; align-items: center; gap: var(--sp-1); min-width: 0; }
.tw-hm-rank__view { flex: 1 1 auto; min-width: 0; height: 32px; overflow: hidden; position: relative; }
.tw-hm-rank__card { display: flex; align-items: center; gap: var(--sp-1); height: 32px; min-width: 0; white-space: nowrap; font-size: var(--fs-sub); }   /* 결정 CG4 D5: 홈 줄 글자 14px → --fs-body(15) 뒤에도 한 줄 랭킹은 360px에서 종류 이름이 잘리지 않게 보조 크기 */
.tw-hm-rank__card[hidden] { display: none; }
.tw-hm-ava { flex: none; position: relative; display: inline-block; width: 28px; height: 28px; overflow: hidden; border: var(--bw) solid var(--gold); border-radius: var(--radius-chip); background: transparent; }
.tw-hm-ava img { position: absolute; left: -50%; top: -4%; width: 200%; max-width: none; height: auto; image-rendering: pixelated; }
.tw-hm-ava.is-emb { display: inline-grid; place-items: center; border-color: var(--line); }
.tw-hm-ava.is-none { border-color: var(--line); }
/* 결정 BS② 2단계(D1 그림자 없음) → 결정 CN(갈래 C): 금색 채움 칸 → 금색 명판(선 + 아이콘 색만, 채움 없음 CN2 · 모서리 3). 도안은 선 아이콘(lineIcon — 1em) */
.tw-hm-medal { flex: none; display: inline-grid; place-items: center; width: 20px; height: 20px; background: transparent; color: var(--gold); border: var(--bw) solid var(--gold); border-radius: var(--radius-chip); font-size: var(--fs-cap); }
/* 검토 수정(2026-09-28): 좁은 화면에서 '종류 1위' 글자가 먼저 잘려 '1위'가 사라졌다(375: 73px 중 41px, 320: 0px).
   줄어드는 순서 = 전직명·값(small) → 이름(b, 말줄임·title) — '종류 1위'는 줄이지 않는다. */
/* 검토 수정 2(2026-09-28): 위 수정 뒤 340px에서 1위 이름('새내기관찰')이 잘렸다(u8 계약: 짧은 이름은 말줄임 없이).
   → 줄어드는 순서 = 전직명·값 → 종류 이름('전투력 지표' → '전투…', '1위'는 항상 남음) → 1위 이름. */
.tw-hm-rank__kind { flex: 0 1 auto; display: inline-flex; align-items: baseline; gap: 3px; min-width: 3em; font-size: var(--fs-cap); font-weight: 700; color: var(--gold); }
.tw-hm-rank__kn { min-width: 1em; overflow: hidden; text-overflow: ellipsis; }
.tw-hm-rank__k1 { flex: none; }
/* 이름은 줄이지 않고(flex none — 조금이라도 줄면 바로 말줄임이 된다), 긴 이름만 '줄 폭 − 아바타·메달·종류 최소·나·간격'에서 자른다(100cqw = 줄 폭, 아래 container) */
.tw-hm-rank__card b { flex: none; min-width: 2.5em; max-width: calc(100cqw - 130px); overflow: hidden; text-overflow: ellipsis; color: var(--fg-2); }
.tw-hm-rank__card small { flex: 0 1000 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; color: var(--muted); }
.tw-hm-rank__card .tw-tag { flex: none; }
.tw-hm-rank__nav { display: inline-flex; gap: 2px; flex: none; }
.tw-hm-rank__nav .tw-icon-btn { width: 28px; height: 28px; }
/* 결정 DF1 검토(2026-09-30): 두 화살표 사이가 2px 라 공용 투명 ::before(44×44)가 겹쳐 '다음'이 '이전' 오른쪽 6px 를 가로챘다 → 바깥쪽으로만 넓혀 각 40×44, 서로 겹치지 않게 */
.tw-hm-rank__nav .tw-icon-btn[data-rank="prev"]::before { left: -13px; right: -1px; }   /* 테두리 안쪽 26 + 14 = 40 */
.tw-hm-rank__nav .tw-icon-btn[data-rank="next"]::before { left: -1px; right: -13px; }
/* 위 → 아래로 흘러 들어옴(이전 버튼은 아래 → 위). (결정 BS② D1: 메달 번짐 반짝임은 그림자라 뺐다) */
.tw-hm-rank__card.is-in, .tw-hm-notice.is-in { animation: tw-hm-drop .45s cubic-bezier(.2, .8, .2, 1); }
.tw-hm-rank__card.is-in-up, .tw-hm-notice.is-in-up { animation: tw-hm-rise .45s cubic-bezier(.2, .8, .2, 1); }
@keyframes tw-hm-drop { from { transform: translateY(-100%); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes tw-hm-rise { from { transform: translateY(100%); opacity: 0; } to { transform: none; opacity: 1; } }
/* 동작 줄이기: 효과 없이 바로 바뀐다(자동 넘김은 유지 — screens_home.js) */
@media (prefers-reduced-motion: reduce) {
  .tw-hm-rank__card.is-in, .tw-hm-rank__card.is-in-up, .tw-hm-notice.is-in, .tw-hm-notice.is-in-up { animation: none; }
  .tw-hm-here.is-pulse { animation: none; display: none; }
}
/* 결정 BU1: 11px → 12px(최소). 늘어난 글자 폭(360px에서 '전투력 지표' +3px)은 간격을 1~2px 줄여 되찾는다 — 줄어드는 순서는 위 검토 수정 그대로 */
@media (max-width: 380px) { .tw-hm-rank__kind { font-size: var(--fs-cap); gap: 2px; } .tw-hm-rank__card { gap: var(--sp-1); } .tw-hm-rank { gap: var(--sp-1); } }
/* 검토 수정(2026-09-28): 좁은 줄(모바일)에서는 전직명·값이 '검…'처럼 한두 글자만 남아 잡음이 됐다 → 줄 폭이 모자라면 통째로 숨긴다(넓은 화면은 그대로) */
.tw-hm-rank__view { container-type: inline-size; }
@container (max-width: 340px) { .tw-hm-rank__card small { display: none; } }
/* ---------- 결정 DB5(2026-09-30): 홈 머리 짧은 글(데네브 기록) — 접는 한 칸(details). 공지 아래 aside, 링크 없음 ---------- */
.tw-hm-lore__box { border-left: 2px solid var(--rule-v); padding: 2px 0 2px var(--sp-2); min-width: 0; }
.tw-hm-lore__box > summary { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px var(--sp-2); min-height: 44px; align-content: center; cursor: pointer; list-style: none; }
.tw-hm-lore__box > summary::-webkit-details-marker { display: none; }
.tw-hm-lore__box > summary::after { content: ""; flex: none; width: 7px; height: 7px; margin-left: auto; align-self: center; border-right: 2px solid var(--muted); border-bottom: 2px solid var(--muted); transform: translateY(-2px) rotate(45deg); }
.tw-hm-lore__box[open] > summary::after { transform: translateY(2px) rotate(-135deg); }
.tw-hm-lore__who { font-size: var(--fs-cap); color: var(--accent); }
.tw-hm-lore__one { font-size: var(--fs-sub); color: var(--fg); min-width: 0; }
.tw-hm-lore__box[open] .tw-hm-lore__one { display: none; }   /* 펼치면 한 줄 판 대신 본문 */
.tw-hm-lore__text { font-size: var(--fs-sub); line-height: 1.6; color: var(--fg); padding-bottom: var(--sp-1); }
/* 결정 CV8(2026-09-30): 시험 서비스 고지 줄(사업자 고지 바로 위, aside) */
.tw-hm-svc { padding: 0 2px; }
/* ---------- 결정 DU2(2026-09-30): 한 줄 피드백 — 공지 바로 아래 aside. 입력칸 + 오른쪽 엔터 아이콘 단추(누름 44px), 안내 한 줄 ---------- */
.tw-hm-fb[hidden] { display: none; }
.tw-hm-fb { min-width: 0; }
.tw-hm-fb__form { display: flex; align-items: stretch; gap: var(--sp-2); min-width: 0; margin: 0; }
.tw-hm-fb__input { flex: 1 1 auto; min-width: 0; min-height: 44px; padding: 0 var(--sp-3); font: inherit; font-size: var(--fs-body); color: var(--fg-2); background: transparent; border: var(--bw) solid var(--line-strong); border-radius: var(--radius-btn); }
.tw-hm-fb__input::placeholder { color: var(--muted); opacity: 1; }
.tw-hm-fb__input:focus { outline: 0; border-color: var(--accent); }
.tw-hm-fb__send { flex: none; width: 44px; min-height: 44px; display: inline-grid; place-items: center; padding: 0; font: inherit; color: var(--fg-2); background: transparent; border: var(--bw) solid var(--line-strong); border-radius: var(--radius-btn); cursor: pointer; }
.tw-hm-fb__send .tw-li { width: 18px; height: 18px; }
.tw-hm-fb__send:hover:not(:disabled) { border-color: var(--line-hover); }
.tw-hm-fb__send:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
.tw-hm-fb__send:disabled { cursor: progress; opacity: var(--disabled-opacity); }
.tw-hm-fb__msg { margin: var(--sp-1) 0 0; padding: 0 2px; font-size: var(--fs-sub); color: var(--muted); min-width: 0; overflow-wrap: anywhere; }
.tw-hm-fb__msg:empty { display: none; }
.tw-hm-fb__msg.is-bad { color: var(--bad); }

/* CA_HOME_NEWS_20261001 — 최신 3개 한 줄 순환. 긴 제목만 줄이고 월·일은 항상 남긴다. */
.tw-home-notice__line { align-items: center; gap: var(--sp-1); }
.tw-hm-notices { flex: 1 1 auto; min-width: 0; display: flex; align-items: center; gap: var(--sp-1); }
.tw-hm-notices__view { flex: 1 1 auto; min-width: 0; overflow: hidden; }
.tw-hm-notice { display: flex; align-items: center; gap: var(--sp-1); min-height: 44px; min-width: 0; color: var(--fg-2); font-size: var(--fs-sub); text-decoration: none; }
.tw-hm-notice[hidden] { display: none; }
.tw-hm-notice__title { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tw-hm-notice__date, .tw-hm-notice__sep { flex: none; color: var(--muted); font-size: var(--fs-cap); white-space: nowrap; }
.tw-hm-notice:focus-visible { outline: 2px solid var(--focus); outline-offset: -2px; }
.tw-alpha-portrait { display: block; max-width: 100%; height: auto; object-fit: contain; margin: 0 auto; }
.tw-form[data-alpha-name] input, .tw-form[data-alpha-reward] select { width: 100%; min-height: 44px; font: inherit; padding: 10px 12px; border: 1px solid var(--line-strong); border-radius: var(--radius-btn); background: var(--surface); color: var(--fg-2); }
.tw-form[data-alpha-name] input:focus, .tw-form[data-alpha-reward] select:focus { outline: 2px solid var(--accent); outline-offset: 2px; }
