/* BLOCROWN 브랜드 스타일(2026-09-26) — 로고 색: 라임 #C6FA49 · 딥그린 #093329 · 크림 #FBFAF1.
   원칙: ① 누를 것(주 버튼)은 딥그린 바탕 + 라임 글자로 가장 눈에 띄게 ② 제목·숫자는 굵고 크게 ③ 설명·약관 문구는 작고 흐리게
   ④ 창마다 위쪽 이모지 소제목(라임 알약)으로 지금 어디인지 한눈에. 기존 app-shell.css 위에 덮어쓴다(마지막에 불러온다). */
:root{--lime:#C6FA49;--lime-soft:#EEFBC9;--deep:#093329;--deep-2:#14493b;--cream:#FBFAF1;--ink:#0f231d;--muted:#5b6b64;--line:#dfe6d3;--warn:#fff1dc;--warn-ink:#7a3e00;--bad:#fdecea;--bad-ink:#9b1c1c}
body{color:var(--ink)}
.dialog{background:var(--cream);border-radius:24px}
.dialog h2{font-weight:900;letter-spacing:-.02em;color:var(--deep);line-height:1.2}
.dialog h3{font-weight:800;color:var(--deep)}

/* 창 위 소제목: 영어 대문자 → 이모지 + 한국어 알약 */
.eyebrow{display:inline-flex;align-items:center;gap:4px;padding:5px 11px;border-radius:999px;background:var(--lime);color:var(--deep);font-size:12px;font-weight:800;letter-spacing:0;text-transform:none}

/* 버튼 위계: 주(딥그린+라임) · 보조(흰 바탕+딥그린 테두리) · 조용한(글자만) */
.primary{background:var(--deep)!important;color:var(--lime)!important;border:0!important;font-weight:800!important;border-radius:14px!important;box-shadow:0 2px 0 #03231b}
.primary:active{transform:translateY(1px);box-shadow:none}
/* 2026-10-12 CMP-27: a disabled primary button uses the shared disabled look (app-shell.css button:disabled: #e4e7e0 on #4f5c5d text, 4.5:1+, dashed border) - the old #eef1ec on #b9c4bf was 1.57:1 */
.secondary{background:#fff!important;color:var(--deep)!important;border:1.5px solid var(--deep)!important;font-weight:700!important;border-radius:14px!important}
.quiet{color:var(--deep-2)!important;font-weight:700}

/* 강조 상자 · 흐린 설명 */
.claim-plan,.all-agree,.account-state{background:var(--lime-soft)!important;border-left:5px solid var(--lime);color:var(--deep)!important}
.claim-plan.landmark{background:var(--warn)!important;border-left-color:#ffb547;color:var(--warn-ink)!important}
.form-error{background:var(--bad)!important;color:var(--bad-ink)!important;border-left:5px solid #e25555}
.econ-note,.dialog small,.backup-note{color:var(--muted)!important;font-size:12.5px;line-height:1.55}

/* 상단 로고 */
.brand{display:inline-flex!important;align-items:center;gap:6px;background:var(--cream)!important;color:var(--deep)!important;font-weight:900!important;letter-spacing:.04em}
.brand .brand-mark{width:30px;height:auto;display:block}
.brand b{font-weight:900;font-size:13px;letter-spacing:.04em;white-space:nowrap}
@media (max-width:439px){.brand b{display:none}.brand{padding-inline:10px!important}}/* 좁은 폰: 도형 로고만 — 포인트 숫자가 잘리지 않게 · 2026-10-11 QA Q13: 412(안드로이드)에서 글자 로고가 보이며 동네 칩 「📍 광…」·이름 칩이 잘렸다 → 440px 미만은 도형만 */

/* 탭 · 알약 선택 */
.auth-tabs button[aria-selected="true"],[data-econ-tab].active,[data-econ-tab][aria-selected="true"]{background:var(--deep)!important;color:var(--lime)!important}
.auth-tabs{background:#e9efe0!important}

/* 결과 화면 숫자 */
#resultHeight,#resultTime{color:var(--deep);font-weight:900}
#resultNote{font-weight:700;color:var(--deep)}

/* 첫 로딩: 로고 + 앱 이름 + 진행 막대 */
.splash{position:fixed;inset:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:var(--cream);transition:opacity .45s ease}
.splash img{width:min(72vw,320px);height:auto}
.splash-tag{margin:0;font-weight:800;color:var(--deep);font-size:16px}
.splash-note{margin:0;color:var(--muted);font-size:13px}
.splash-bar{width:min(60vw,240px);height:8px;border-radius:99px;background:#e6ecd9;overflow:hidden}
.splash-bar i{display:block;height:100%;width:40%;border-radius:inherit;background:var(--lime);animation:splash-run 1.1s ease-in-out infinite}
@keyframes splash-run{0%{transform:translateX(-100%)}100%{transform:translateX(260%)}}
.splash.done{opacity:0;pointer-events:none}
@media (prefers-reduced-motion:reduce){.splash-bar i{animation:none;width:100%}}

/* 건물주 순위 */
.rank-list{list-style:none;margin:8px 0;padding:0;display:grid;gap:6px}
.rank-list li{display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:8px;padding:10px 12px;border-radius:14px;background:#fff;border:1px solid var(--line)}
.rank-list li b{font-weight:900;color:var(--deep)}.rank-list li>*:nth-child(2){min-width:0}.rank-list li>*:nth-child(2) b{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}/* 긴 닉네임은 두 줄까지(2026-10-11 QA B-03: 320에서 끝 숫자가 잘려 같은 이름 계열이 구분되지 않았다) · 더 길면 말줄임 */
.rank-list li .rank-no{font-weight:900;font-size:16px;text-align:center}
.rank-list li.me{background:var(--lime-soft);border-color:var(--lime)}
.rank-list li small{color:var(--muted)}

.claim-owner{margin:6px 0;padding:8px 12px;border-radius:12px;background:#fff7d6;color:#6b4e00;font-weight:800}
/* 2026-10-11 QA Q06: 순위 알약 5개가 한 줄에 눌려 「이번 달 명성」이 3줄(ja 한 글자씩 세로) → 넘치면 다음 줄 · 글자는 한 줄 */.rank-filter{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}.rank-filter button{flex:1 1 auto;white-space:nowrap;padding:0 12px;min-height:44px;border-radius:999px;border:1px solid #cfdcd4;background:#fff;color:#16323b;font-size:var(--fs-body,14px);font-weight:700}.rank-filter button.active{background:var(--deep);color:var(--lime);border-color:var(--deep);font-weight:800}#rankList li.rank-empty-row{display:block;padding:14px 12px;text-align:center;color:var(--text-muted,#56686c);font-size:var(--fs-body,14px);line-height:var(--lh-body,1.45)}#rankList li.rank-empty-row>span{display:block}/* 2026-10-12 REST: filter chips = same size and border as the other chips (they were 17px with a 1.5px dark ring); empty ranking = one full-width line */
.safety-list{list-style:none;padding:0;margin:6px 0;display:grid;gap:6px}.safety-list li{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 10px;border-radius:12px;background:#fff;border:1px solid var(--line)}.safety-list li b{margin-right:auto}
.ad-report{margin-top:6px}
.admin-section{margin:8px 0;border:1px solid var(--line);border-radius:14px;padding:8px 10px;background:#fff}.admin-section>summary{font-weight:900;color:var(--deep);cursor:pointer}.admin-card{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:8px;border-radius:12px;background:var(--cream);margin:6px 0}.admin-card b{width:100%}.admin-card p{width:100%;margin:0;font-size:12.5px;color:var(--muted)}
.ad-preview{max-width:100%;max-height:180px;border-radius:12px;display:block;margin:6px 0}.ad-file{display:none}
.admin-thumb{max-height:140px;background:#111}.scan-ok{color:#1b6b3a!important;font-weight:700}.scan-warn{color:var(--bad-ink)!important;font-weight:800;background:var(--bad);padding:4px 8px;border-radius:8px}
.peer-label{background:var(--deep)!important;color:var(--lime)!important;border:2px solid var(--lime);font-weight:900!important;font-size:12.5px!important;padding:4px 9px!important;border-radius:999px!important;box-shadow:0 2px 6px rgba(0,0,0,.25);transform:translate(-50%,calc(-100% - 6px))!important}
.peer-label::after{content:'';position:absolute;left:50%;bottom:-7px;transform:translateX(-50%);border:6px solid transparent;border-top-color:var(--lime);border-bottom:0}
.boost{margin-top:8px}
.plane-label{position:absolute;transform:translate(-50%,calc(-100% - 14px));background:rgba(9,51,41,.85);color:#fff;padding:3px 8px;border-radius:999px;font-size:11.5px;font-weight:800;pointer-events:none;white-space:nowrap;border:1.5px solid var(--lime)}body.panel-open .plane-label{visibility:hidden}
.transit-box{display:grid;gap:8px;margin-bottom:14px;padding:12px;border-radius:16px;background:#fff;border:1px solid var(--line)}.transit-list{list-style:none;padding:0;margin:0;display:grid;gap:6px}.transit-list li{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 10px;border-radius:12px;background:var(--cream);border:1px solid var(--line)}.transit-list li b{margin-right:auto;color:var(--deep)}
.transit-pill{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(96px + env(safe-area-inset-bottom,0px));z-index:30;background:var(--deep);color:var(--lime);border:2px solid var(--lime);border-radius:999px;padding:8px 14px;font-weight:800}
.first-steps{width:300px;max-width:100%;z-index:25;display:grid;grid-template-columns:auto 1fr auto;gap:2px 10px;align-items:center;padding:10px 12px;border-radius:16px;background:var(--deep);color:#fff;box-shadow:0 6px 18px rgba(0,0,0,.18);font-size:13.5px}/* 고정 top:206px 대신 왼쪽 상태 묶음(#hudLeft) 안에 쌓는다(2026-09-27) */.first-steps b{color:var(--lime);font-size:12px;grid-column:1/3}.first-steps span{grid-column:1/3;font-weight:700}.first-steps-close{grid-row:1/3;grid-column:3;background:none;border:0;color:#fff;font-size:22px;line-height:1;padding:4px;min-width:44px;min-height:44px}
body[data-phase="climb"] .first-steps,body.panel-open .first-steps,body.playing .first-steps,body[data-phase="summit"] .first-steps,body[data-guide-off] .first-steps{display:none}/* 카운트다운(arrival)도 body.playing — JS가 늦어도 숨는다 */
/* 🎓 첫 5분 체험(2026-09-27 · onboarding-ui.mjs): 한 줄 안내가 곧 버튼(누르면 추천 건물로) · 추천 건물 표는 금빛 테두리 · 연습 건물은 점선 */
.onboarding-go{grid-column:1/3;display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:44px;padding:4px 0;background:none;border:0;color:#fff;text-align:left;font-weight:700;cursor:pointer}.onboarding-go span{grid-column:auto}.onboarding-name{font-weight:400;opacity:.85;font-size:12px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.approach-point.tutorial-pick{border-color:#ffd166;box-shadow:0 0 0 3px #ffd16699,0 2px 9px #23453633;animation:obPulse 1.6s ease-in-out infinite}.approach-point.practice-pick{border-style:dashed;border-color:#ffd166}@keyframes obPulse{50%{box-shadow:0 0 0 7px #ffd16633,0 2px 9px #23453633}}@media(prefers-reduced-motion:reduce){.approach-point.tutorial-pick{animation:none}}
#result[data-onboarding] #viewSummit,#result[data-onboarding] #resultDecor,#result[data-onboarding] #resultCollection,#result[data-onboarding] #resultHome{display:none}/* 첫 체험 정상 카드: 건물·기록 + 무료 꾸미기 하나만 */
.ob-pick{display:grid;gap:10px;margin-top:14px;text-align:left}.ob-pick h3{margin:0;font-size:17px}.ob-note{margin:0;color:var(--muted,#52666c);font-size:13px}.ob-colors{display:flex;flex-wrap:wrap;gap:6px}.ob-color{width:44px;height:44px;min-width:44px;border-radius:50%;border:3px solid #fff;box-shadow:0 0 0 1px #18323c44;padding:0}.ob-color[aria-checked="true"]{box-shadow:0 0 0 3px #18323c}
.ob-kinds{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.ob-kind{display:flex;flex-direction:column;align-items:center;gap:2px;min-height:64px;padding:8px 4px;white-space:nowrap}.ob-icon{font-size:22px}.ob-pick button{min-height:44px}.ob-dialog .ob-pick{margin-top:4px}
.prelaunch-bar{position:fixed;left:50%;transform:translateX(-50%);top:calc(64px + env(safe-area-inset-top,0px));z-index:26;background:var(--lime);color:var(--deep);border:0;border-radius:999px;padding:8px 14px;font-weight:900;box-shadow:0 4px 12px rgba(0,0,0,.18);max-width:calc(100% - 32px)}

/* 칭호·시즌·크루(2026-09-26) */
.title-bar{width:100%;height:10px;accent-color:var(--lime,#c6f432);margin:4px 0 2px}
.title-ladder ol{list-style:none;padding:0;margin:6px 0;display:grid;gap:4px}
.title-ladder li{opacity:.55;display:flex;gap:6px;align-items:baseline;flex-wrap:wrap}
.title-ladder li.done{opacity:1}
.season-badges{font-size:.9rem;line-height:1.5;margin:6px 0}
.crew-form{display:grid;gap:6px;margin:10px 0;padding:10px;border-radius:12px;background:rgba(0,0,0,.04)}
.crew-form input{min-width:0}
.crew-code{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:8px 0}
.crew-code b{font-size:1.2rem;letter-spacing:.12em}
.crew-members .crew-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
button.link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 12px;margin:2px;border-radius:12px;border:1.5px solid #b9cbb8;background:#eef4ea;color:#093329;cursor:pointer;font:inherit;font-size:.85rem;font-weight:700;text-decoration:none}button.link:active{transform:translateY(1px)}/* 2026-09-29: 밑줄 글자 버튼 → 3차 버튼 */
button.link.danger{color:#b3261e;border-color:#e6b4ae;background:#fdf1ef}

/* 게임 안내 그림 · 내 건물 관리(2026-09-26) */
.guide-pic{margin:6px 0 10px}.guide-svg{display:block;width:100%;max-width:340px;height:auto;margin:0 auto}
.rule-list{list-style:none;padding:0;margin:8px 0;display:grid;gap:8px;font-size:.92rem;line-height:1.45}.rule-list b{display:block}
.property-card.crown-held{border-left:5px solid #C6FA49}.property-card.crown-warn{border-left:5px solid #f0b429}
.property-card.crown-fading{border-left:5px solid #ff8a3d}.property-card.crown-open{border-left:5px solid #d64545}
/* 2026-09-27 소유 정책 v3: 🏅 시즌 기록왕 줄은 👑 주인 줄과 다른 색 · 정책 전 소유(legacy) 카드 */
.season-record{color:#8a5a12;font-weight:600}.property-card.crown-legacy{border-left:5px solid #8a7fd1}
.property-card small{display:block;color:#5b6b64;margin:4px 0 8px}
.mission-box{background:#EEFBC9;border-radius:14px;padding:10px 12px;margin:0 0 12px}.mission-box h3{margin:0 0 6px}.mission{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 0;border-top:1px solid #dfe6d3}.mission.done span{font-weight:700}.mission button{min-width:72px}
.pass-box{margin:14px 0}.pass-head,.pass-tier{display:grid;grid-template-columns:64px 1fr 1fr;gap:8px;align-items:center}.pass-head{font-size:12px;color:#5b6b64;font-weight:700;padding:0 6px}.pass-list{padding:0}.pass-tier{opacity:1}.pass-tier:not(.reached) .rank-no{color:var(--text-muted,#56686c)}.pass-tier .rank-no{white-space:nowrap}.pass-tier button{width:100%;font-size:13px;padding:6px 8px}.pass-tier button.quiet:disabled{opacity:1;color:var(--text-muted,#56686c)!important}/* 2026-10-12 REST: locked rewards were opacity .7 x .55 (3.0:1) and the score wrapped to two lines (20 / pt) */.style-pick{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.map-legend{font-size:12px;margin:4px 0 0;color:#5b6b64;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center}.map-legend .lg{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:4px;vertical-align:-2px;border:1px solid #8a9f98}.lg-free{background:#c3d1ca}.lg-lock{background:#e7a58f;border-color:#a4533a!important}.lg-own{background:#ad8de3;border-color:#7652b1!important}

/* 📜 건물 인수 증서(2026-09-27) */
.deed-modal{display:grid;place-items:center;padding:16px;z-index:60}
.deed-dialog{max-width:420px;width:100%;background:transparent;box-shadow:none;padding:0}
.deed-paper{position:relative;background:#fbf6e7;color:#2b261c;border:1px solid #d8cba5;border-radius:6px;padding:22px 22px 26px;box-shadow:0 18px 40px rgba(0,0,0,.28),inset 0 0 0 6px #fbf6e7,inset 0 0 0 7px #c9b37a;transform:translateY(24px) scale(.96);opacity:0;transition:transform .45s cubic-bezier(.2,.9,.3,1.2),opacity .35s}
.deed-modal.play .deed-paper{transform:none;opacity:1}
.deed-kicker{font:600 11px/1 ui-monospace,monospace;letter-spacing:.14em;color:#6e6140;margin:0 0 6px}
.deed-paper h2{margin:0 0 12px;font-size:26px;letter-spacing:.08em;color:#3a2f16}
.deed-rows{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:0 0 12px;font-size:15px}.deed-rows dt{color:#6e6140}.deed-rows dd{margin:0;font-weight:700}
.deed-terms{font-size:13px;line-height:1.55;color:#5a4f37;margin:0 0 14px}
.deed-sign{display:flex;align-items:flex-end;gap:10px;border-bottom:1.5px solid #3a2f16;padding-bottom:2px}.deed-sign span{font-size:12px;color:#6e6140;white-space:nowrap;padding-bottom:8px}.deed-sign svg{width:100%;max-width:300px;height:64px;overflow:visible}
.deed-ink{font:italic 700 40px "Snell Roundhand","Apple Chancery","Segoe Script",cursive;fill:transparent;stroke:#1b3a8a;stroke-width:1.2;stroke-dasharray:900;stroke-dashoffset:900}
.deed-modal.play .deed-ink{animation:deedWrite 1.6s .55s ease-out forwards}
@keyframes deedWrite{70%{stroke-dashoffset:0;fill:transparent}100%{stroke-dashoffset:0;fill:#1b3a8a}}
.deed-stamp{position:absolute;right:18px;bottom:44px;width:92px;height:92px;border:4px solid #c8352b;border-radius:50%;color:#c8352b;display:grid;place-items:center;align-content:center;font-size:30px;line-height:1;transform:rotate(-14deg) scale(2.4);opacity:0}
.deed-stamp small{font:800 11px/1 sans-serif;letter-spacing:.12em;margin-top:4px}
.deed-modal.play .deed-stamp{animation:deedStamp .35s 2.3s cubic-bezier(.3,1.6,.5,1) forwards}
@keyframes deedStamp{to{transform:rotate(-14deg) scale(1);opacity:.88}}
.deed-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:14px}
@media (prefers-reduced-motion:reduce){.deed-paper,.deed-modal.play .deed-paper{transition:none;transform:none;opacity:1}.deed-ink{fill:#1b3a8a;stroke-dashoffset:0;animation:none!important}.deed-stamp{transform:rotate(-14deg);opacity:.88;animation:none!important}}
.wish-head{margin:18px 0 4px}.wish-list{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 12px}.wish-item{border:1px solid #dfe6d3;background:#fff;border-radius:999px;padding:6px 12px;font:inherit;font-size:.9rem;cursor:pointer}
.signup-cta{background:#C6FA49!important;color:#093329!important;font-weight:800;border:0}
/* 회원가입(2026-09-27 · 명세 §10): 한 줄 고정 · 줄어들지 않음 · 44px. 너무 길면 한 요소 안에서 말줄임 */header .signup-cta{position:static!important;flex:0 0 auto;white-space:nowrap;min-height:44px;height:44px;padding:0 12px;font-size:13px;line-height:44px;max-width:40vw;overflow:hidden;text-overflow:ellipsis;border-radius:14px}

/* 가입·로그인 화면 언어 버튼(2026-09-27) */
.auth-lang{display:flex;gap:6px;justify-content:center;margin:2px 0 10px}.auth-lang button{flex:1;min-height:44px;border:1px solid #cfd9cc;border-radius:999px;background:#fff;color:#17333c;font:inherit;font-size:13px;font-weight:700}.auth-lang button[aria-pressed="true"]{background:var(--deep);color:var(--lime);border-color:var(--deep)}
/* 자전거 게이지 안의 내리기·다시 타기(2026-09-27) */
#bikeToggle{display:block;margin-top:8px;width:100%;min-height:44px;border:0;border-radius:10px;background:var(--deep);color:var(--lime);font:inherit;font-size:13px;font-weight:700;pointer-events:auto}#bikeToggle[hidden]{display:none}
/* 🔑 내 건물 · 🌱 단계 · 🏷 건물 인수·경매(2026-09-27 소유 정책 v3 PR4) */
.summary-line{display:block}.property-card.crown-due{border-left:5px solid #f0b429}.property-bills{display:grid;gap:4px;margin:6px 0 10px}.property-bills small{display:block;color:#5b6b64}
.prop-tabs{display:flex;gap:6px;margin:4px 0 8px}.prop-tabs button{flex:1;min-height:44px;border:1px solid #cfd9cc;border-radius:999px;background:#fff;color:#17333c;font:inherit;font-size:13px;font-weight:700}.prop-tabs button.active{background:var(--deep);color:var(--lime);border-color:var(--deep)}
.tier-progress{background:#EEFBC9;border-radius:14px;padding:8px 12px;margin:8px 0}.tier-progress:empty{display:none}.tier-line{margin:2px 0;font-weight:600}
.auction-filters{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.auction-filters select,.auction-filters input{min-height:44px;flex:1 1 140px;border:1px solid #cfd9cc;border-radius:10px;padding:0 8px;font:inherit;font-size:13px;background:#fff;color:#17333c}
.auction-card{position:relative;border:1px solid #dce1d6;border-radius:14px;padding:12px;margin:8px 0;background:#fff}.auction-card.focus{border-color:#093329;box-shadow:0 0 0 2px #C6FA49}.auction-card small{display:block;color:#5b6b64;margin:2px 0}.auction-card h3{margin:6px 0 2px}.auction-card button{margin-top:8px;min-height:44px}
.auction-badge{display:inline-block;font-size:12px;font-weight:800;padding:2px 8px;border-radius:999px;background:#093329;color:#C6FA49}
#propertyBadge.badge-dot{color:#b3261e;font-weight:800}
/* 🔘 공통 버튼(2026-09-29 오너 플레이테스트 「누르는지 모르는 텍스트를 모두 버튼 모양으로」): primary = 진한 채움 · secondary = 흰 바탕 + 진한 테두리 · tertiary(.btn-t .text-help .quiet) = 옅은 채움 + 테두리 · 44px 이상 · 눌림·초점 상태 · 밑줄 글자 버튼 없음 */
.btn-t,.text-help,.quiet,.ar-more{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:44px!important;padding:0 14px!important;border-radius:12px!important;border:1.5px solid #b9cbb8!important;background:#eef4ea!important;color:#093329!important;text-decoration:none!important;font-weight:700!important;cursor:pointer;box-sizing:border-box;line-height:1.2;text-align:center}
.btn-t:active,.text-help:active,.quiet:active,.ar-more:active{background:#dde9d6!important;transform:translateY(1px)}
.secondary:active{background:#eef4ea!important;transform:translateY(1px)}
.btn-t:focus-visible,.text-help:focus-visible,.quiet:focus-visible,.secondary:focus-visible,.primary:focus-visible{outline:3px solid var(--focus-ring,#227dbe);outline-offset:2px}
.btn-t:disabled,.quiet:disabled{opacity:.55;transform:none}
/* 펼치기(details>summary)도 버튼 모양: 테두리 · 채움 · 오른쪽 화살표(열리면 위로) · 목록 기호 없음 */
details>summary{display:flex;align-items:center;gap:6px;min-height:44px!important;padding:8px 42px 8px 14px!important;margin:6px 0;border:1.5px solid #b9cbb8;border-radius:12px;background:#f4f8f0;color:#093329;font-weight:800;cursor:pointer;list-style:none;position:relative;box-sizing:border-box}
details>summary::-webkit-details-marker{display:none}
details>summary::after{content:'';position:absolute;right:17px;top:50%;width:8px;height:8px;border-right:2.5px solid currentColor;border-bottom:2.5px solid currentColor;transform:translateY(-70%) rotate(45deg)}
details[open]>summary::after{transform:translateY(-25%) rotate(-135deg)}
details>summary:active{background:#e3ecde}details[open]>summary{background:#e9f2e4}
#osmSource{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border-radius:12px;border:1.5px solid #b9cbb8;background:#eef4ea;color:#093329;font-weight:700;font-size:13px;text-decoration:none;margin-top:12px}
/* 머리줄(뒤로 · 단계 · 제목 · 도움말 · 닫기) — 첫 아지트·창 겹의 「뒤로」가 같은 모양 */
.sheet-head{display:flex;align-items:center;gap:8px;margin-bottom:6px;min-width:0}.sheet-head h2{flex:1;min-width:0;margin:0;font-size:20px;word-break:keep-all;overflow-wrap:anywhere}.sheet-head .close{position:static!important;flex:0 0 auto;min-width:44px;min-height:44px;font-size:24px}
.sheet-back{flex:0 0 auto;padding:0 12px 0 8px!important}.sheet-back-i{font-size:24px;line-height:1;margin-top:-2px}.sheet-help{flex:0 0 auto}
@media(max-width:374px){.sheet-head{flex-wrap:wrap}.sheet-head h2{flex:1 1 100%;order:5;font-size:18px}.sheet-back span:last-child{display:none}.sheet-back{min-width:44px}}
.panel-back{position:absolute;top:14px;left:14px;z-index:2;display:inline-flex;align-items:center;gap:4px;min-height:44px;padding:0 12px 0 8px;border-radius:12px;border:1.5px solid #b9cbb8;background:#eef4ea;color:#093329;font-weight:800;max-width:calc(100% - 96px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.panel-back .sheet-back-i{font-size:22px}.panel-back .pb-t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}/* 2026-10-12 L03: a long previous-window title (en feed back button) was cut mid-word without an ellipsis */
.has-panel-back{padding-top:66px!important}
/* 카테고리 한 줄: 줄바꿈 없이 좌우로 넘긴다 · 넘치는 쪽 끝을 흐리게(옆에 더 있어요) · 더보기는 줄 끝 */
.cat-row{display:flex!important;flex-wrap:nowrap!important;gap:8px;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:none;padding:2px 2px 6px;margin:6px -2px;-webkit-overflow-scrolling:touch}
.cat-row::-webkit-scrollbar{display:none}.cat-row>*{flex:0 0 auto;scroll-snap-align:start;white-space:nowrap}
.cat-row[data-hint="right"]{-webkit-mask-image:linear-gradient(90deg,#000 82%,#0000);mask-image:linear-gradient(90deg,#000 82%,#0000)}.cat-row[data-hint="left"]{-webkit-mask-image:linear-gradient(90deg,#0000,#000 18%);mask-image:linear-gradient(90deg,#0000,#000 18%)}
.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:8px;margin:6px 0 10px}.cat-grid>button{min-height:48px;justify-content:flex-start;text-align:left}
/* 안내 한 줄 세우기(notices.mjs): 뒤로 밀린 안내는 앞 것이 사라질 때까지 숨긴다 */
.notice-held{display:none!important}
/* 🎨 내 건물 시트(2026-09-29 오너 플레이테스트): 「건물 꾸미기」가 큰 주 버튼 · 「이 건물 오르기」는 작은 보조 버튼 + 설명 한 줄 */
.decorate-mine{display:flex;align-items:center;justify-content:center;width:100%;min-height:56px!important;margin:12px 0 8px;font-size:17px!important}
/* 2026-10-11 compose redesign M7: owner sheet action row (post / decorate / manage) -> option A (2026-10-11): two verb cards with a where-it-shows tag, a small row (posts / settings), resume row */
.mine-acts{display:flex;gap:8px;margin:10px 0 6px}.mine-acts[hidden]{display:none!important}
.mine-acts>.mine-act{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:3px;min-height:104px!important;margin:0!important;padding:10px 12px!important;border-radius:16px;font-size:clamp(12px,3.6vw,14px)!important;font-weight:800;line-height:1.2;text-align:left;word-break:keep-all;overflow-wrap:normal;hyphens:auto}
.mine-acts>.mine-act[hidden]{display:none!important}.mine-acts .mine-ic{font-size:22px;line-height:1}
.mine-card .mine-t{font-size:clamp(15px,4.4vw,18px);font-weight:900;letter-spacing:-.3px}.mine-card .mine-s{font-size:12px;font-weight:600;opacity:.82}
/* tidy4 (2026-10-11): the where-it-shows tag was pushed below the collapsed (peek) sheet - on phones (<=700px) the peek sheet drops the card min-height, icon and sub line (expanded sheet unchanged) - en tags are short (en.json) */.mine-card .mine-tag{display:inline-block;max-width:100%;margin-top:auto;padding:3px 8px;border-radius:8px;font-size:11.5px;font-weight:800;line-height:1.3;background:#efe9fb;color:#3b2f6b;white-space:normal}
.mine-card.primary .mine-tag{background:#ffffff24;color:#e6f7a8}
.mine-sub{display:flex;gap:8px;margin:0 0 6px}
@media (max-width:400px){.mine-acts{gap:6px}.mine-acts>.mine-act{padding:8px!important;min-height:96px!important}.mine-card .mine-s{display:none}.mine-card .mine-t{font-size:clamp(13px,4vw,16px)}.mine-card .mine-tag{font-size:10.5px;padding:2px 6px}}@media (max-width:700px){.detail.peek .mine-acts>.mine-act{min-height:0!important;gap:2px}.detail.peek .mine-card :is(.mine-ic,.mine-s){display:none}}.mine-sub[hidden]{display:none!important}
.mine-sub>.mine-small{flex:1 1 0;min-width:0;display:flex;align-items:center;justify-content:center;gap:6px;min-height:44px!important;margin:0!important;padding:6px 8px!important;border-radius:14px;font-size:clamp(12px,3.6vw,14px)!important;font-weight:800;line-height:1.2;word-break:keep-all}.mine-sub>.mine-small[hidden]{display:none!important}
.mine-resume{display:flex;align-items:center;flex-wrap:wrap;gap:0 12px;margin:0 0 6px;font-size:14px;color:var(--text-muted,#56686c)}.mine-resume[hidden]{display:none}
.mine-resume>p{display:flex;align-items:center;flex-wrap:wrap;gap:2px;margin:0}.mine-resume>p[hidden]{display:none}
.mine-resume .mine-resume-go{min-height:var(--tap,44px);padding:0 6px!important;font-weight:800;color:#093329;background:transparent!important;border:0!important;box-shadow:none!important;text-decoration:underline}
.detail-actions .climb-small{flex:0 1 auto!important;min-height:44px!important;padding:0 14px!important;font-size:13px!important;border-width:1.5px!important}
.climb-note{margin:4px 0 10px;font-size:12.5px;line-height:1.5;color:#3d5a55}
.cat-line{display:flex;gap:8px;align-items:stretch;min-width:0;margin:6px 0}.cat-line>.cat-row{flex:1 1 auto;min-width:0;margin:0}.cat-line>button{flex:0 0 auto;margin:0 0 6px!important;white-space:nowrap}
/* 🔘 창 안 링크도 버튼 모양(2026-09-29 오너 플레이테스트 「누르는지 모르는 글자」 · 문장 속 밑줄 글자 없음): 3차 버튼과 같은 모양 · 지도 한쪽의 OpenStreetMap 출처 표기는 법적 표기라 글자 그대로 */
.dialog a[href]:not(.plain),.fh a[href]:not(.plain),.gc a[href]:not(.plain){display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:44px;padding:0 14px;margin:4px 6px 4px 0;border-radius:12px;border:1.5px solid #b9cbb8;background:#eef4ea;color:#093329;font-weight:700;font-size:14px;text-decoration:none;box-sizing:border-box;vertical-align:middle;line-height:1.2}
.dialog a[href]:not(.plain):active,.fh a[href]:not(.plain):active,.gc a[href]:not(.plain):active{background:#dde9d6;transform:translateY(1px)}
.dialog a[href]:not(.plain):focus-visible,.fh a[href]:not(.plain):focus-visible,.gc a[href]:not(.plain):focus-visible{outline:3px solid var(--focus-ring,#227dbe);outline-offset:2px}
/* 탭(모아보기·새 소식)도 44px · 안내 카드 × 는 옅은 채움(창의 × 와 같은 모양) */
.seg button{min-height:44px!important}
.guide-x,.guide-note-x{background:#e8ece6!important;color:#244a43!important}.guide-x:active,.guide-note-x:active{background:#d6ddd3!important}
.legal-link{min-height:44px!important;padding:0 14px;margin:4px 8px 4px 0!important;border-radius:12px;border:1.5px solid #b9cbb8;background:#eef4ea;color:#093329!important;text-decoration:none}
/* 성장 탭(좁은 화면 320px에서 한 칸이 37px까지 줄던 것): 한 줄 · 넘치면 좌우로 · 한 칸 64px 이상 · 작은 알림 ×도 44px */
.econ-tabs{overflow-x:auto;scrollbar-width:none;flex-wrap:nowrap}.econ-tabs::-webkit-scrollbar{display:none}.econ-tabs button{flex:1 0 auto!important;min-width:64px;min-height:44px}
.gb-mini{min-height:44px!important}
/* 👑 2026-09-30 오너 「좌 상단 로고는 좀더 키우고 배경은 투명하게」: 흰 카드(배경·그림자·테두리)를 걷고 표지를 30px → 44px(×1.47)로 — 카드가 차지하던 여백만큼 커져 윗줄 폭은 거의 그대로(320~430px).
   3D 장면(낮 하늘·밤·밝은 지도 바닥) 위에서도 보이게 상자 대신 표지 둘레에 옅은 흰 테 + 어두운 그림자 · 누르는 칸은 44×44 그대로 */
header .brand{background:transparent!important;box-shadow:none!important;border-color:transparent!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;padding:0 4px!important;min-width:44px;min-height:44px}
header .brand .brand-mark{width:44px;filter:drop-shadow(0 0 1px rgba(255,255,255,.95)) drop-shadow(0 0 2px rgba(255,255,255,.6)) drop-shadow(0 1px 3px rgba(9,51,41,.5))}
header .brand b{text-shadow:0 0 2px #fff,0 0 6px rgba(255,255,255,.8),0 1px 2px rgba(9,51,41,.35)}
@media (max-width:340px){header .brand .brand-mark{width:40px}}

/* 🏙 처음 화면 로고(2026-10-04): 네이티브 스플래시(크림 바탕 · 가운데 전체 로고 · 폭 약 41%)와 같은 자리 → 시작 시트가 뜨면 시트 위쪽(크림 판 · 가려지지 않게) → 도시가 뜨면 boot-logo.mjs가 좌상단 로고 자리로 날린다(모듈이 없으면 1초 뒤 사라진다) */
.loading{background:#faf9f1!important;justify-content:flex-start!important;padding-top:calc(50vh + min(41vw,300px)*.236 + 22px);gap:6px}.loading b{font-size:16px;color:#173b35}.loading p{margin:0;color:#51666a;font-size:13px}
#bootLogo{position:fixed;left:50%;top:50%;width:min(41vw,300px);transform:translate(-50%,-50%);z-index:4001;pointer-events:none}#bootLogo img{display:block;width:100%;height:auto}
body:has(#nearbyStart:not([hidden])) #bootLogo{top:calc(max(12px,env(safe-area-inset-top)) + 10px);transform:translate(-50%,0);width:min(36vw,190px);padding:8px 14px;border-radius:16px;background:#faf9f1;box-shadow:0 4px 16px #0004;box-sizing:content-box}
body:has(#bootLogo:not(.gone)):has(#loading:not([hidden])) #nearbyStart{padding-top:calc(max(12px,env(safe-area-inset-top)) + 46px + min(36vw,190px)*.472)}
body:not(:has(#cityLoading:not(.done))) #loading[hidden]~#bootLogo{animation:boot-out .25s 1s forwards}
body:has(#bootLogo:not(.gone)) #cityLoading{justify-content:flex-start;padding-top:calc(50vh + min(41vw,300px)*.236 + 22px);background:#faf9f1}body:has(#bootLogo:not(.gone)) #cityLoading>img{visibility:hidden;position:absolute}#bootLogo.gone{display:none}@keyframes boot-out{to{opacity:0;visibility:hidden}}
/* Phosphor duotone close/back (2026-10-09 Iconify package) */
button.close{display:inline-grid;place-items:center;font-size:0!important;line-height:0;color:#1d3a2f}button.close::before{content:"";width:20px;height:20px;background-color:currentColor;/* inline copy of assets/icons/ph/x-duotone.svg so the close icon shows even offline (2026-10-11 UX U82) */-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' width='256' height='256'%3E%3Cg fill='currentColor'%3E%3Cpath d='M216 56v144a16 16 0 0 1-16 16H56a16 16 0 0 1-16-16V56a16 16 0 0 1 16-16h144a16 16 0 0 1 16 16' opacity='.2'/%3E%3Cpath d='M205.66 194.34a8 8 0 0 1-11.32 11.32L128 139.31l-66.34 66.35a8 8 0 0 1-11.32-11.32L116.69 128L50.34 61.66a8 8 0 0 1 11.32-11.32L128 116.69l66.34-66.35a8 8 0 0 1 11.32 11.32L139.31 128Z'/%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256' width='256' height='256'%3E%3Cg fill='currentColor'%3E%3Cpath d='M216 56v144a16 16 0 0 1-16 16H56a16 16 0 0 1-16-16V56a16 16 0 0 1 16-16h144a16 16 0 0 1 16 16' opacity='.2'/%3E%3Cpath d='M205.66 194.34a8 8 0 0 1-11.32 11.32L128 139.31l-66.34 66.35a8 8 0 0 1-11.32-11.32L116.69 128L50.34 61.66a8 8 0 0 1 11.32-11.32L128 116.69l66.34-66.35a8 8 0 0 1 11.32 11.32L139.31 128Z'/%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat}
.sheet-back-i{display:inline-block;width:20px;height:20px;font-size:0!important;line-height:0;margin:0!important;background-color:currentColor;-webkit-mask:url("assets/icons/ph/arrow-left-duotone.svg") center/contain no-repeat;mask:url("assets/icons/ph/arrow-left-duotone.svg") center/contain no-repeat}
#appDock .ph{--ph-size:21px}#appDock .dock-plus{display:grid;place-items:center;width:34px;height:34px;margin-top:-6px;border-radius:50%;background:var(--deep,#0b3a2e);color:var(--lime,#c6f24e);box-shadow:0 2px 0 #03231b}#appDock .dock-plus .ph{--ph-size:22px}
#streetView .ph{--ph-size:22px}#playerStatus .hud-bell{display:inline-grid;place-items:center;line-height:0}
/* 2026-10-10 admin console: dashboard lines, danger confirm, tables, pager, phone 390px */
#adminModal .dialog{overscroll-behavior:contain}#adminResult{position:sticky;bottom:-22px;z-index:2;margin:8px -8px -8px;padding:8px 10px;background:var(--panel-bg,#fbfaf1);border-top:1px solid var(--line);font-size:13px;max-height:30vh;overflow:auto}#adminResult:empty{display:none}
.adm-dash{display:grid;gap:6px;margin:4px 0 10px}.adm-line{display:flex;align-items:center;gap:10px;width:100%;min-height:52px;margin:0;padding:8px 10px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--deep);text-align:left;font:inherit;cursor:pointer}
.adm-line.adm-warn{border-color:#f0b429;box-shadow:inset 3px 0 0 #f0b429}.adm-ico{flex:none;width:26px;font-size:20px;text-align:center}.adm-txt{display:grid;gap:2px;min-width:0;flex:1}.adm-txt b{font-size:14.5px;line-height:1.3;overflow-wrap:anywhere}.adm-txt small{font-size:12px;line-height:1.35;color:var(--muted);overflow-wrap:anywhere}.adm-go{flex:none;font-size:20px;color:var(--muted)}
.adm-row{display:flex;flex-direction:row!important;flex-wrap:wrap;gap:6px;align-items:center}.adm-row>input,.adm-row>select{flex:1 1 150px;min-width:0;min-height:40px;height:auto}.adm-row>button{min-height:40px}
.adm-empty{margin:6px 0;color:var(--muted);font-size:13px}.adm-error{padding:8px 10px;border-radius:10px;background:#fdf1ef;color:#8c1d18}.adm-error p{margin:0 0 6px}
.admin-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}.admin-table{border-collapse:collapse;font-size:12.5px;min-width:100%}.admin-table th,.admin-table td{padding:4px 6px;text-align:left;border-bottom:1px solid rgba(127,127,127,.25);vertical-align:top;white-space:nowrap}.admin-table td.adm-long{white-space:normal;overflow-wrap:anywhere;min-width:12em;max-width:280px}.admin-table .adm-view{color:var(--muted)}
.adm-pager{display:flex;align-items:center;justify-content:space-between;gap:6px;margin:6px 0}.adm-pager button{min-height:40px}.adm-link{border:0;background:none;padding:0;margin:0;color:#1d5fa8;text-decoration:underline;font:inherit;cursor:pointer;min-height:0}
.adm-member{align-items:stretch}.adm-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:flex-end;width:100%}.adm-field{display:grid;gap:2px;font-size:12px;color:var(--muted);flex:1 1 120px;min-width:0}.adm-field input{min-height:40px;width:100%}.adm-actions button{min-height:40px}
.adm-sub{width:100%;margin:4px 0;border-top:1px solid var(--line);padding-top:4px}.adm-sub>summary{cursor:pointer;font-weight:800;font-size:13px;min-height:32px;display:flex;align-items:center}
.admin-card input,.admin-card select{min-width:0;max-width:100%}.admin-card button{min-height:40px}
.adm-confirm{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:16px;background:rgba(10,20,22,.55)}.adm-confirm-card{width:min(420px,100%);max-height:calc(100dvh - 32px);overflow:auto;padding:16px;border-radius:16px;background:#fff;color:#17333c;box-shadow:0 12px 40px rgba(0,0,0,.35)}
.adm-confirm-card h3{margin:0 0 8px;font-size:17px;line-height:1.35;overflow-wrap:anywhere}.adm-confirm-card p{margin:0 0 6px;font-size:13.5px}.adm-confirm-card textarea{width:100%;min-height:64px;margin:6px 0;font:inherit;font-size:15px;box-sizing:border-box}.adm-confirm-msg{color:#b3261e;min-height:1em}
.adm-confirm-row{display:flex;gap:8px;justify-content:flex-end;margin-top:8px}.adm-confirm-row button{flex:1;min-height:var(--btn-h,48px);font-size:var(--fs-btn,15px);font-weight:800;border-radius:14px}.adm-confirm-row .adm-danger-solid{border-radius:14px}
.adm-danger{color:#b3261e!important;border-color:#e6b4ae!important}.adm-menu{display:block;width:100%;min-height:44px;margin:0 0 6px;font-weight:800}.admin-body .rank-filter{display:flex;flex-wrap:wrap;gap:6px}.admin-body .rank-filter button{flex:0 0 auto;white-space:nowrap}.adm-danger-solid{background:#b3261e!important;color:#fff!important;border:1px solid #8c1d18!important}
/* 2026-10-11 admin buildings group: status chips, tags, detail card */
#adminBuildings .adm-row>input[type=search]{flex-basis:100%}.adm-bld-chips{margin:6px 0}.adm-bld-chips button{min-height:44px;padding:0 12px;font-size:13px}/* 2026-10-11 QA B-06: 관리자 건물 묶음 필터 칩 8개 36 → 44px */.adm-bld-key{font-weight:400;font-size:12px;color:var(--muted);overflow-wrap:anywhere}.adm-bld-tags{display:inline-flex;flex-wrap:wrap;gap:4px;vertical-align:middle}.adm-bld-tag{display:inline-block;padding:1px 7px;border-radius:999px;font-size:11.5px;font-weight:700;line-height:1.5;background:#eef2ef;color:#1d3a2f}
.adm-bld-owned,.adm-bld-operating{background:#e3f4e6;color:#1b5e20}.adm-bld-grace,.adm-bld-expiring{background:#fff3d6;color:#7a4b00}.adm-bld-auction,.adm-bld-takeover_pending{background:#e6eefc;color:#1d4a8c}.adm-bld-released,.adm-bld-none{background:#eceff1;color:#455a64}.adm-bld-first_home{background:#f6e7fb;color:#6a1b8a}
.adm-bld-detail{margin-top:8px}.adm-bld-card{gap:4px}.adm-bld-card>b{font-size:16px;overflow-wrap:anywhere}.adm-bld-owner{border:1px solid var(--line);border-radius:10px;padding:6px 8px;margin:4px 0}.adm-bld-owner p{margin:0 0 4px;overflow-wrap:anywhere}.adm-bld-card h4{margin:8px 0 4px;font-size:13px}.adm-moved{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.adm-moved p{flex:1 1 200px;margin:0}
.adm-post{display:grid;gap:4px;width:100%;margin:4px 0;padding:8px;border:1px solid var(--line);border-radius:10px;background:#fbfcfd}.adm-post p{margin:0;overflow-wrap:anywhere}.adm-post-title{font-size:15px;overflow-wrap:anywhere}.adm-post-body{white-space:pre-wrap;font-size:13.5px;max-height:12em;overflow:auto}.adm-post-tags{color:#1d5fa8;font-size:12.5px}
.adm-post-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:6px}.adm-post-photos figure{margin:0;display:grid;gap:2px}.adm-post-photos figcaption{font-size:11.5px;color:var(--muted);overflow-wrap:anywhere}.adm-post-photo{display:block;width:100%;aspect-ratio:1;padding:0;margin:0;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#eef1f3;cursor:zoom-in;min-height:0}.adm-post-photo img{width:100%;height:100%;object-fit:cover;display:block}.adm-post-miss{font-size:12px;color:var(--muted)}
.adm-zoom{position:fixed;inset:0;z-index:10001;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:16px;background:rgba(5,10,12,.88)}.adm-zoom img{max-width:100%;max-height:calc(100dvh - 96px);object-fit:contain;border-radius:8px;background:#222}.adm-zoom-close{min-height:44px;min-width:120px;font-weight:800}
.adm-line.adm-late{border-color:#d93025;box-shadow:inset 3px 0 0 #d93025}.adm-late-text{color:#b3261e;font-weight:800}.adm-soon-text{color:#8a5300;font-weight:700}
.adm-age{display:inline-block;margin:2px 0;padding:1px 8px;border-radius:999px;background:#eceff1;color:#455a64;font-size:12px;font-weight:700}.adm-age-soon{background:#fff3d6;color:#7a4b00}.adm-age-late{background:#fde7e5;color:#b3261e}
.adm-sla{display:grid;gap:4px;margin:0 0 8px;padding:8px 10px;border:1px solid var(--line);border-radius:12px;background:#f4f7f8}.adm-sla small{font-size:12.5px}.adm-sla-soon{border-color:#f0b429;background:#fff8e6}.adm-sla-late{border-color:#d93025;background:#fdf1ef;color:#8c1d18}.adm-sla-kinds{display:flex;flex-wrap:wrap;gap:6px}.adm-sla-kinds button{min-height:36px;padding:0 10px;font-size:12.5px;border-radius:999px}
.adm-profile{width:100%;margin:4px 0;padding:6px 8px;border:1px solid var(--line);border-radius:10px}.adm-profile p{margin:2px 0;overflow-wrap:anywhere;font-size:13px}
.adm-rst{margin:0 0 8px}.adm-rst button{min-height:44px}.admin-card.adm-done{opacity:.92;background:#f6f7f8}.adm-done-line{margin:2px 0;color:#455a64;font-size:12.5px;overflow-wrap:anywhere}
/* 2026-10-11 QA Q05: 반상회 관리 줄 = 글 · 공지 상자 한 줄씩 → 아래에 이름·태그 칸과 단추(신고 카드와 같은 세로 쌓기) */.rank-list.adm-crews li{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}.adm-crews li>span:first-child{flex:1 1 100%;min-width:0;overflow-wrap:anywhere}.adm-crews li>.adm-reply{flex:1 1 100%;box-sizing:border-box}.adm-crews li>input{flex:1 1 110px;min-width:0;min-height:44px}.adm-crews li>input[maxlength='4']{flex:0 1 80px}
.adm-reply{width:100%;margin:4px 0;padding:6px 8px;border-left:3px solid #9fb3bb;background:#f4f7f8;border-radius:6px}.adm-reply p{margin:2px 0;overflow-wrap:anywhere;white-space:pre-wrap}
.admin-card.adm-sus{border-color:#f0b429;box-shadow:inset 3px 0 0 #f0b429}
.adm-check{display:flex!important;flex-direction:row!important;align-items:center;gap:8px;min-height:40px;margin:4px 0;font-size:13px}.adm-check input{width:22px!important;height:22px;min-height:0!important;margin:0;flex:none}
@media (max-width:420px){#adminModal .dialog{padding:16px 12px}.adm-txt small{font-size:11.5px}.admin-section{padding:8px}.admin-section>summary{min-height:40px;display:flex;align-items:center}}
