/* --- T_EDITORIAL begin (2026-08-03) ---
   새 디자인 시안(design/app-detail-ai-ux-research-20260803 · app-wide-editorial-system-20260803)의
   시각 언어로 전역 정렬. 1) 색 토큰을 시안 값으로 2) border-radius 제거(원형·pill 예외)
   3) font-size 12px 하한 클램프(12px 이상 불변).
   + 유리질·그라디언트·그림자 제거(T_FLATSURFACE)
   --- T_EDITORIAL end --- */
:root{
  /* T_AUDITFIX(D17): 라이트 전용 선언 복원 — 기기 다크모드에서 UA 위젯(폼·스크롤바)이
     다크 팔레트로 뒤집히는 사고 방지. 다크 지원은 대표님 승인 사항. */
  color-scheme: only light;
  --canvas: #e8ede9;
  --paper: #f6f5ef;
  --surface: #fffef9;
  --surface-2: #efefea;
  --ink: #13201c;
  --ink-2: #38443f;
  --muted: #7b8580;
  --line: #d9dfda;
  --line-strong: #c3cdc6;
  --forest: #075f48;
  --forest-deep: #053f31;
  --forest-soft: #edf3ef;
  --lime: #dff276;
  --lime-soft: #f2f7d2;
  --gold: #b68b3c;
  --gold-soft: #f3ead7;
  --amber: #c57a32;
  --amber-soft: #faecd8;
  --red: #a64d45;
  --red-soft: #f6e4e1;
  --blue: #426d8d;
  /* T_FLATSURFACE: 떠 있는 카드는 없다 — 구분은 1px 선. 토큰은 none 으로 전역 소등. */
  --shadow-sm: none;
  --shadow-md: none;
  --shadow-lg: none;
  --r-sm: 0;
  --r-md: 0;
  --r-lg: 0;
  --r-xl: 0;
  --safe-top: max(9px, env(safe-area-inset-top));
  --safe-bottom: max(8px, env(safe-area-inset-bottom));
  /* --- T_SAFESIDE --- (2026-08-20 코덱스 iOS 감사 3) 노치 기기를 **가로로** 돌리면
     좌우에 안전영역이 생기는데 변수 자체가 없어 뒤로·더보기·닫기 버튼이 그 안으로 들어갔다.
     세로에서는 env() 가 0 이라 종전과 완전히 같다(이중 여백이 생길 여지가 없다). */
  --safe-left: env(safe-area-inset-left);
  --safe-right: env(safe-area-inset-right);
  --kb: 0px;
  --ease: cubic-bezier(.22, .8, .25, 1);
}

/* 구형(contentInset:always) 앱 빌드가 남아 있어도 safe-area를 두 번 더하지 않는다. */
:root[data-inset="always"]{ --safe-top:9px;--safe-bottom:8px; }
:root[data-inset="topcut"]{ --safe-bottom:8px; }

/* iOS는 16px 미만 입력을 자동 확대하고 WKWebView에서는 그 확대가 남을 수 있다. */
@supports (-webkit-touch-callout: none) {
  input, textarea, select{ font-size:16px !important; }
}

/* T_NOCOPY: the app is a read-only surface. Disable long-press selection/callouts
   everywhere, including content rendered after navigation. Form controls remain
   usable for typing; only selecting/copying their contents is disabled. */
html, body, body *{
  -webkit-user-select:none;
  user-select:none;
  -webkit-touch-callout:none;
}
/* T_NOCOPYINPUT: 입력창만 예외 — iOS 는 user-select:none 이면 붙여넣기 메뉴를 못 띄운다.
   (검색창에 주소를 붙여넣고, 보고서 입찰금액을 붙여넣는 것이 실제로 막혀 있었다.) */
input, textarea, [contenteditable="true"]{
  -webkit-user-select:text;
  user-select:text;
  -webkit-touch-callout:default;
}
img, svg{
  -webkit-user-drag:none;
}

*{ box-sizing: border-box; }
[hidden]{ display: none !important; }
html, body{ margin: 0; min-height: 100%; }
html{ background: var(--canvas); }
body{
  color: var(--ink);
  font-family: Pretendard, -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Noto Sans KR", "Segoe UI", sans-serif;
  font-size: 15px;
  line-height: 1.5;
  letter-spacing: -0.025em;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  word-break: keep-all;
  overflow-wrap: break-word;
  overscroll-behavior: none;
}
button, input, select{ font: inherit; color: inherit; }
button{ border: 0; background: none; padding: 0; cursor: pointer; -webkit-tap-highlight-color: transparent; }
button:focus-visible, summary:focus-visible, [tabindex]:focus-visible{ outline: 3px solid rgba(11, 95, 71, .24); outline-offset: 2px; }
button, a, summary{ touch-action: manipulation; }
img{ display: block; max-width: 100%; }
h1, h2, h3, h4, p{ margin: 0; }
/* T_TEXTWRAP(대표님 2026-07-25 "이런거 전수 조사해서 마감"): 한글 줄바꿈 고아(orphan)·불균형 방지.
   제목=lines 균형, 본문=마지막 줄 한 단어 고아 방지. 단일 줄 텍스트엔 무효(안전) ·
   text-wrap 미지원 구형 브라우저는 기존 줄바꿈으로 자연 폴백(레이아웃 불변). word-break:keep-all 과 병행. */
h1, h2, h3, h4{ text-wrap: balance; }
p{ text-wrap: pretty; }
.svg-sprite{ position: absolute; width: 0; height: 0; overflow: hidden; }
.icon{ width: 21px; height: 21px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.icon.sm{ width: 16px; height: 16px; }
.icon.lg{ width: 26px; height: 26px; }

.prototype-stage{
  min-height: 100vh;
  display: grid;
  grid-template-columns: 430px;
  align-items: center;
  justify-content: center;
  gap: 0;
  padding: 40px;
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(circle at 18% 13%, rgba(207, 232, 97, .18), transparent 24%),
    radial-gradient(circle at 83% 80%, rgba(11, 95, 71, .12), transparent 26%),
    var(--canvas);
}
.prototype-stage::before{
  content: "";
  position: absolute;
  inset: 0;
  opacity: .18;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.18'/%3E%3C/svg%3E");
}

.device{
  position: relative;
  z-index: 2;
  width: 430px;
  height: min(890px, calc(100vh - 56px));
  min-height: 690px;
  overflow: hidden;
  border-radius: 0;
  background: var(--paper);
  border: 0;
  box-shadow: none;
  isolation: isolate;
}
.app-viewport{ position: absolute; inset: 0; overflow: hidden; background: var(--paper); }
.app-screen{ height: 100%; overflow-y: auto; overflow-x: hidden; scrollbar-width: none; overscroll-behavior-y: contain; scroll-behavior: smooth; }
.app-screen::-webkit-scrollbar{ display: none; }
:root[data-kb="1"] .app-screen{ padding-bottom:var(--kb); }

/* --- T_NATIVEFULL begin --- (2026-08-20 코덱스 가로모드 측정 · 출시 차단)
   🔴네이티브 셸은 **폭과 무관하게** 전체화면이다. 종전에는 전체화면 전환이
     `@media (max-width:600px)` 안에만 있었고, 폭 조건 없는 규칙은 **iOS 에만** 있었다.
     그래서 안드로이드를 **가로로 돌리면** 폭이 601px 을 넘어 `.device` 가 다시
     430x690 짜리 '기기 모형'으로 돌아갔다 — 실제 화면 높이가 360px 이어도 내부는
     690px 이라 `다음`·카카오·구글 로그인 버튼이 화면 밖으로 나가고 **스크롤도 안 된다**
     (`.device{overflow:hidden}`). 601px 부터 즉시 고장났고 운영에서도 재현됐다.
   ★AndroidManifest 가 회전을 허용하므로 사용자가 실제로 밟는다.
   ★이 블록은 iOS 규칙보다 **앞**에 둔다 — 명시도가 같아 뒤가 이기므로,
     iOS 의 fixed/overscroll 처리(사파리 바운스 대응)를 덮지 않는다.
   ★`--app-h` 는 네이티브 셸이 window.innerHeight 로 세우고 회전 때 갱신한다
     (app.js syncNativeViewportHeight) — 100vh 는 그 값이 없을 때의 폴백이다. */
html[data-native] .prototype-stage{
  min-height:0; display:block; padding:0; overflow:hidden;
}
html[data-native] .prototype-stage::before{ display:none; }
html[data-native] .device{
  width:100%; height:var(--app-h, 100vh); min-height:0;
  border:0; border-radius:0; box-shadow:none;
}
html[data-native] .app-viewport{ inset:0; }
html[data-native] .sheet{ bottom:0; width:100%; border-radius:0; }
/* --- T_NATIVEFULL end --- */

/* 아이폰 앱은 바깥 문서를 고정하고 app-screen 하나만 스크롤한다. Safari식 바운스가
   html/body까지 전달되면 인트로·로그인 화면 전체가 위아래로 움직여 보인다. */
html[data-native-platform="ios"],
html[data-native-platform="ios"] body{
  width:100%;height:var(--app-h, 100%);min-height:0;overflow:hidden;overscroll-behavior:none;
}
html[data-native-platform="ios"] body{ position:fixed;inset:0; }
html[data-native-platform="ios"] .prototype-stage{
  position:fixed;inset:0;width:100%;height:var(--app-h, 100%);min-height:0;padding:0;overflow:hidden;
}
html[data-native-platform="ios"] .device{ width:100%;height:100%;min-height:0; }
html[data-native-platform="ios"] .app-screen{ overscroll-behavior-y:none; }
html[data-native-platform="ios"] .intro-screen.screen-enter,
html[data-native-platform="ios"] .auth-screen.screen-enter{ animation:nativeEntryFade .18s ease both; }
@keyframes nativeEntryFade{ from{opacity:0}to{opacity:1} }

.screen{ min-height: 100%; padding: var(--safe-top) calc(20px + var(--safe-right)) 116px calc(20px + var(--safe-left)); position: relative; }   /* T_SAFESIDE */
.screen.no-tabs{ padding-bottom: 96px; }
.screen-enter{ animation: screenIn .48s var(--ease) both; }
.screen-back{ animation-name: screenBack; }
@keyframes screenIn { from{ opacity: 0; transform: translate3d(0, 8px, 0) scale(.992); } to{ opacity: 1; transform: none; } }
@keyframes screenBack { from{ opacity: 0; transform: translate3d(0, -6px, 0) scale(.995); } to{ opacity: 1; transform: none; } }
.reveal{ opacity: 0; transform: translateY(12px); animation: reveal .62s var(--ease) forwards; animation-delay: var(--delay, 0ms); }
@keyframes reveal { to{ opacity: 1; transform: none; } }

/* T_DOCINAPP · 원문은 현재 앱을 벗어나지 않는 전체 화면 뷰어에서 확인한다. */
/* --- T_EDREPORT begin: 원문 뷰어(시안 14 document) — iframe 렌더는 그대로, 틀만 시안 언어로.
   상단 = 시안 .document-bar(62px · 42/1fr/42 그리드 · surface · 하단 hairline),
   본문 = 회색 지면(#eef1ee) 위에 여백을 두른 종이 한 장(hairline 보더 + 인쇄물 그림자 — 시안이
   .document-paper 에만 허용한 그림자다). 법원 서류를 다시 그리지 않는다 — 종이가 곧 iframe 이다. --- */
.document-viewer{
  position:absolute;
  z-index:90;
  inset:0;
  display:grid;
  grid-template-rows:auto minmax(0,1fr);
  color:var(--ink);
  background:#eef1ee;
  animation:screenIn .28s var(--ease) both;
}
.document-viewer[hidden]{ display:none; }
.document-viewer:focus{ outline:none; }
.document-viewer-bar{
  position:relative;
  z-index:3;
  min-height:calc(62px + var(--safe-top));
  padding:var(--safe-top) 10px 0;
  display:grid;
  /* T_PRINTAPP2: 저장 버튼이 붙어 4열이다. [hidden] 버튼도 자리를 지켜 제목이 밀리지 않는다. */
  grid-template-columns:42px minmax(0,1fr) 42px 42px;
  align-items:center;
  border-bottom:1px solid var(--line);
  background:var(--surface);
}
.document-viewer-bar>button{
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  color:var(--ink);
  background:transparent;
}
.document-viewer-bar>button .icon{ width:19px;height:19px; }
/* T_PRINTAPP2: `display:grid` 는 [hidden] 의 display:none 을 덮는다 — 자리는 지키고 안 보이게 한다. */
.document-viewer-bar>button[hidden]{ visibility:hidden; }
.document-viewer-bar>div{ min-width:0;text-align:center; }
.document-viewer-bar b,
.document-viewer-bar span{ display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.document-viewer-bar b{ font-size:14px; }
.document-viewer-bar span{ margin-top:2px;color:var(--muted);font-size:12px;font-weight:750; }
.document-viewer-body{ position:relative;min-height:0;padding:14px 14px calc(14px + var(--safe-bottom));background:#eef1ee; }
.document-viewer-body iframe{
  width:100%;
  height:100%;
  display:block;
  border:1px solid #ccd2ce;
  background:#fff;
  box-shadow:0 10px 26px rgba(30,43,37,.08);
}
.document-viewer-state{
  position:absolute;
  inset:0;
  z-index:2;
  padding:30px;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  justify-content:center;
  background:#eef1ee;
  text-align:left;
}
.document-viewer-state[hidden]{ display:none; }
.document-viewer-state>span{ width:46px;height:58px;display:grid;place-items:center;color:var(--forest);border:1px solid #ccd2ce;background:#fff; }
.document-viewer-state>span .icon{ width:21px;height:21px; }
.document-viewer-state>b{ margin-top:16px;font-size:16px;letter-spacing:-.03em; }
.document-viewer-state>p{ max-width:280px;margin-top:7px;color:var(--muted);font-size:13px;line-height:1.6; }
.document-viewer-state>button{ width:100%;max-width:280px;min-height:48px;margin-top:16px;padding:0 18px;border:0;border-radius:0;color:#fff;background:var(--forest);font-size:13px;font-weight:900; }
.document-viewer-state>button[hidden]{ display:none; }
.document-viewer-state>.document-viewer-retry{ margin-top:10px;border:1px solid var(--forest);color:var(--forest);background:transparent; }
.document-viewer-state[data-tone="error"]>span{ color:var(--red);border-color:#d9c2be;background:#fff; }
/* --- T_EDREPORT end (원문 뷰어) --- */

.bottom-nav{
  position: absolute;
  z-index: 18;
  left: 14px;
  right: 14px;
  bottom: calc(10px + var(--safe-bottom));
  height: 68px;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  align-items: center;
  padding: 6px;
  border: 1px solid rgba(16, 44, 34, .11);
  border-radius: 0;
  background: var(--surface);
  box-shadow: 0 -8px 20px rgba(28,46,38,.05);
  transition: opacity .25s ease, translate .3s var(--ease);
}
/* T_NAVSCOPE: 숨김 = display:none — 투명만 시키면 자식 라벨의 rect 가 남아 상세의 AI 도크와
   겹치고(감사 실측 4건), 터치 대상도 남는다. 실제로 렌더에서 뺀다. */
.bottom-nav.is-hidden{ display: none; opacity: 0; pointer-events: none; translate: 0 30px; }
.nav-item{ min-width: 0; height: 56px; border-radius: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; color: #8a918e; position: relative; transition: color .25s ease, background .25s ease, transform .2s ease; }
.nav-item .icon{ width: 20px; height: 20px; }
.nav-item span{ font-size: 12px; font-weight: 700; letter-spacing: -.02em; }
.nav-item.is-active{ color: var(--forest); background: var(--forest-soft); }
.nav-item:active{ transform: scale(.94); }
.nav-item.has-alert::after{ content:""; position:absolute; top:8px; right:22px; width:6px; height:6px; background:var(--red); border:2px solid #fff; border-radius:50%; }

.topbar{ height: 62px; display: flex; align-items: center; justify-content: space-between; position: relative; z-index: 4; }
.wordmark{ display: flex; align-items: center; gap: 9px; min-height: 44px; }
/* T_LOGOKEEP(2026-08-03 대표님 "로고만 기존 버전거를 활용해"): 로고 마크의 말풍선 형태는
   브랜드 정체성이라 T_EDITORIAL 의 border-radius 일괄 제거에서 **예외**다. 각형화됐던 것을 원복한다.
   (그림자·블러 같은 질감은 T_FLATSURFACE 방침대로 플랫을 유지 — 형태만 되돌린다.) */
.wordmark-mark{ width: 31px; height: 31px; display: grid; place-items: center; color: white; background: var(--forest); border-radius: 10px 10px 10px 3px; font-weight: 900; font-size: 14px; }
.wordmark-text{ font-weight: 900; font-size: 16px; letter-spacing: .08em; }
.top-actions{ display: flex; align-items: center; gap: 7px; }
.icon-btn{ width: 42px; height: 42px; border-radius: 0; display: grid; place-items: center; color: var(--ink-2); transition: background .2s, transform .2s; position: relative; }
.icon-btn:hover{ background: rgba(11,95,71,.06); }
.icon-btn:active{ transform: scale(.92); }
.icon-btn.has-dot::after{ content:""; position:absolute; right:9px; top:8px; width:7px; height:7px; border-radius:50%; background:var(--red); border:2px solid var(--paper); }
.detail-topbar{ height:58px;margin:0 -5px;display:grid;grid-template-columns:44px 1fr auto;align-items:center;position:relative;z-index:10;background:var(--paper); }
.detail-topbar .icon-btn{ width: 44px; height: 44px; }
.detail-title{ text-align: center; min-width: 0; }
.detail-title b{ display: block; font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.detail-title span{ display:block;color:var(--muted);font-size:12px;margin-top:3px;line-height:1.35; }
.detail-actions{ display: flex; justify-content: flex-end; gap:5px; align-items:center; }
/* T_BASISBTN: 근거 확인 진입 = 우측상단 '근거' pill 버튼(대표님 "진입 영역이 없어졌다") */

.page-intro{ padding: 14px 0 22px; }
.page-intro.compact{ padding-bottom: 15px; }
.kicker{ display:flex;align-items:center;gap:7px;color:var(--forest);font-size:12px;font-weight:850;letter-spacing:.02em;margin-bottom:10px;line-height:1.45; }
.live-dot{ width: 7px; height: 7px; border-radius: 50%; background: var(--forest); box-shadow: 0 0 0 5px rgba(11,95,71,.10); animation: live 2.4s ease-in-out infinite; }
@keyframes live { 50%{ box-shadow: 0 0 0 8px rgba(11,95,71,0); } }
.page-intro h1{ font-size:30px;line-height:1.3;letter-spacing:-.055em;font-weight:860; }
.page-intro h1 em{ color: var(--forest); font-style: normal; }
.page-intro p{ color:var(--muted);font-size:13px;line-height:1.65;margin-top:12px; }

.market-pulse{ display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px 12px;padding:12px 15px 13px;margin-bottom:15px;border:1px solid var(--line);border-radius:var(--r-md);background:rgba(255,255,255,.65); }
.screen[data-screen="home"] .guest-welcome:not([hidden]){ margin-bottom:14px; }
.pulse-copy{ min-width: 0; }
.pulse-copy b{ display: block; font-size: 12px; }
.pulse-copy span{ display:block;font-size:12px;line-height:1.45;color:var(--muted);margin-top:4px; }
.funnel-mini{ display: flex; align-items: center; gap: 5px; flex: none; }
.funnel-mini b{ min-width: 28px; height: 26px; padding: 0 7px; border-radius: 0; display:grid;place-items:center; background:var(--surface-2); font-size:12px; }
.funnel-mini b:last-child{ background:var(--forest); color:#fff; }
.funnel-mini i{ width: 11px; height: 1px; background:var(--line-strong); position:relative; }
.funnel-mini i::after{ content:""; position:absolute; right:0; top:-2px; width:4px; height:4px; border-top:1px solid var(--muted); border-right:1px solid var(--muted); rotate:45deg; }
.criteria-empty{ margin-bottom:15px; }

.section-heading{ display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin:31px 0 14px; }
.section-heading h2{ font-size:19px;line-height:1.35;letter-spacing:-.045em; }
.section-heading p{ color:var(--muted);font-size:12px;line-height:1.5;margin-top:5px; }
.text-btn{ min-height: 38px; display: inline-flex; align-items: center; gap: 3px; color: var(--forest); font-size: 12px; font-weight: 800; white-space: nowrap; }
.text-btn .icon{ width: 14px; height: 14px; }
.deal-priority{ margin-top:16px;padding:14px;border:1px solid rgba(11,95,71,.12);border-radius:0;background:var(--forest-soft);display:grid;grid-template-columns:36px minmax(0,1fr);gap:11px;align-items:start; }
.deal-priority small{ display:block;color:var(--forest);font-size:12px;line-height:1.45;font-weight:850;margin-bottom:4px; }
.deal-priority h3{ font-size:13px;line-height:1.45;margin-bottom:5px; }
.deal-priority p{ color:var(--ink-2);font-size:12px;line-height:1.58; }

.recommendation-entry{ width:100%;margin-top:24px;padding:15px 14px;display:grid;grid-template-columns:44px minmax(0,1fr) 18px;gap:12px;align-items:center;text-align:left;border:1px solid rgba(11,95,71,.12);border-radius:0;background:var(--forest-soft);transition:transform .2s; }
.recommendation-entry:active{ transform:scale(.985); }
.recommendation-entry-icon{ width:44px;height:44px;border-radius:0;display:grid;place-items:center;background:var(--forest);color:#fff; }
.recommendation-entry-icon .icon{ width:20px;height:20px; }
.recommendation-entry.is-locked{ background:#f1eee5;border-color:rgba(23,32,29,.11); }
.recommendation-entry.is-locked .recommendation-entry-icon{ background:var(--ink); }
.recommendation-entry.is-locked .recommendation-entry-copy small,.recommendation-entry.is-locked .recommendation-entry-copy strong b,.recommendation-entry.is-locked .recommendation-entry-arrow{ color:var(--forest); }
.recommendation-entry-copy{ min-width:0;display:block; }
.recommendation-entry-copy small{ display:block;color:var(--forest);font-size:12px;font-weight:850;margin-bottom:3px; }
.recommendation-entry-copy strong{ display:block;font-size:13px;line-height:1.42;letter-spacing:-.035em; }
.recommendation-entry-copy strong b{ color:var(--forest); }
.recommendation-entry-copy>span{ display:block;color:var(--muted);font-size:12px;line-height:1.45;margin-top:3px; }
.recommendation-entry-arrow{ width:17px;height:17px;color:var(--forest); }
/* T_EVIDENCEHEAD(2026-07-26 대표님): 04 '근거 확인'은 **헤딩이 곧 진입 버튼**이다.
   별도 행을 두면 같은 자리에 제목과 버튼이 두 번 서서 카드가 무거워진다.
   기존 .module-heading 격자(38px / 1fr)에 화살표 열만 더한다 — 다른 모듈과 모양이 어긋나지 않게. */
/* ★특이도를 클래스 2개로 올린다 — 이 규칙이 `.module-heading`(파일 뒤쪽 정의)보다 앞에 있어
   같은 특이도면 순서에서 밀린다(실측: 화살표 열이 통째로 사라졌다). */

.recommendation-topbar{ position:sticky;top:0;width:calc(100% + 40px);margin-top:calc(var(--safe-top) * -1);margin-right:-20px;margin-left:-20px;padding-top:var(--safe-top);padding-right:15px;padding-left:15px;height:calc(58px + var(--safe-top));background:var(--paper); }
/* T_LOTGROUP: 통매/동일건물 배지 — D-day 초록 필과 구분되게 외곽선 필(2차 정보). 비주얼 정밀화는 Fable 5. */

.insight-strip{ display:flex;gap:10px;overflow-x:auto;margin:0 -20px;padding:0 20px 4px;scroll-snap-type:x mandatory;scrollbar-width:none; }
.insight-strip::-webkit-scrollbar{ display:none; }
.insight{ min-width:225px;scroll-snap-align:start;padding:16px;border-radius:0;border:1px solid var(--line);background:rgba(255,255,255,.72); }
.insight .insight-label{ display:flex;align-items:center;gap:6px;font-size:12px;font-weight:850;color:var(--amber);margin-bottom:9px; }
.insight h3{ font-size:14px;line-height:1.4; }
.insight p{ color:var(--muted);font-size:12px;line-height:1.55;margin-top:7px; }

.media-hero{ margin:0 -20px; height:250px;position:relative;overflow:hidden;background:#d0d8d4; }
.media-track{ position:absolute;inset:0;display:flex;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:smooth;overscroll-behavior-x:contain;touch-action:pan-x pan-y;scrollbar-width:none; }
.media-track::-webkit-scrollbar{ display:none; }
/* T_SLIDEFIX: 상세 hero 가 .pick-visual 을 겸하면서 `.pick-visual img{position:absolute;inset:0}` 가
   슬라이드(static)를 뚫고 hero 기준으로 5장을 겹쳐 쌓았다 — 카운터는 1/5 인데 항상 마지막 사진만
   보이고 슬라이딩해도 안 바뀌던 근원. relative 로 absolute 이미지를 각자 슬라이드 안에 가둔다. */
.media-slide{ flex:0 0 100%;width:100%;height:100%;position:relative;scroll-snap-align:start;scroll-snap-stop:always;overflow:hidden; }
.media-slide img{ width:100%;height:100%;object-fit:cover;animation:heroSettle 1.2s var(--ease) both;user-select:none;-webkit-user-drag:none; }
@keyframes heroSettle { from{ transform:scale(1.08);filter:saturate(.75); } to{ transform:scale(1.01);filter:none; } }
.media-hero::after{ content:"";position:absolute;z-index:1;inset:0;background:linear-gradient(to bottom,transparent 48%,rgba(4,24,17,.72));pointer-events:none; }
.media-caption{ position:absolute;z-index:2;left:20px;right:20px;bottom:18px;color:white;pointer-events:none; }
.media-caption small{ font-size:12px;opacity:.8; }
.media-caption h1{ font-size:22px;line-height:1.35;margin-top:5px;letter-spacing:-.04em; }
.photo-count{ position:absolute;z-index:2;right:18px;bottom:20px;padding:5px 8px;border-radius:0;background:rgba(5,22,17,.58);color:#fff;font-size:12px; }
.photo-dots{ position:absolute;z-index:2;left:20px;top:17px;display:flex;gap:4px; }
.photo-dots button{ width:17px;height:3px;padding:0;border:0;border-radius:0;background:rgba(255,255,255,.4);box-shadow:none;transition:background .18s ease,transform .18s ease; }
.photo-dots button.is-active{ background:#fff;transform:scaleX(1.08); }
.photo-step{ position:absolute;z-index:3;top:48%;display:grid;place-items:center;width:34px;height:42px;margin-top:-21px;border:0;border-radius:0;background:rgba(5,22,17,.46);color:#fff;box-shadow:none;transition:opacity .18s ease,transform .18s ease; }
.photo-step.prev{ left:10px; }
.photo-step.next{ right:10px; }
.photo-step.prev .icon{ transform:rotate(180deg); }
.photo-step .icon{ width:17px;height:17px; }
.photo-step:active:not(:disabled){ transform:scale(.94); }
.photo-step:disabled{ opacity:.24; }
.media-hero.is-single .photo-step{ display:none; }
.media-hero:focus-visible{ outline:3px solid var(--lime);outline-offset:-3px; }
/* --- T_NOTRECO --- 판단 보류/비추천은 **추천과 같은 초록 패널을 쓰지 않는다.**
   초록 그라데이션 + "줍고의 결론"은 이 서비스의 '추천' 시각언어다. 판단을 못 한 물건을 거기 앉히면
   문구를 아무리 정직하게 써도 화면은 추천이라고 말한다(대표님 2026-07-25 지적). */
.decision-notreco{ display:inline-block;margin-bottom:9px;padding:5px 11px;border-radius:999px;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.22);
  font-size:12px;font-weight:850;letter-spacing:-.1px; }
.decision-confidence{ display:flex;align-items:center;justify-content:space-between;margin-top:18px;padding-top:14px;border-top:1px solid rgba(255,255,255,.12); }
.confidence-dots{ display:flex;gap:4px; }
.confidence-dots i{ width:24px;height:4px;border-radius:0;background:rgba(255,255,255,.16); }
.confidence-dots i.on{ background:var(--lime); }
.decision-confidence span{ font-size:12px;color:rgba(255,255,255,.68); }
.risk-icon{ width:36px;height:36px;border-radius:0;background:#fff3df;color:var(--amber);display:grid;place-items:center; }
.risk-icon .icon{ width:18px;height:18px; }

/* --- T_BIDHIST --- 경매 이력 타임라인(유찰·매각·대금미납).
   ★미납은 red, 유찰은 amber, 매각/허가는 forest. 미래 기일은 흐리게 — '아직 안 온 것'과 '결과 없음'을
     같은 색으로 칠하면 사용자가 결과가 나쁜 것으로 오해한다. */
.bidhist-section{ display:grid;gap:10px; }
.bidhist-alert{ padding:16px;border-radius:0;background:var(--red-soft);border:1px solid rgba(173,69,61,.19);display:grid;grid-template-columns:36px 1fr;gap:11px; }
.bidhist-alert .risk-icon{ background:#fbe7e4;color:var(--red); }
.bidhist-alert h3{ font-size:13px;margin-bottom:4px;color:var(--red); }
.bidhist-alert p{ color:#7d3b35;font-size:12px;line-height:1.55; }
/* T_EDREPORT: 기일 타임라인 — 박스 폐기 · hairline 행(시트/상세 공용) */
.bidhist-timeline{ list-style:none;margin:0;padding:0;border-radius:0;background:transparent;border:0;border-top:1px solid var(--line); }
/* T_BIDHISTUI: 타임라인이 question-card(권리 카드) 안에 들어갈 때 — 이중 테두리와 과한 들여쓰기를 없앤다.
   .question-body 의 좌측 63px 패딩은 문단용이라 타임라인엔 맞지 않는다(행이 우측으로 밀린다). */
.bidhist-panel{ padding:0 0 6px; }
.bidhist-panel .bidhist-timeline{ border-radius:0;background:transparent; }
.bidhist-row{ display:grid;grid-template-columns:14px 1fr auto;gap:10px;align-items:center;min-height:52px;padding:11px 0;border-bottom:1px solid var(--line); }
.bidhist-row.future{ opacity:.62; }
.bidhist-dot{ width:9px;height:9px;border-radius:50%;background:var(--muted);margin-left:2px; }
.bidhist-dot.bad{ background:var(--red); }
.bidhist-dot.warn{ background:var(--amber); }
.bidhist-dot.good{ background:var(--forest); }
.bidhist-dot.muted{ background:var(--line-strong); }
.bidhist-body{ display:flex;flex-wrap:wrap;align-items:baseline;gap:7px;min-width:0; }
.bidhist-body b{ font-size:13px;font-variant-numeric:tabular-nums; }
.bidhist-kind{ font-size:12px;color:var(--muted); }
.bidhist-money{ font-size:12px;color:var(--ink-2);font-variant-numeric:tabular-nums; }
.bidhist-result{ font-size:12px;font-weight:900;white-space:nowrap;padding:0;border-radius:0;background:transparent;color:var(--muted); }
.bidhist-result.bad{ background:transparent;color:var(--red); }
.bidhist-result.warn{ background:transparent;color:var(--amber); }
.bidhist-result.good{ background:transparent;color:var(--forest); }
@keyframes openIn { from{ opacity:0;translate:0 -5px; } }

/* T_STICKYSHELL: 담기 바를 하단 탭바(.bottom-nav)와 동일한 형태로 — .device 직속 absolute 라 스크롤과 무관하게 하단 고정 */
/* T_RESULTBADGE(2026-07-26 대표님): 확인 결과를 라벨 옆 배지로 올린다.
   구 구조는 결과가 8px 흐린 글씨로 맨 아래 있어 '무엇을 확인했는지'만 보이고
   '그래서 어땠는지'가 눈에 들어오지 않았다. 내용도 한 단계 진하게(10 -> 11px). */

.document-list{ border-radius:0;overflow:hidden;background:var(--surface);border:1px solid var(--line); }
.document-row{ min-height:62px;padding:11px 14px;display:grid;grid-template-columns:36px 1fr auto;gap:10px;align-items:center;border-bottom:1px solid var(--line); }
.document-row:last-child{ border-bottom:0; }
.document-icon{ width:36px;height:36px;border-radius:0;background:var(--surface-2);color:var(--forest);display:grid;place-items:center; }
.document-icon .icon{ width:17px;height:17px; }
.document-row b{ display:block;font-size:12px; }
/* --- T_DOCICONCENTER begin --- (2026-08-20 앱팀 v11 실기기 회신 2-2 "아이콘이 박스 좌측 상단으로 쏠린다")
   `.document-row span`(0,1,1)이 `.document-icon`(0,1,0)을 특이성으로 이겨, 아이콘 박스의
   display:grid · place-items:center · color:var(--forest) 를 통째로 덮고 있었다.
   그래서 아이콘이 박스 좌상단에 붙고(실측 inset_left/top = 0) 색도 muted 로 바뀐다.
   ★같은 함정을 `.doc-state`/`.doc-link` 는 아래에서 `!important` 로 뚫어 놨다 — 그 흔적이
     이 규칙이 범인이라는 증거다. 선택자를 설명글 자리(`>div>span`)로 좁혀 근원을 없앤다
     (시트 규칙 `.source-sheet-list .document-row>div>span` 이 이미 같은 형태다). */
.document-row>div>span{ display:block;color:var(--muted);font-size:12px;line-height:1.45;margin-top:4px; }
/* --- T_DOCICONCENTER end --- */
.document-row button{ min-height:34px;padding:0 10px;border-radius:0;background:var(--forest-soft);color:var(--forest);font-size:12px;font-weight:850; }
.stage-tab{ flex:none;min-height:37px;padding:0 13px;border-radius:0;background:var(--surface);border:1px solid var(--line);color:var(--muted);font-size:12px;font-weight:800; }
.stage-tab.is-active{ background:var(--ink);color:#fff;border-color:var(--ink); }
.saved-copy small{ color:var(--forest);font-size:12px;font-weight:850; }
.saved-copy h3{ font-size:14px;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.saved-copy p{ color:var(--muted);font-size:12px;margin-top:4px; }
/* T_PIPESTEP(G): 라벨 달린 순차 스테퍼 — 무슨 단계인지·현재 위치·순차 진행이 한눈에 보인다. */
.saved-next{ display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;border-top:1px solid var(--line);background:#fafbf9; }
.saved-next div{ display:flex;align-items:center;gap:7px;min-width:0; }
.saved-next .icon{ width:15px;height:15px;color:var(--amber); }
.saved-next span{ font-size:12px;color:var(--muted); }
.saved-next b{ font-size:12px;white-space:nowrap; }
.saved-recovery{
  display:grid;
  grid-template-columns:36px 1fr auto;
  gap:10px;
  align-items:center;
  margin-bottom:12px;
  padding:13px;
  border:1px solid rgba(188,116,25,.18);
  border-radius:0;
  background:#fffaf2;
}
.saved-recovery>span{ width:36px;height:36px;display:grid;place-items:center;border-radius:0;background:#fff;color:var(--amber); }
.saved-recovery>span .icon{ width:17px;height:17px; }
.saved-recovery b{ display:block;font-size:12px; }
.saved-recovery p{ margin-top:4px;color:var(--muted);font-size:12px;line-height:1.45; }
.saved-recovery button{ min-height:34px;padding:0 10px;border-radius:0;background:var(--ink);color:#fff;font-size:12px;font-weight:850;white-space:nowrap; }
.saved-recovery button:disabled{ opacity:.58; }

.score-hero{ padding:20px;border-radius:0;background:var(--ink);color:#fff;position:relative;overflow:hidden;box-shadow:var(--shadow-md); }
.score-hero::after{ content:"";position:absolute;width:190px;height:190px;border-radius:50%;border:32px solid rgba(207,232,97,.06);right:-70px;top:-85px; }
.score-hero .kicker{ color:var(--lime); }
.score-hero h1{ font-size:26px;line-height:1.34;letter-spacing:-.05em;max-width:280px;position:relative;z-index:1; }
.score-hero>p{ color:rgba(255,255,255,.62);font-size:12px;margin-top:8px; }
.score-number{ display:flex;justify-content:space-between;align-items:baseline;padding-bottom:8px;border-bottom:1px solid rgba(255,255,255,.1); }
.score-number:last-child{ border-bottom:0;padding-bottom:0; }
.score-number span{ font-size:12px;color:rgba(255,255,255,.58); }
.score-number b{ font-size:14px; }
.outcome-grid{ display:grid;grid-template-columns:1fr 1fr;gap:9px; }
.outcome-card{ padding:16px;border-radius:0;background:var(--surface);border:1px solid var(--line);min-height:112px; }
.outcome-card b{ display:block;font-size:19px; }
.outcome-card span{ display:block;color:var(--muted);font-size:12px;line-height:1.45;margin-top:5px; }
.result-row{ display:grid;grid-template-columns:39px 1fr auto;gap:10px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line); }
.result-row:last-child{ border-bottom:0; }
.result-mark{ width:39px;height:39px;border-radius:0;background:var(--forest-soft);color:var(--forest);display:grid;place-items:center; }
.result-mark.over{ background:var(--gold-soft);color:var(--gold); }
.result-mark .icon{ width:18px;height:18px; }
.result-row h3{ font-size:12px; }
.result-row p{ color:var(--muted);font-size:12px;line-height:1.45;margin-top:5px; }
.result-row>span{ font-size:12px;font-weight:850;color:var(--forest); }
/* T_RESULTCARD(D): 낙찰결과 상세 — 우리 상한 vs 실제 낙찰가·응찰·가율·일자 나란히 + 지킴 판정. */
.result-compare{ display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:8px; }
.result-compare div{ display:flex;flex-direction:column;gap:2px; }
.result-compare span{ font-size:12px;font-weight:800;color:var(--muted); }
.result-compare b{ font-size:12px;font-weight:850; }
.result-compare b.over{ color:var(--gold); }
.result-verdict{ font-size:12px;font-weight:850;line-height:1.4;margin-top:7px; }
.result-verdict.kept{ color:var(--forest); }
.result-verdict.over{ color:var(--gold); }
/* T_REALDISC(S3): 실질 할인액 카드 — 감정가 대비 표면할인이 아니라 총투입 vs 진짜 시세. */
.avatar{ width:47px;height:47px;border-radius:0;background:var(--lime);color:var(--forest-deep);display:grid;place-items:center;font-size:16px;font-weight:900; }
.profile-name b{ display:block;font-size:15px; }
.profile-name span{ display:block;color:rgba(255,255,255,.62);font-size:12px;line-height:1.45;margin-top:5px; }
.preference{ padding:14px;border-radius:0;background:var(--surface);border:1px solid var(--line); }
.preference span{ display:block;color:var(--muted);font-size:12px;margin-bottom:5px; }
.preference b{ display:block;font-size:12px; }
.preference-note{ margin-top:10px;color:var(--muted);font-size:12px;line-height:1.6; }
.toggle{ width:39px;height:23px;border-radius:99px;background:#d9dfdc;padding:3px;transition:background .2s; }
.toggle::after{ content:"";display:block;width:17px;height:17px;border-radius:50%;background:#fff;transition:translate .25s var(--ease); }
.toggle.on{ background:var(--forest); }
.toggle.on::after{ translate:16px 0; }

.locked-banner{ padding:17px;border-radius:0;background:var(--gold-soft);border:1px solid rgba(182,139,60,.20); }
.locked-banner .lock-head{ display:flex;align-items:center;gap:9px;color:#7b5b20;font-size:12px;font-weight:850; }
.locked-banner .lock-head .icon{ width:17px;height:17px; }
.locked-banner p{ color:#806d48;font-size:12px;line-height:1.55;margin-top:8px; }
.locked-banner button{ width:100%;min-height:45px;border-radius:0;background:var(--ink);color:#fff;font-size:12px;font-weight:850;margin-top:13px; }
.guest-welcome{ padding:20px;border-radius:0;background:var(--ink);color:#fff;overflow:hidden;position:relative; }
.guest-welcome::after{ content:"";position:absolute;width:150px;height:150px;border-radius:50%;background:rgba(207,232,97,.08);right:-60px;top:-60px; }
.guest-welcome h2{ font-size:20px;line-height:1.35;position:relative;z-index:1; }
.guest-welcome p{ color:rgba(255,255,255,.62);font-size:12px;line-height:1.6;margin-top:7px;max-width:280px;position:relative;z-index:1; }
.guest-welcome button{ min-height:46px;padding:0 16px;border-radius:0;background:var(--lime);color:var(--forest-deep);font-size:12px;font-weight:900;margin-top:15px;position:relative;z-index:1; }

.intro-screen{ background:var(--paper); }
.intro-visual{ height:286px;margin:7px -20px 6px;position:relative;display:grid;place-items:center;overflow:hidden; }
.intro-logo{ width:82px;height:82px;border-radius:0;display:grid;place-items:center;background:var(--forest);color:#fff;font-size:30px;font-weight:900;position:relative;z-index:3;animation:floatLogo 4.2s ease-in-out infinite; }
@keyframes floatLogo { 50%{ transform:translateY(-8px) rotate(-2deg); } }
.intro-orbit{ position:absolute;border:1px solid rgba(11,95,71,.13);border-radius:50%; }
.orbit-a{ width:230px;height:230px;animation:orbit 18s linear infinite; }
.orbit-b{ width:330px;height:330px;border-style:dashed;animation:orbit 28s linear reverse infinite; }
@keyframes orbit { to{ rotate:360deg; } }
.intro-orbit::after{ content:"";position:absolute;width:10px;height:10px;border-radius:50%;background:var(--lime);box-shadow:0 0 0 6px rgba(207,232,97,.16);top:11%;left:18%; }
.orbit-b::after{ width:7px;height:7px;background:var(--gold);top:72%;left:91%; }
.intro-scan{ position:absolute;width:75px;height:48px;border-radius:0;background:var(--surface);border:1px solid rgba(11,95,71,.12); }
.scan-a{ left:18px;top:55px;rotate:-8deg; }
.scan-b{ right:20px;top:88px;rotate:7deg; }
.scan-c{ right:48px;bottom:34px;rotate:-4deg; }
.intro-scan::before,.intro-scan::after{ content:"";position:absolute;left:12px;right:12px;height:4px;border-radius:0;background:#dfe7e3; }
.intro-scan::before{ top:13px; }
.intro-scan::after{ top:24px;right:25px;background:var(--forest-soft); }
.intro-copy .kicker{ margin-bottom:10px; }
.intro-copy h1{ font-size:29px;line-height:1.32;letter-spacing:-.055em; }
.intro-copy p{ color:var(--muted);font-size:12px;line-height:1.7;margin-top:14px; }
.intro-points{ display:grid;gap:0;margin-top:19px;border-top:1px solid var(--line); }
.intro-points>div{ display:grid;grid-template-columns:29px 98px 1fr;gap:8px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line); }
.intro-points span{ color:var(--forest);font-size:12px;font-weight:900; }
.intro-points b{ font-size:12px; }
.intro-points small{ color:var(--muted);font-size:12px;line-height:1.4; }
.intro-slide[data-slide="1"] .intro-visual{ height:247px; }
.intro-slide[data-slide="1"] .intro-copy p{ margin-top:10px; }
.intro-slide[data-slide="1"] .intro-points{ margin-top:13px; }
.intro-slide[data-slide="1"] .intro-points>div{ padding:8px 0; }   /* T_INTROEVEN: 3행 x 상하 1.5px = 9px 감소 */
.intro-start{ width:100%;min-height:54px;border-radius:0;background:var(--forest);color:#fff;display:flex;align-items:center;justify-content:center;gap:8px;font-size:12px;font-weight:900;margin-top:18px; }
.intro-start .icon{ width:17px;height:17px; }

/* --- T_AUTHSCROLL --- (2026-08-20 코덱스 iOS 감사 2) 가로모드(568x320·812x375·852x393)에서
   이용약관·개인정보처리방침이 화면 아래로 밀리는데 `overflow:hidden` 이라 **닿을 수 없었다.**
   내용이 넘칠 때만 스크롤한다 — min-height:100% 라 짧을 때는 종전과 똑같이 하단 고정 배치다. */
.screen.no-tabs.auth-screen{ height:100%;min-height:100%;padding-bottom:calc(14px + var(--safe-bottom));overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column; }
.auth-brand{ display:flex;align-items:center;gap:10px;margin-top:12px;font-size:14px;font-weight:900;letter-spacing:.12em; }
.auth-copy{ margin-top:24px; }
.auth-copy h1{ font-size:30px;line-height:1.32;letter-spacing:-.055em; }
.auth-copy p{ color:var(--muted);font-size:12px;line-height:1.7;margin-top:10px; }
.auth-benefits{ display:grid;gap:7px;margin-top:16px;padding:12px 14px;border-radius:0;background:var(--forest-soft); }
.auth-benefits span{ display:flex;align-items:center;gap:8px;color:var(--forest-deep);font-size:12px;font-weight:800; }
.auth-benefits .icon{ width:15px;height:15px;color:var(--forest); }
.auth-actions{ display:grid;gap:8px;margin-top:auto;padding-top:18px; }
.social{ width:100%;min-height:48px;border-radius:0;display:flex;align-items:center;justify-content:center;gap:10px;font-size:12px;font-weight:850; }
.social b{ font-size:15px; }
.social.google{ background:#fff;border:1px solid var(--line-strong); }
.auth-screen .guest-entry{ min-height:48px; }   /* T_TAPTARGET: 이 줄이 위 .guest-entry 를 덮는다 — 실측으로 잡았다(40px) */
.auth-terms{ flex:none;color:var(--muted);font-size:12px;line-height:1.45;text-align:center;margin-top:10px; }

/* 작은 아이폰(568~667px)은 로그인 수단과 동의 문구를 우선한다. */
@media (max-height:700px){
  .auth-screen .auth-brand{ margin-top:4px; }
  .auth-screen .auth-copy{ margin-top:14px; }
  .auth-screen .auth-copy h1{ font-size:26px;line-height:1.25; }
  .auth-screen .auth-copy p,
  .auth-screen .auth-benefits{ display:none; }
  .auth-screen .auth-actions{ gap:7px;padding-top:12px; }
  .auth-screen .social{ min-height:46px; }
  .auth-screen .guest-entry{ min-height:36px; }
  .auth-screen .auth-terms{ margin-top:8px;font-size:11px; }
}

/* V5 production entry */
.splash-screen{
  min-height:100%;padding:0 25px 30px;overflow:hidden;color:#fff;
  display:flex;flex-direction:column;justify-content:space-between;
  background:var(--forest-deep);
}
.splash-aurora,.splash-aurora i{ position:absolute;inset:0;pointer-events:none; }
.splash-aurora i{ width:240px;height:240px;border:1px solid rgba(255,255,255,.09);border-radius:50%;left:50%;top:38%;translate:-50% -50%;animation:splashOrbit 13s linear infinite; }
.splash-aurora i:nth-child(2){ width:350px;height:350px;border-style:dashed;animation-duration:22s;animation-direction:reverse; }
.splash-aurora i:nth-child(3){ width:500px;height:500px;animation-duration:31s; }
@keyframes splashOrbit { to{ rotate:360deg; } }
.splash-center{ position:relative;z-index:2;margin:auto 0;text-align:center;animation:splashRise .8s var(--ease) both; }
@keyframes splashRise { from{ opacity:0;transform:translateY(16px) scale(.98); } }
/* T_LOGOKEEP: 스플래시 로고 마크도 같은 말풍선 형태 — border-radius 일괄 제거 예외. */
.splash-mark{ width:94px;height:94px;margin:0 auto 18px;border-radius:31px 31px 31px 9px;display:grid;place-items:center;background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.18);position:relative; }
.splash-mark span{ font-size:36px;font-weight:950; }
.splash-mark i{ position:absolute;width:11px;height:11px;right:5px;top:5px;border-radius:50%;background:var(--lime);box-shadow:0 0 0 7px rgba(207,232,97,.13);animation:live 2s ease-in-out infinite; }
.splash-wordmark{ font-size:12px;font-weight:900;letter-spacing:.33em;opacity:.65;margin-left:.33em; }
.splash-center h1{ font-family:Georgia,"Times New Roman",serif;font-size:34px;line-height:1.28;letter-spacing:-.05em;font-weight:500;margin-top:18px; }
.splash-progress{ position:relative;z-index:2;padding-bottom:calc(5px + var(--safe-bottom)); }
.splash-status{ display:flex;justify-content:space-between;gap:14px;color:rgba(255,255,255,.72);font-size:12px;margin-bottom:9px; }
.splash-status b{ color:var(--lime);font-size:12px; }
.splash-track{ height:3px;border-radius:0;background:rgba(255,255,255,.14);overflow:hidden; }
.splash-track i{ display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#fff,var(--lime));transition:width .45s var(--ease); }
.splash-retry{ width:100%;min-height:45px;margin-top:14px;border:1px solid rgba(255,255,255,.25);border-radius:0;color:#fff;font-size:12px;font-weight:850; }

.intro-screen{ min-height:100%;display:flex;flex-direction:column;overflow-x:clip; }
.intro-topbar{ min-height:52px;display:flex;align-items:center;justify-content:space-between;position:relative;z-index:4; }
.intro-skip{ min-height:42px;color:var(--muted);font-size:12px;font-weight:750; }
.intro-step{ color:var(--forest);font-size:12px;font-weight:900;letter-spacing:.04em; }
/* T_INTROEVEN: 컨텐츠를 줄여도 더 작은 기기가 나오면 같은 병이 재발한다 —
   슬라이드 영역이 줄어들 수 있게(min-height:0) 하고 버튼 줄은 절대 눌리지 않게(flex-shrink:0) 못박는다.
   넘칠 때는 버튼이 밀려나는 대신 슬라이드 안에서만 스크롤된다. */
.intro-slides{ flex:1;min-height:0;display:flex;flex-direction:column;margin-inline:-20px;padding-inline:20px;overflow-x:hidden;overflow-y:auto; }
.intro-slide{ flex:1;min-height:0;animation:introSlideIn .45s var(--ease) both; }
@keyframes introSlideIn { from{ opacity:0;transform:translateY(8px); } }
.intro-risk .intro-logo{ background:var(--ink); }
.risk-word{ position:absolute;padding:8px 12px;border-radius:999px;background:var(--surface);border:1px solid var(--line);color:var(--muted);font-size:12px;font-weight:850; }
.word-a{ left:34px;top:53px;rotate:-7deg; }.word-b{ right:35px;top:86px;rotate:7deg; }.word-c{ left:58px;bottom:38px;rotate:4deg; }
/* --- T_INTROEVEN begin --- (2026-07-26 대표님: "3의 컨텐츠를 줄여서 버튼 위치를 통일해줘")
   실측(로컬 430px 폭, device 높이를 600~854 로 훑음): 화면이 720px 미만이면 컨텐츠가
   `margin-top:auto` 여유를 먹어 버튼이 슬라이드마다 다른 높이에 선다.
     device 600~680 → 버튼 상단 Y = 슬1 575 · 슬2 584 · 슬3 601
   ⇒ 기준을 슬1(575)로 잡고 슬3은 26px, 슬2는 9px 을 줄인다. 아래 두 값이 그 26/9 다. */
.intro-focus{ height:253px;display:flex;flex-direction:column;justify-content:center;align-items:center; }
.focus-count{ position:relative;z-index:3;color:var(--forest);font-family:Georgia,serif;font-size:92px;line-height:.9;letter-spacing:-.08em; }
.focus-caption{ position:relative;z-index:3;color:var(--muted);font-size:12px;font-weight:850;margin-top:11px;letter-spacing:.06em; }
.focus-ring{ position:absolute;width:220px;height:220px;border-radius:50%;border:1px solid rgba(11,95,71,.18);animation:focusPulse 3s ease-in-out infinite; }
@keyframes focusPulse { 50%{ transform:scale(1.06);opacity:.7; } }
.intro-promise{ display:grid;grid-template-columns:34px 1fr;gap:9px;align-items:start;margin-top:21px;padding:15px;border-radius:0;background:var(--lime-soft);color:var(--forest-deep); }
.intro-promise>.icon{ width:20px;height:20px;margin:1px auto; }.intro-promise b,.intro-promise small{ display:block; }.intro-promise b{ font-size:12px; }.intro-promise small{ margin-top:5px;font-size:12px;line-height:1.45;opacity:.72; }
.intro-footer{ margin-top:auto;flex-shrink:0;padding-top:14px; }.intro-dots{ display:flex;justify-content:center;gap:6px; }.intro-dots i{ width:6px;height:6px;border-radius:0;background:#cbd2ce;transition:width .3s var(--ease),background .3s; }.intro-dots i.on{ width:22px;background:var(--forest); }.intro-footer .intro-start{ margin-top:13px; }

.auth-actions a{ text-decoration:none;color:inherit; }
.social.kakao{ background:#fee500;color:#191919; }
.social.naver{ background:#03c75a;color:#fff; }
.social.apple{ background:var(--ink);color:#fff; }
.social.dev{ background:var(--ink);color:#fff; }
.social.dev b{ font-size:12px;letter-spacing:.05em; }
.social.is-busy{ pointer-events:none;opacity:.58; }
.guest-entry{ width:100%;min-height:48px;color:var(--forest);font-size:12px;font-weight:850; }   /* T_TAPTARGET: 45 -> 48 */
.auth-error{ margin-top:14px;padding:12px;border-radius:0;background:var(--red-soft);color:var(--red);display:grid;grid-template-columns:20px 1fr;gap:8px;align-items:center;font-size:12px; }
.auth-error .icon{ width:18px;height:18px; }
.provider-empty{ padding:14px;border-radius:0;background:var(--surface-2);text-align:center;margin-top:12px; }.provider-empty b,.provider-empty span{ display:block; }.provider-empty b{ font-size:12px; }.provider-empty span{ color:var(--muted);font-size:12px;margin-top:4px; }
.offline-banner{ margin:0 0 13px;padding:10px 12px;border-radius:0;background:var(--amber-soft);color:#79501e;font-size:12px;font-weight:750; }
.empty-state{ padding:38px 24px;text-align:center;border:1px dashed var(--line-strong);border-radius:0;background:rgba(255,255,255,.52); }
.empty-symbol{ width:52px;height:52px;margin:0 auto 14px;border-radius:0;display:grid;place-items:center;background:var(--forest-soft);color:var(--forest); }.empty-symbol .icon{ width:23px;height:23px; }
.empty-state h3{ font-size:15px; }.empty-state p{ color:var(--muted);font-size:12px;line-height:1.6;margin-top:7px; }.empty-state button{ min-height:43px;padding:0 16px;margin-top:15px;border-radius:0;background:var(--forest);color:#fff;font-size:12px;font-weight:850; }
.signed-in-card{ display:grid;grid-template-columns:46px 1fr;gap:11px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:0;background:#fff; }.signed-in-card .avatar{ width:46px;height:46px; }.signed-in-card b,.signed-in-card span{ display:block; }.signed-in-card b{ font-size:12px; }.signed-in-card span{ color:var(--muted);font-size:12px;line-height:1.45;margin-top:5px;overflow:hidden;text-overflow:ellipsis; }
.sheet-logout{ display:block;text-align:center;color:var(--muted);font-size:12px;font-weight:750;text-decoration:none;min-height:44px;padding:14px 0 8px; }   /* T_TAPTARGET: 실측 ~39 -> 44 (여백 재분배, 시각 위치는 유지) */
.form-section{ margin-top:25px; }
.form-section h2{ font-size:14px;margin-bottom:11px; }
.form-section h2 span{ color:var(--muted);font-size:12px;font-weight:600;margin-left:5px; }
.choice-grid{ display:grid;grid-template-columns:repeat(3,1fr);gap:8px; }
.choice{ min-height:45px;border-radius:0;border:1px solid var(--line);background:var(--surface);color:var(--muted);font-size:12px;font-weight:800;transition:all .2s; }
.choice.on{ border-color:var(--forest);background:var(--forest-soft);color:var(--forest);box-shadow:inset 0 0 0 1px rgba(11,95,71,.08); }
.choice:active{ transform:scale(.96); }
.personal-preview{ display:grid;grid-template-columns:33px 1fr;gap:10px;margin-top:25px;padding:15px;border-radius:0;background:var(--lime-soft);color:var(--forest-deep); }
.personal-preview>.icon{ width:21px;height:21px;margin:2px auto; }
.personal-preview b{ display:block;font-size:12px; }
.personal-preview p{ font-size:12px;line-height:1.55;margin-top:4px;opacity:.76; }

.overlay{ position:fixed;inset:0;z-index:100;background:rgba(12,20,17,.45);animation:fadeIn .2s ease both; }
@keyframes fadeIn { from{ opacity:0; } }
/* T_AUDITFIX(D09): dvh 금지 — 앱은 safe-area 를 네이티브 contentInset 으로 처리한다. dvh 는 웹뷰에서 공백/잘림. */
.sheet{ position:fixed;z-index:110;left:50%;bottom:18px;translate:-50% 0;width:min(402px,calc(100vw - 20px));max-height:min(690px,calc(var(--app-h, 100vh) - 34px));overflow:auto;border-radius:0;background:#fbfbf8;box-shadow:0 30px 70px rgba(26,43,37,.17);padding:10px 20px calc(20px + var(--safe-bottom));animation:sheetIn .42s var(--ease) both; }
@keyframes sheetIn { from{ opacity:0;transform:translateY(34px) scale(.98); } }
.sheet-handle{ width:38px;height:4px;border-radius:0;background:#d6dbd8;margin:2px auto 17px; }
.sheet-head{ display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px; }
.sheet-head h2{ font-size:20px;letter-spacing:-.05em; }
.sheet-head p{ color:var(--muted);font-size:12px;line-height:1.5;margin-top:6px; }
.sheet-head .icon-btn{ width:44px;height:44px;background:var(--surface-2); }   /* T_TAPTARGET: 38 -> 44 */
.sheet-note{ color:var(--muted);font-size:12px;line-height:1.55;padding:9px 3px 0; }
.source-sheet-list{ max-height:min(450px,calc(var(--app-h, 100vh) - 205px));overflow:auto;overscroll-behavior:contain;border-top:1px solid var(--line); }
.source-sheet-list .document-row{ min-height:64px;padding:12px 0;grid-template-columns:34px minmax(0,1fr) auto;gap:10px; }
.source-sheet-list .document-icon{ width:34px;height:34px;background:var(--forest-soft); }
.source-sheet-list .document-icon .icon{ width:16px;height:16px; }
.source-sheet-list .document-row b{ font-size:13px;font-weight:850;line-height:1.4; }
.source-sheet-list .document-row>div>span{ margin-top:3px;font-size:12px;line-height:1.45; }
.source-sheet-list .doc-link,.source-sheet-list .doc-state{ min-height:36px;padding:0 10px; }
.source-sheet-note{ margin:10px 0 0;padding-left:11px;border-left:2px solid rgba(11,95,71,.28);color:var(--muted);font-size:12px;line-height:1.5; }
.paywall-visual{ height:145px;margin:0 -10px 18px;border-radius:0;display:grid;place-items:center;background:var(--forest-deep);color:#fff;overflow:hidden;position:relative; }
.paywall-visual::before,.paywall-visual::after{ content:"";position:absolute;border:1px solid rgba(255,255,255,.12);border-radius:50%; }
.paywall-visual::before{ width:150px;height:150px;left:-65px;bottom:-80px; }
.paywall-visual::after{ width:95px;height:95px;right:-20px;top:-45px; }
.paywall-orb{ width:68px;height:68px;border-radius:0;display:grid;place-items:center;background:rgba(255,255,255,.12); }
.paywall-orb .icon{ width:31px;height:31px;color:var(--lime); }
.benefit-list{ display:grid;gap:12px;margin:17px 0; }
.benefit{ display:grid;grid-template-columns:27px 1fr;gap:9px;align-items:start; }
.benefit i{ width:27px;height:27px;border-radius:0;background:var(--forest-soft);color:var(--forest);display:grid;place-items:center;font-style:normal; }
.benefit i .icon{ width:14px;height:14px; }
.benefit b{ display:block;font-size:12px; }
.benefit span{ display:block;color:var(--muted);font-size:12px;line-height:1.5;margin-top:4px; }
.sheet-primary{ width:100%;min-height:52px;border-radius:0;background:var(--forest);color:#fff;font-size:12px;font-weight:900; }
.sheet-primary.danger{ background:var(--red); }
.sheet-primary:disabled{ opacity:.38;box-shadow:none;cursor:not-allowed; }
.sheet-secondary{ width:100%;min-height:48px;color:var(--muted);font-size:12px;font-weight:750; }   /* T_TAPTARGET: 42 -> 48 */
.auth-error.success{ background:var(--forest-soft);color:var(--forest); }

[data-score-title],[data-evidence-headline]{ white-space:pre-line; }
.saved-next{ width:100%;text-align:left;border-radius:0; }
.doc-state,.doc-link{ min-height:32px;padding:0 9px;border-radius:0;display:grid!important;place-items:center;background:var(--surface-2);color:var(--muted)!important;font-size:12px!important;font-weight:850;text-decoration:none;white-space:nowrap;margin:0!important; }
.doc-link{ background:var(--forest-soft);color:var(--forest)!important; }
.auth-terms a{ color:var(--forest);font-weight:800;text-underline-offset:2px; }
.form-notice{ margin:-3px 0 10px;padding:9px 11px;border-radius:0;background:var(--amber-soft);color:var(--amber);font-size:12px;line-height:1.45; }
.empty-state.compact{ padding:24px 18px; }
/* T_EDREPORT: 구 .copy-panel(물건 정보) · .check-list(체크리스트) 박스 카드는 시트 재작성으로 소멸 —
   대체 = .sheet-rows(공용) · .checklist-row(파일 말미 T_EDREPORT 레이어). */
.result-mark.pending{ background:var(--surface-2);color:var(--muted); }
.settings-note{ margin:-2px 3px 4px;color:var(--muted);font-size:12px;line-height:1.55; }

.toast{ position:fixed;z-index:130;left:50%;bottom:32px;translate:-50% 20px;min-width:210px;max-width:calc(100vw - 36px);padding:12px 16px;border-radius:0;background:var(--ink);color:#fff;text-align:center;font-size:12px;font-weight:750;box-shadow:0 10px 25px rgba(0,0,0,.18);opacity:0;pointer-events:none;transition:opacity .22s,translate .28s var(--ease); }
.toast.show{ opacity:1;translate:-50% 0; }

@media (max-width: 900px) {
  .prototype-stage{ grid-template-columns: 1fr; padding: 20px; }
}
/* --- T_IPADSTAGE begin --- (2026-08-18) 아이패드 세로에서 폰 레이아웃이 화면 전체로 늘어났다.
   `.device` 의 width:100%(ios 규칙)는 **부모 grid 컬럼 기준**인데, 바로 위 max-width:900 이
   컬럼을 1fr 로 벌려 iPad 세로(834px)에서 버튼 폭이 790px 이 되고 화면 가운데가 600px 넘게 비었다.
   가로(1194px)는 이 미디어쿼리에 안 걸려 430px 프레임 중앙이라, **같은 앱이 방향에 따라 다른
   화면**이 됐다. 태블릿 폭에서는 가로와 같은 폰 프레임을 유지해 통일한다.
   ★하한 700px = iPad 최소 논리폭(mini 744)은 덮고 큰 폰·폴더블(<=673)은 건드리지 않는다.
     상한 900px 위(iPad Pro 12.9 세로 1024·가로 1194)는 기본 규칙이 이미 430px 프레임이다.
   ★실측(2026-08-18 · iframe 재현 + data-native-platform=ios): 세로 834 -> device 430 / 버튼 386
     (가로와 동일) · 폰 390·430 은 좌표 변화 0. 계기 = 애플 4.8 거절 심사 기기가 iPad Pro 였다. */
@media (min-width: 700px) and (max-width: 900px) {
  .prototype-stage{ grid-template-columns: 430px; padding: 40px; }
}
/* --- T_IPADSTAGE end --- */
@media (max-width: 600px) {
  html, body, .prototype-stage{ width:100%;height:100%;min-height:100%;background:var(--paper); }
  .prototype-stage{ display:block;padding:0;overflow:hidden; }
  .prototype-stage::before{ display:none; }
  .device{ width:100%;height:var(--app-h, 100vh);min-height:0;border:0;border-radius:0;box-shadow:none; } /* T_AUDITFIX(D09): dvh 금지 — 앱 인셋은 네이티브 contentInset 소관 */
  .app-viewport{ inset:0; }
  .bottom-nav{ bottom:calc(7px + var(--safe-bottom)); }
  .sheet{ bottom:0;width:100%;border-radius:0; }
}
@media (max-width: 370px) {
  .screen{ padding-left:16px;padding-right:16px; }
  .recommendation-topbar{ width:calc(100% + 32px);margin-right:-16px;margin-left:-16px;padding-right:11px;padding-left:11px; }
  .media-hero,.insight-strip{ margin-left:-16px;margin-right:-16px; }
  .insight-strip{ padding-left:16px;padding-right:16px; }
  .page-intro h1{ font-size:27px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after{ scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important; }
}

/* --- T_SCORELOAD begin --- 성과 화면 로딩 스켈레톤: 응답 전엔 자리표시 숫자(0건·—)를 그리지 않는다 */
.score-skeleton{ display:grid;gap:11px;padding-top:2px; }
.score-skeleton .sk-pair{ display:grid;grid-template-columns:1fr 1fr;gap:9px; }
/* --- T_WAITFAIL begin --- 로딩 프리미티브 범용화: sk-block 셔머를 .score-skeleton 스코프 밖으로 승격.
   보고서 대기·보관함·준비상태 값까지 전부 이 한 벌을 쓴다 — 로딩 스타일을 둘로 가르지 않는다. */
.sk-block{ border-radius:0;background:linear-gradient(100deg,var(--surface-2) 40%,rgba(255,255,255,.65) 50%,var(--surface-2) 60%);background-size:200% 100%;animation:sk-shimmer 1.15s linear infinite; }
.sk-hero{ height:236px;border-radius:0; }
.score-skeleton .sk-pair .sk-block{ height:112px; }
.sk-row{ height:62px;border-radius:0; }
.sk-line{ display:inline-block;width:58px;height:13px;vertical-align:-2px; }
/* --- T_WAITFAIL end --- */
@keyframes sk-shimmer{ to { background-position:-200% 0; } }
/* --- T_SCORELOAD end --- */

/* --- T_SCBCASE begin --- 사건번호: 앞부분 + 가린 자릿수만큼 블러 블록(실값은 DOM에 없다) */
.result-row .result-case{ margin-top:4px;font-size:12px; }
.case-chip{ display:inline-flex;align-items:center;font-weight:800;color:var(--ink-2);letter-spacing:.01em; }
.case-chip-blur{ display:inline-flex;align-items:center;gap:2px;margin-left:4px; }
.case-chip-blur i{ width:.6em;height:1.05em;border-radius:0;background:rgba(63,74,70,.28);filter:blur(1.1px); }
/* --- T_SCBCASE end --- */

/* --- T_SCBDUE begin --- 성과 행 상태: 결과 전엔 매각기일·D-day 를 보여준다 */
.result-status{ display:flex;flex-direction:column;align-items:flex-end;gap:3px;text-align:right;line-height:1.2; }
.result-status small{ font-size:12px;font-weight:750;color:var(--muted); }
.result-status.is-resolved b{ padding:5px 9px;border-radius:999px;background:var(--forest);color:#fff; }
/* --- T_SCBDUE end --- */

/* --- T_SCORECTA begin --- 성과 히어로 '결과 확인' CTA 부각 */
.score-cta{ margin-top:16px;width:100%;min-height:46px;display:flex;align-items:center;justify-content:center;gap:7px;border-radius:0;background:var(--lime);color:var(--forest-deep);font-size:12px;font-weight:900;position:relative;z-index:1;transition:transform .2s; }
.score-cta:active{ transform:scale(.98); }
.score-cta .icon{ width:15px;height:15px; }
[data-score-list]{ scroll-margin-top:12px; }
/* --- T_SCORECTA end --- */

/* --- T_REGIONCHIPS begin --- 관심 지역 17개: 그룹 라벨 + 4열 촘촘 그리드 */
.region-groups{ display:grid;gap:13px; }
/* T_MULTISEL begin: 그룹 라벨 폰트 통일 — 9px/800 은 폴백 폰트(800 굵기 서체 없음)에서 합성 볼드로 라벨마다 다르게 뭉개져 보였다.
   실제 볼드 서체가 존재하는 10px/700 규칙 하나로 수도권/광역시/도 지역 세 라벨을 통일한다 */
.region-group-label{ display:block;color:var(--muted);font-size:12px;font-weight:700;line-height:1.2;margin-bottom:7px;letter-spacing:.02em; }
/* T_MULTISEL end */
.choice-grid.compact{ grid-template-columns:repeat(4,1fr); }
.choice-grid.compact .choice{ min-height:41px; }
/* --- T_REGIONCHIPS end --- */

/* T_SGGCHIP begin: 시군구 2단계 패널 — 시도 칩 아래에 그 시도의 시·군·구 칩을 펼친다 */
/* --- T_REGIONPICKED (2026-07-23) --- 고른 지역을 접어도 보이는 자리. 시군구 패널 위에 항상 남는다. */
.region-picked{ display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:2px 0 10px; }
.region-picked-label{ font-size:12px;font-weight:800;color:var(--muted);letter-spacing:.02em;margin-right:2px; }
.region-picked-chip{ display:inline-flex;align-items:center;gap:5px;padding:5px 8px 5px 6px;
  border:1px solid var(--forest);border-radius:999px;background:var(--forest);color:#fff;
  font-size:12px;font-weight:700;line-height:1;cursor:pointer; }
.region-picked-chip b{ display:grid;place-items:center;min-width:14px;height:14px;border-radius:999px;
  background:rgba(255,255,255,.22);font-size:12px;font-weight:800; }
.region-picked-chip i{ font-style:normal;font-size:13px;line-height:1;opacity:.8; }
.region-picked-chip:active{ transform:scale(.97); }

.sgg-panel{ margin-top:13px;padding:12px 12px 13px;border:1px solid var(--line);border-radius:0;background:var(--surface); }
.sgg-head{ display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px; }
.sgg-head b{ font-size:12px;font-weight:800;line-height:1.3; }
.sgg-close{ border:0;background:none;color:var(--muted);font-size:12px;font-weight:700;padding:4px 2px;cursor:pointer; }
.sgg-hint{ margin:0 0 10px;color:var(--muted);font-size:12px;line-height:1.5; }
.sgg-grid{ max-height:272px;overflow-y:auto;padding-bottom:2px; }
.sgg-grid .choice{ min-height:36px;border-radius:0; }
/* T_SGGCHIP end */

/* T_WHYRANK begin: 홈 대표 물건 선정 근거 — 서버 배열 순서대로, 있는 항목만 노출 */
.why-ranked{ margin-top:16px;padding:14px;border:1px solid rgba(11,95,71,.13);border-radius:0;background:#f6f7f3; }
.why-ranked-list{ margin:0;padding:0;list-style:none;border-top:1px solid rgba(17,50,38,.08); }
.why-ranked-item{ display:grid;grid-template-columns:minmax(72px,.75fr) minmax(0,1.5fr);gap:10px;align-items:start;padding:9px 0;border-bottom:1px solid rgba(17,50,38,.07); }
.why-ranked-item:last-child{ padding-bottom:0;border-bottom:0; }
.why-ranked-label{ color:var(--muted);font-size:12px;font-weight:700;line-height:1.45;word-break:keep-all; }
.why-ranked-value{ min-width:0;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:4px 6px;text-align:right;font-size:12px;line-height:1.45;word-break:keep-all;overflow-wrap:anywhere; }
.why-ranked-value > b{ color:var(--ink);font-size:12px;font-weight:850; }
.why-ranked-item.is-good .why-ranked-value > b{ color:var(--forest); }
.why-ranked-hint{ color:var(--ink-2);font-weight:700; }
.why-ranked-hint i{ margin-right:4px;color:var(--forest);font-style:normal; }
.why-ranked-source{ padding:2px 6px;border-radius:999px;background:rgba(11,95,71,.09);color:var(--forest);font-size:12px;font-weight:800;line-height:1.35;white-space:nowrap; }
/* T_BIDSHEET: 유찰 행 '이력보기' pill 버튼 — 누르면 기일 내역 시트가 올라온다 */
.why-ranked-more{ flex:0 0 auto;margin-left:2px;padding:3px 10px;border-radius:999px;background:var(--forest);color:#fff;font-size:12px;font-weight:800;line-height:1.35;white-space:nowrap;transition:transform .1s ease; }
.why-ranked-more:active{ transform:scale(.95); }
.bidhist-sheet-panel{ margin-top:4px; }
.bidhist-sheet-panel .bidhist-timeline{ margin:0; }
/* T_INFINITE: 무한 스크롤 로딩 인디케이터(고품격 스피너) */
.infinite-sentinel{ display:flex;align-items:center;justify-content:center;gap:9px;padding:22px 0 10px;color:var(--muted);font-size:12px;font-weight:600; }
.infinite-spinner{ width:17px;height:17px;border-radius:50%;border:2px solid rgba(11,95,71,.16);border-top-color:var(--forest);animation:infinite-spin .7s linear infinite;flex:0 0 auto; }
.infinite-label{ letter-spacing:-.01em; }
@keyframes infinite-spin { to{ transform:rotate(360deg); } }
/* T_WHYRANK end */

/* ==========================================================================
   JUPGO PREMIUM SYSTEM · 2026-07-25
   판단은 선명하게, 근거는 깊게, 행동은 하나씩.
   ========================================================================== */
:root{
  --canvas: #e8ede9;
  --paper: #f6f5ef;
  --surface: #fffef9;
  --surface-2: #eceee9;
  --ink: #13201c;
  --ink-2: #38443f;
  --muted: #7b8580;
  --line: #d9dfda;
  --line-strong: #c3cdc6;
  /* T_FLATSURFACE: 프리미엄 레이어도 동일 — 뒤 블록이 앞을 덮으므로 여기서도 none. */
  --shadow-sm: none;
  --shadow-md: none;
  --shadow-lg: none;
}

body{ letter-spacing:-.027em; }
.screen{ padding-right:calc(22px + var(--safe-right));padding-left:calc(22px + var(--safe-left)); }   /* T_SAFESIDE: 이 줄이 위 .screen 의 좌우를 덮으므로 여기에도 반영해야 한다 */
/* T_NAVSCOPE: 탭이 있는 화면은 스크롤 하단 여백 = 탭 높이(66)+탭 아래 띄움(7)+여유(15)+안전영역
   (시안 .page.has-nav 96px 와 동치 — --safe-bottom 기본 8px). 닫힌 <details> 내부의 phantom rect
   (selection-audit)가 탭 위까지 뻗는 것도 이 값이라야 벗어난다. 탭 없는 화면(34px)은 그대로 —
   상세는 AI 도크 몫을 data-sticky 뷰포트 축소(80px+safe)가 이미 예약한다. */
.screen:not(.no-tabs){ padding-bottom:calc(88px + var(--safe-bottom)); }
.screen.no-tabs{ padding-bottom:34px; }
.device[data-tabs="true"] .app-viewport{ bottom:calc(80px + var(--safe-bottom)); }
/* --- T_STICKYROOM begin --- (2026-07-26 대표님) 담기 바 뒤로 본문이 비치고, 최하단까지 내리면
   마지막 카드가 바에 가려졌다. ★홈이 안 비치는 이유가 바로 위 한 줄이다 —
   탭 화면은 **뷰포트 자체가 탭바 위에서 끝나** 컨텐츠가 바 영역으로 들어오지 못한다.
   detail/evidence 는 뷰포트가 화면 끝까지라 본문이 바 뒤를 지나갔다.
   ⇒ 담기 바가 뜨는 화면도 같은 방식으로 뷰포트를 줄인다. 비침과 가림이 한 규칙으로 함께 닫힌다
   (여백을 padding 으로 주면 '가림'만 풀리고 '비침'은 남는다 — 그래서 뷰포트를 줄인다). */
.device[data-sticky="true"] .app-viewport{ bottom:calc(80px + var(--safe-bottom)); }
/* --- T_STICKYROOM end --- */
.section-heading{ margin-top:27px; }
.section-heading h2{ font-size:18px; }
.section-heading p{ max-width:290px; }

.bottom-nav{
  left:11px;
  right:11px;
  bottom:calc(7px + var(--safe-bottom));
  height:66px;
  padding:5px;
  border-radius:0;
  background:var(--surface);
  border-color:rgba(10,56,41,.10);
  box-shadow:0 -8px 20px rgba(28,46,38,.05);
}
.nav-item{ height:54px;border-radius:0;gap:3px; }
.nav-item.is-active{ background:rgba(11,95,71,.10); }
.nav-item span{ font-size:12px;font-weight:800; }

.profile-shortcut{
  width:38px;
  height:38px;
  display:grid;
  place-items:center;
  border-radius:50%;
  color:var(--forest);
  background:var(--surface);
  border:1px solid rgba(11,95,71,.13);
}
.profile-shortcut .icon{ width:18px;height:18px; }
.profile-shortcut:active{ transform:scale(.94); }

/* Home — 대표 판단을 가장 먼저 완결한다. */
/* T_SCOPEREGION(대표님 고퀄 요청): '내 지역' 지역명 = 핀 아이콘 칩. 토글(우측 194px)과 우측 정렬,
   음수 top 마진으로 토글 바로 아래에 붙인다(간격·위치 정합). */
.scope-region-chip{
  display:flex;
  align-items:center;
  gap:5px;
  width:fit-content;
  margin:-7px 0 13px auto;
  padding:5px 11px;
  border-radius:999px;
  background:rgba(11,95,71,.07);
  color:var(--forest);
  font-size:12px;
  font-weight:800;
  letter-spacing:-.02em;
}
.scope-region-chip .icon{ width:12px;height:12px;flex:none; }
.scope-region-chip span{ white-space:nowrap; }
.deal-priority{
  margin-top:13px;
  padding:13px;
  border-radius:0;
  background:var(--forest-soft);
  box-shadow:none;
}
.why-ranked{
  margin-top:14px;
  padding:12px 13px;
  background:#f6f7f3;
  border-color:var(--line);
  box-shadow:none;
}

.guest-welcome-compact{
  margin-top:13px;
  padding:14px;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:12px;
  align-items:center;
  border-radius:0;
  background:var(--ink);
}
.guest-welcome-compact::after{ width:90px;height:90px;right:-42px;top:-38px; }
.guest-welcome-compact h2{ font-size:12px;line-height:1.45; }
.guest-welcome-compact p{ margin-top:4px;font-size:12px;line-height:1.5; }
.guest-welcome-compact button{ min-height:38px;margin:0;padding:0 12px;border-radius:0;font-size:12px;white-space:nowrap; }
.recommendation-entry{ margin-top:13px;border-radius:0;box-shadow:none; }

.selection-audit{
  margin-top:14px;
  border:1px solid var(--line);
  border-radius:0;
  background:rgba(255,255,251,.60);
  overflow:hidden;
}
/* T_NAVSCOPE: Chrome 131+ 는 닫힌 <details> 내부를 content-visibility:hidden 으로만 감춰
   레이아웃 rect 가 남는다(phantom) — 홈 맨 아래 이 블록의 보이지 않는 내부가 하단 탭 밑까지
   뻗어 '겹침'으로 실측됐다. 닫혀 있으면 실제로 렌더에서 뺀다(화면 변화 없음). */
.selection-audit:not([open])::details-content{ display:none; }
.selection-audit>summary{
  min-height:64px;
  padding:12px 14px;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto 18px;
  align-items:center;
  gap:9px;
  list-style:none;
  cursor:pointer;
}
.selection-audit>summary::-webkit-details-marker{ display:none; }
.selection-audit>summary>span{ display:flex;align-items:center;gap:8px; }
.selection-audit>summary>span>.icon{ width:18px;height:18px;color:var(--forest); }
.selection-audit>summary b{ font-size:12px; }
.selection-audit>summary small{ color:var(--muted);font-size:12px;white-space:nowrap; }
.selection-audit>summary>.icon{ width:16px;height:16px;color:var(--muted);transition:rotate .2s; }
.selection-audit[open]>summary>.icon{ rotate:90deg; }
.selection-audit .market-pulse{
  margin:0 12px;
  border-radius:0;
  background:var(--surface);
}
.selection-audit .section-heading{ margin:19px 14px 10px; }
.selection-audit .section-heading h2{ font-size:15px; }
.selection-audit .insight-strip{ margin:0;padding:0 12px 12px; }
.selection-audit .insight{ min-width:82%; }

/* Recommendations — 헤드라인 대신 목록의 상태를 한눈에. */

/* Search — 서버가 내려준 실제 목록만 필터링한다. */
.search-access-note{
  margin-top:12px;
  padding:13px;
  display:grid;
  grid-template-columns:30px minmax(0,1fr) auto;
  gap:10px;
  align-items:center;
  border:1px solid var(--line);
  border-radius:0;
  background:#f0f1ec;
}
.search-access-note>.icon{ width:18px;height:18px;color:var(--forest);margin:auto; }
.search-access-note b{ display:block;font-size:12px; }
.search-access-note p{ margin-top:3px;color:var(--muted);font-size:12px;line-height:1.45; }
.search-access-note button{ min-height:34px;padding:0 10px;border-radius:0;background:var(--forest);color:#fff;font-size:12px;font-weight:850;white-space:nowrap; }

/* Detail — 물건 → 이력 → 가격 → 자금 → 위험 → 보고서 → 근거의 한 방향 흐름. */
/* --- T_DETAILSPEC begin --- (2026-08-09 대표님 "다시 만들어. HOME 처럼 디자인 시안을 찾아봐")
   ★정본 시안: design/app-wide-editorial-system-20260803/
       screen-10-detail.png(상세) · screen-05-home.png(홈) · styles.css(토큰) · SCREEN_INVENTORY.md
   시안이 정한 상세의 언어 — 앞서 내가 추측으로 만든 것과 정반대였다:
     · 본문 배경 = **흰색**(시안 .detail-body 는 배경을 지정하지 않는다)
     · **상자(카드)를 쓰지 않는다** — 구분은 hairline(var(--line))과 굵은 검정선뿐
     · 섹션 구분 = border-top:3px solid var(--ink) (+ 아래 hairline)   [시안 .detail-verdict]
     · 행 = 3열 grid(70px 1fr auto) + hairline                         [시안 .detail-fact]
     · 글자: 물건명 25px · 결론 23px · 본문 13~14px · 보조 12px         [SCREEN_INVENTORY 기준]
   ⇒ 베이지 바탕(var(--paper))은 시안에 없다. 홈과 갈라지던 근원이 이것이다. */
.detail-page{
  padding-bottom:calc(30px + var(--safe-bottom));
}
.detail-page .detail-topbar{
  position:sticky;
  top:0;
  z-index:24;
  margin:0 -20px;
  padding:0 15px;
  border-bottom:1px solid rgba(24,43,36,.065);
  background:rgba(255,255,255,.94);   /* T_DETAILSPEC: 시안은 흰 바탕이다 */
  backdrop-filter:blur(20px) saturate(1.18);
}
.detail-chapter{ margin-top:28px; }
.property-spec-section{ margin-top:9px; }
.property-spec-section .media-hero{ margin:0; }
.media-hero{ height:228px;border-radius:0; }
.detail-save-control{
  width:100%;
  min-height:64px;
  margin-top:11px;
  padding:10px 12px;
  display:grid;
  grid-template-columns:38px minmax(0,1fr) 18px;
  gap:10px;
  align-items:center;
  text-align:left;
  border:1px solid var(--line);
  border-radius:0;
  background:rgba(255,255,255,.78);
  transition:background .2s,border-color .2s,transform .18s;
}
.detail-save-control:active{ transform:scale(.985); }
.detail-save-control.is-saved{
  border-color:rgba(11,95,71,.16);
  background:var(--forest-soft);
}
.detail-save-control b,
.detail-save-control small{ display:block; }
.detail-save-control b{ font-size:12px;line-height:1.35; }
.detail-save-control small{ margin-top:4px;color:var(--muted);font-size:12px;line-height:1.45; }
/* T_DETAILTRIAD: 예상 낙찰가를 안전 상한과 **같은 카드 안**에 나란히(대표님 2026-07-26).
   상한이 주인공이라 크기 위계를 유지하고, 구분선으로 다른 값임을 분명히 한다. */
/* detail 의 실거래가 줄은 홈(.triad-market)과 같은 모양이되, 카드 위에 붙으므로 아래 여백만 조정 */

/* T_EVIDENCEENTRY(2026-07-26 대표님): 짙은 초록 버튼 스타일을 제거한다 —
   이 자리는 이제 홈과 같은 .recommendation-entry 행을 쓴다(.evidence-entry).
   ★남겨두면 `.detail-evidence-exit>button` 이 클래스 하나짜리 규칙을 특이도로 눌러
     새 스타일이 조용히 무시된다(실측: 배경만 옛 초록으로 남았다). */

@media (max-width:370px){
  .detail-page .detail-topbar {
    margin-right:-16px;
    margin-left:-16px;
    padding-right:11px;
    padding-left:11px;
  }
  .module-heading { grid-template-columns:36px minmax(0,1fr);gap:10px; }
  .module-heading>span { width:36px;height:36px;border-radius:0; }
  .detail-evidence-exit { padding-right:16px;padding-left:16px; }
  .detail-evidence-copy h2 { font-size:18px; }
}

/* Evidence — 깊이는 유지하고 첫 요약을 짧게. */

/* Saved — 전체 파이프라인은 한 번, 카드에는 현재 단계와 다음 행동만. */
.saved-intro{ padding-top:10px;padding-bottom:16px; }
.saved-intro h1{ font-size:27px;line-height:1.25; }
.stage-tab{ min-height:36px;padding:0 12px;border-radius:999px; }
.saved-copy small{ color:var(--muted); }
.saved-next{ padding:12px 14px;border-top:1px solid var(--line);background:#f8f8f4; }

/* Score — 분자·분모를 하나의 문장으로, 상세 집계는 아래로. */
.score-hero{ padding:19px;border-radius:0;box-shadow:var(--shadow-md); }
.score-hero h1{ font-size:23px;line-height:1.32; }
.score-number{ min-height:30px;padding:5px 0; }
.score-cta{ min-height:45px;margin-top:13px; }
.score-details{ margin-top:8px;border-bottom:1px solid var(--line); }
.score-details>summary{
  min-height:43px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  color:var(--muted);
  font-size:12px;
  font-weight:800;
  list-style:none;
  cursor:pointer;
}
.score-details>summary::-webkit-details-marker{ display:none; }
.score-details>summary .icon{ width:15px;height:15px;transition:rotate .2s; }
.score-details[open]>summary .icon{ rotate:90deg; }
.score-details .outcome-grid{ padding-bottom:12px; }
.result-row{ align-items:start; }

/* Setup — 세 덩어리로 나누되 기존 선택지와 data 훅은 그대로 둔다. */
.setup-intro{ padding-bottom:15px; }
.setup-intro h1{ font-size:27px;line-height:1.28; }
.personal-preview{ margin-top:14px; }
.setup-screen>.intro-start{ position:sticky;bottom:0;z-index:4;margin-top:13px; }

/* Profile is reached from the top-right shortcut and behaves like a focused subpage. */
[data-screen="profile"] .section-heading{ margin-top:24px; }

@media (max-width: 370px) {
  .screen{ padding-right:16px;padding-left:16px; }
  /* T_NAVSCOPE: 좁은 폭도 같은 하단 여백 — 30px 로 두면 360px 에서 탭이 콘텐츠를 다시 덮는다 */
  .screen:not(.no-tabs){ padding-bottom:calc(88px + var(--safe-bottom)); }
}

/* ==========================================================================
   JUPGO BID DECISION REPORT · PREMIUM PRODUCT UI · 2026-07-25
   실제 데이터는 index.html의 data-report-* 훅에만 바인딩한다.
   ========================================================================== */

/* 상세 화면의 유료 보고서 진입점 */

/* 보고서 공통 프레임 */
/* --- T_EDREPORT begin: 보고서 구매·본문(시안 11·12) — 카드 화면 폐기 → 지면(paper) 위 hairline 구획.
   구매 화면은 히어로가 풀블리드라 좌우 패딩 0(안쪽 .report-body 가 20px 담당),
   보고서 화면은 .screen 기본 좌우 패딩을 유지한다. --- */
.report-offer-screen,
.report-screen{
  background:var(--paper);
  animation:reportScreenFade .34s var(--ease) both;
}
.report-offer-screen{ padding-right:0;padding-left:0;padding-bottom:0; }
.report-screen{ padding-bottom:0; }
@keyframes reportScreenFade { from{ opacity:0; } to{ opacity:1; } }
.report-topbar{
  position:sticky;
  z-index:24;
  top:0;
  height:64px;
  margin:0;
  padding:0 10px;
  grid-template-columns:44px minmax(0,1fr) 44px;
  border-bottom:1px solid var(--line);
  background:var(--paper);
}
.report-screen .report-topbar{ margin:0 -20px; }
.report-topbar .detail-actions{ width:44px; }
.report-topbar .detail-title b{ font-size:14px; }
.report-topbar .detail-title span{ font-size:12px; }

/* 결제 전 — 다크 히어로(시안 report-hero · 구매 화면 전용) */
.report-hero{ padding:25px 20px 21px;color:#fff;background:var(--forest-deep); }
.report-hero small{ display:block;color:var(--lime);font-size:12px;font-weight:900;letter-spacing:.09em; }
.report-hero h1{ margin-top:9px;font-size:28px;font-weight:850;line-height:1.22;letter-spacing:-.05em; }
.report-hero p{ max-width:330px;margin-top:10px;color:rgba(255,255,255,.74);font-size:13px;line-height:1.55; }
.report-hero-results{ margin-top:17px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid rgba(255,255,255,.18);border-bottom:1px solid rgba(255,255,255,.18); }
.report-hero-results span{ min-width:0;padding:10px 5px;color:#fff;font-size:11px;font-weight:850;text-align:center;border-left:1px solid rgba(255,255,255,.14); }
.report-hero-results span:first-child{ border-left:0; }

.report-body{ padding:19px 20px 0; }

/* 가격 요약 행 — 3px ink 룰 아래 forest 가격(시안 price-line) */
.price-line{ padding:15px 0;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;border-top:3px solid var(--ink);border-bottom:1px solid var(--line); }
.price-line>span{ font-size:13px;font-weight:850; }
.price-line>span small{ display:block;margin-top:3px;color:var(--muted);font-size:12px;font-weight:750; }
.price-line>b{ color:var(--forest);font-size:27px;font-weight:900;line-height:1;letter-spacing:-.04em;white-space:nowrap; }
.offer-line{ min-height:44px;padding:10px 0;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line); }
.offer-line span{ color:var(--muted);font-size:12px;font-weight:800;white-space:nowrap; }
.offer-line b{ font-size:12px;font-weight:800;text-align:right;line-height:1.45; }

/* 준비 상태 — 체크리스트형 행(시안 readiness-list). [data-report-readiness] 의 is-* 상태 클래스와
   .readiness-state 뱃지 텍스트는 renderReportOfferData 가 갱신한다. */
.readiness-list{ margin-top:8px; }
.readiness-row{ min-height:57px;padding:10px 0;display:grid;grid-template-columns:24px minmax(0,1fr) auto;gap:9px;align-items:center;border-bottom:1px solid var(--line); }
.readiness-row>span{ width:22px;height:22px;display:grid;place-items:center;color:var(--forest);background:var(--lime-soft);font-size:12px;font-weight:900; }
.readiness-row b{ display:block;font-size:13px;font-weight:800; }
.readiness-row small{ display:block;margin-top:3px;color:var(--muted);font-size:12px;line-height:1.4; }
.readiness-row>strong{ color:var(--forest);font-size:12px;font-weight:850;text-align:right;white-space:nowrap; }
.readiness-scope{ margin-top:12px;color:var(--forest);font-size:12px;font-weight:800;line-height:1.5; }
.report-readiness.is-processing .readiness-state{ color:var(--blue);background:#e8eff3; }
.report-readiness.is-unavailable .readiness-state{ color:var(--red);background:var(--red-soft); }
.report-readiness.is-unavailable .readiness-scope{ color:var(--red); }
.report-readiness.is-unavailable .readiness-row>span{ color:var(--red);background:var(--red-soft); }

/* 다섯 가지 결정 — 번호 붙은 hairline 행 */
.report-five{ margin-top:8px; }
.report-five article{
  min-height:78px;
  padding:14px 2px;
  display:grid;
  grid-template-columns:30px minmax(0,1fr);
  gap:9px;
  border-bottom:1px solid var(--line);
}
.report-five article>span{ color:var(--forest);font-size:12px;font-weight:900; }
.report-five b{ display:block;font-size:14px;line-height:1.35; }
.report-five p{ margin-top:5px;color:var(--muted);font-size:12px;line-height:1.55; }

/* 제공 방식 — 설명 문단 + 아이콘 hairline 행 */
.delivery-copy{ margin:2px 0 0;color:var(--muted);font-size:13px;line-height:1.6; }
.delivery-lines{ margin-top:8px; }
.delivery-lines>div{ min-height:47px;display:flex;align-items:center;gap:9px;border-bottom:1px solid var(--line);font-size:13px;font-weight:800; }
.delivery-lines .icon{ width:15px;height:15px;color:var(--forest);flex:0 0 auto; }

/* 정직 고지 — 주황 좌측 3px 콜아웃(경고 박스 폐기) */
.report-truth-note{ margin-top:24px;padding:2px 0 2px 12px;border-left:3px solid var(--amber); }
.report-truth-note b{ display:block;font-size:13px;line-height:1.5; }
.report-truth-note p{ margin-top:5px;color:var(--muted);font-size:12px;line-height:1.6; }

/* 포함하지 않는 것 — hairline 접이 행 */
.report-boundary{ margin-top:16px;border-top:1px solid var(--line);border-bottom:1px solid var(--line); }
.report-boundary summary{
  min-height:48px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  list-style:none;
  color:var(--ink-2);
  font-size:13px;
  font-weight:850;
}
.report-boundary summary::-webkit-details-marker{ display:none; }
.report-boundary summary .icon{ width:15px;height:15px;color:var(--muted);transition:rotate .2s; }
.report-boundary[open] summary .icon{ rotate:90deg; }
.report-boundary>div{
  padding:2px 0 14px;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:7px;
}
.report-boundary>div span{
  padding-top:9px;
  color:var(--muted);
  font-size:12px;
}

/* 법적 고지 — 고정 바에서 본문 말미로(고정 바가 콘텐츠를 덮지 않게 바는 얇게 유지) */
.purchase-terms{ margin:14px 0 0;color:var(--muted);font-size:12px;line-height:1.55; }

/* 고정 구매 바 — 배선 유지(.report-purchase-bar button>span 을 renderReportOfferData 가 바꾼다) */
.report-purchase-space{ height:118px; }
.report-purchase-bar{
  /* --- T_FIXNOTRANSFORM begin --- (B20/D21) 고정 요소에서 transform 을 뺀다. iOS 웹뷰는
     `position:fixed` + `translate` 조합에서 관성 스크롤·키보드 표시 중 바가 **떠다닌다**
     (그래서 하단 탭·담기 바는 이미 `.device` 직속 absolute 로 옮겼다 — T_STICKYSHELL).
     이 바는 `.report-purchase-bar button` 을 `appScreen.querySelector` 로 찾는 **구매 배선**이
     걸려 있어 마크업을 밖으로 옮기지 않는다. 대신 `left:0/right:0 + margin:0 auto` 로
     transform 없이 같은 중앙 정렬을 만든다(폭은 .device 와 같은 430px 상한). */
  position:fixed;
  z-index:40;
  left:0;
  right:0;
  bottom:0;
  margin:0 auto;
  max-width:430px;
  padding:12px 20px calc(12px + var(--safe-bottom));
  display:grid;
  grid-template-columns:.74fr 1.26fr;
  gap:9px 10px;
  border-top:1px solid var(--line);
  background:var(--surface);
}
.report-purchase-bar>div{ align-self:center;min-width:0; }
.report-purchase-bar small,
.report-purchase-bar b{ display:block; }
.report-purchase-bar small{ color:var(--muted);font-size:12px;white-space:nowrap; }
.report-purchase-bar b{ margin-top:3px;font-size:14px; }
.report-purchase-bar>button{
  min-height:50px;
  padding:0 12px 0 14px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  border-radius:0;
  color:#fff;
  background:var(--forest);
  font-size:14px;
  font-weight:900;
}
.report-purchase-bar>button .icon{ width:16px;height:16px;flex:0 0 auto; }
.report-purchase-bar>p{
  grid-column:1/-1;
  margin:0;
  color:var(--muted);
  font-size:12px;
  line-height:1.45;
  text-align:left;
}
.report-purchase-bar>p.report-purchase-promise{ color:var(--forest);font-weight:800; }

.report-purchase-bar>button:disabled{
  color:#8b918e;
  background:#dfe2de;
  box-shadow:none;
  cursor:not-allowed;
}

/* 구매 완료 — 최신 상태 행(박스 폐기 · hairline 행) */
.report-version-strip{
  min-height:38px;
  margin:0;
  padding:9px 0;
  display:flex;
  align-items:center;
  gap:10px;
  border-bottom:1px solid var(--line);
  color:var(--muted);
  font-size:12px;
  font-weight:750;
}
.report-version-strip>span:last-child{ margin-left:auto;color:var(--forest);font-weight:900;white-space:nowrap; }
@keyframes reportPulse { 50%{ opacity:.35;scale:.72; } }
.report-live{ display:flex;align-items:center;gap:5px;color:var(--forest);white-space:nowrap; }
.report-live i{
  width:6px;
  height:6px;
  border-radius:50%;
  background:var(--forest);
}

/* 30초 결론(시안 report-conclusion) — 지면 위 3px ink 룰. 판정 클래스(is-*)는 상태 어구 색만 바꾼다. */
.report-conclusion{ padding:20px 0 0; }
.report-conclusion-eyebrow{ display:flex;align-items:baseline;justify-content:space-between;gap:10px; }
.report-conclusion-eyebrow small{ color:var(--forest);font-size:12px;font-weight:900;letter-spacing:.04em; }
.report-conclusion-eyebrow>span{ color:var(--forest);font-size:12px;font-weight:900;text-align:right; }
.report-conclusion.is-conditional .report-conclusion-eyebrow>span,
.report-conclusion.is-on-hold .report-conclusion-eyebrow>span,
.report-conclusion.is-hold .report-conclusion-eyebrow>span{ color:var(--amber); }
.report-conclusion.is-not-recommended .report-conclusion-eyebrow>span,
.report-conclusion.is-stop .report-conclusion-eyebrow>span{ color:var(--red); }
.report-conclusion>h1{
  margin-top:8px;
  font-size:28px;
  font-weight:850;
  line-height:1.24;
  letter-spacing:-.05em;
}
.report-conclusion>h1 em{ color:var(--forest);font-style:normal;font-weight:900; }
.report-hero-context{
  margin-top:9px;
  display:flex;
  flex-wrap:wrap;
  gap:4px 12px;
  color:var(--muted);
  font-size:12px;
}

/* 최종 입찰상한 + 핵심 숫자 — 라벨/값 hairline 행(시안 report-metric) */
.report-ceiling{
  margin-top:16px;
  padding:14px 0;
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:12px;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.report-ceiling>span{ font-size:13px;font-weight:850; }
.report-ceiling>span small{ display:block;margin-top:4px;color:var(--muted);font-size:12px;font-weight:750;line-height:1.4; }
.report-ceiling>b{ color:var(--forest);font-size:22px;font-weight:900;line-height:1.05;letter-spacing:-.045em;text-align:right;white-space:nowrap; }
.report-metric{
  min-height:56px;
  padding:10px 0;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  border-bottom:1px solid var(--line);
}
.report-metric>span{ font-size:13px;font-weight:800; }
.report-metric>span small{ display:block;margin-top:3px;color:var(--muted);font-size:12px;font-weight:750;line-height:1.4; }
.report-metric>b{ color:var(--forest);font-size:18px;font-weight:900;letter-spacing:-.03em;text-align:right; }
.report-metric.is-sub>span{ color:var(--muted);font-size:12px; }
.report-metric.is-sub>b{ color:var(--ink);font-size:13px; }

/* 가장 큰 위험 — 주황 좌측 3px 콜아웃(시안 risk-callout) */
.risk-callout{ margin-top:16px;padding:10px 0 10px 13px;border-left:3px solid var(--amber); }
.risk-callout small{ display:block;color:var(--amber);font-size:12px;font-weight:900; }
.risk-callout b{ display:block;margin-top:5px;font-size:15px;line-height:1.45; }
.risk-callout p{ margin:6px 0 0;color:var(--muted);font-size:13px;line-height:1.5; }

/* 다음 행동 하나 — 3px 룰 + 화면의 주요 CTA(체크리스트) + 근거 원문 행 */
.report-next-rule{ margin-top:24px;padding-top:18px;border-top:3px solid var(--ink); }
.report-next-rule .section-heading{ margin:0; }
.report-next-rule .section-heading h2{ font-size:22px;letter-spacing:-.045em; }
.report-next-rule .section-heading p{ margin-top:5px;color:var(--muted);font-size:13px;line-height:1.5; }
.report-cta{
  width:100%;
  min-height:50px;
  margin-top:14px;
  padding:0 16px;
  display:flex;
  align-items:center;
  justify-content:center;
  color:#fff;
  background:var(--forest);
  font-size:14px;
  font-weight:900;
}
.report-cta:active{ transform:scale(.99); }
.report-next-rule .source-line{ margin-top:14px; }

/* 보고서 목차 — 가로 스크롤 칩 폐기 → 9열 지면 목차(390·360 모두 넘침 0) */
.report-section-nav{
  position:sticky;
  z-index:20;
  top:64px;
  margin:20px 0 0;
  display:grid;
  grid-template-columns:repeat(9,1fr);
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  background:var(--paper);
}
.report-section-nav button{
  min-height:47px;
  padding:6px 0;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:2px;
  color:var(--muted);
  font-size:12px;
  font-weight:800;
}
.report-section-nav button span{ color:var(--forest);font-size:12px;font-weight:900; }
.report-section-nav button:active{ color:var(--forest); }

/* 보고서 섹션 공통 — 흰 카드 폐기 → 3px ink 룰 구획 */
.report-section{
  scroll-margin-top:118px;
  margin-top:28px;
  padding:18px 0 8px;
  border-top:3px solid var(--ink);
}
.report-section-head{
  display:grid;
  grid-template-columns:30px minmax(0,1fr);
  gap:10px;
  align-items:start;
}
.report-section-head>span{
  padding-top:4px;
  color:var(--forest);
  font-size:12px;
  font-weight:900;
}
.report-section-head small{
  display:block;
  color:var(--forest);
  font-size:12px;
  font-weight:900;
  letter-spacing:.12em;
}
.report-section-head h2{ margin-top:3px;font-size:20px;line-height:1.25;letter-spacing:-.045em; }
.report-section-head p{ margin-top:5px;color:var(--muted);font-size:12px;line-height:1.5; }
.report-decision-quote,
.report-rights-conclusion{
  margin:16px 0 0;
  padding:2px 0 2px 13px;
  border:0;
  border-left:3px solid var(--forest);
  border-radius:0;
  color:var(--ink);
  background:transparent;
  font-size:14px;
  font-weight:800;
  line-height:1.6;
}
.report-summary-grid{ margin-top:6px; }
.report-summary-grid article{
  min-width:0;
  padding:11px 0;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:1px 12px;
  border-bottom:1px solid var(--line);
  background:transparent;
}
.report-summary-grid span,
.report-summary-grid b,
.report-summary-grid small{ display:block; }
.report-summary-grid span{ font-size:13px;font-weight:800; }
.report-summary-grid b{ grid-column:2;grid-row:1/3;align-self:center;color:var(--forest);font-size:15px;font-weight:900;letter-spacing:-.02em;text-align:right; }
.report-summary-grid small{ margin-top:2px;color:var(--muted);font-size:12px; }
.report-conditions{ margin-top:12px; }
.report-conditions>div{
  padding:11px 0;
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  gap:9px;
  align-items:start;
  border-bottom:1px solid var(--line);
}
.report-conditions p{ padding-top:2px;color:var(--ink-2);font-size:12px;line-height:1.5; }

.source-badge{
  width:max-content;
  max-width:100%;
  padding:4px 6px;
  display:inline-flex;
  align-items:center;
  border-radius:999px;
  font-size:12px;
  font-weight:900;
  white-space:nowrap;
}
.source-badge.official{ color:var(--forest);background:var(--forest-soft); }
.source-badge.calculated{ color:#355f7c;background:#e5edf3; }
.source-badge.estimated{ color:#7a6340;background:#f2ecdf; }
.source-badge.check{ color:#9a5a10;background:var(--amber-soft); }
.source-badge.input{ color:#725b83;background:#eee8f2; }

/* 02 · 입찰상한 — 수식을 hairline 등식 행으로(박스·다크 결과 폐기) */
.report-formula{ margin-top:12px; }
.report-formula article{
  min-height:46px;
  padding:9px 0;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  border-bottom:1px solid var(--line);
  background:transparent;
}
.report-formula article span{ color:var(--muted);font-size:12px;font-weight:800; }
.report-formula article b{ font-size:13px;font-weight:850;text-align:right;white-space:nowrap; }
.report-formula>i{
  display:flex;
  justify-content:flex-end;
  padding:5px 2px 0 0;
  color:var(--muted);
  font-size:12px;
  font-style:normal;
  font-weight:900;
  line-height:1;
}
.report-formula article.is-result{
  min-height:54px;
  margin-top:6px;
  border-top:3px solid var(--ink);
  border-bottom:0;
}
.report-formula article.is-result span{ color:var(--ink);font-weight:850; }
.report-formula article.is-result b{ color:var(--forest);font-size:18px;font-weight:900; }
.report-subhead{
  margin-top:22px;
  display:flex;
  align-items:end;
  justify-content:space-between;
  gap:10px;
}
.report-subhead h3{ font-size:14px; }
.report-subhead p{ margin-top:4px;color:var(--muted);font-size:12px;line-height:1.45; }
.report-subhead>span{
  flex:0 0 auto;
  color:var(--forest);
  font-size:12px;
  font-weight:850;
  white-space:nowrap;
}
/* 표 — 박스 폐기 · 머리행 2px ink 밑줄 + 행 hairline. min-width 강제를 없애 지면 안에서 줄바꿈,
   그래도 넘치는 데이터는 래퍼가 가로 스크롤로 받는다. */
.report-table-wrap{
  width:100%;
  max-width:100%;
  margin-top:10px;
  overflow-x:auto;
  scrollbar-width:thin;
  scrollbar-color:rgba(11,95,71,.25) transparent;
}
.report-table{
  width:100%;
  border-collapse:collapse;
  table-layout:auto;
  font-size:12px;
}
.report-table th{
  padding:9px 8px 9px 0;
  border-bottom:2px solid var(--ink);
  color:var(--muted);
  font-size:12px;
  font-weight:850;
  text-align:left;
  white-space:nowrap;
}
.report-table td{
  padding:10px 8px 10px 0;
  border-bottom:1px solid var(--line);
  color:var(--ink-2);
  line-height:1.45;
  vertical-align:middle;
}
.report-table th:last-child,
.report-table td:last-child{ padding-right:0; }
.report-table td:nth-child(2){ color:var(--ink);font-weight:800;white-space:nowrap; }
.report-table tr.is-primary td{ color:var(--ink); }
.report-table tr.is-primary td:first-child{ color:var(--forest);font-weight:900; }
.report-table tr.is-warning td{ color:#7e4c10; }
.report-table tr.is-total td{ border-top:2px solid var(--ink);border-bottom:0;color:var(--ink);font-weight:900; }
.table-use{
  padding:4px 6px;
  display:inline-flex;
  border-radius:999px;
  font-size:12px;
  font-weight:900;
  white-space:nowrap;
}
.table-use.yes{ color:var(--forest);background:var(--forest-soft); }
.table-use.ref{ color:var(--blue);background:#e8eff3; }
.table-use.no{ color:var(--red);background:var(--red-soft); }
.table-use.aid{ color:#755d33;background:var(--gold-soft); }
/* 노트 3종 — 회색 박스 폐기 → 좌측 2px 세로바(가격 원칙=forest · 대출 경고=amber · 법적 고지=중립) */
.report-method-note,
.report-loan-warning,
.report-legal-boundary{
  margin-top:14px;
  padding:2px 0 2px 12px;
  display:block;
  border-left:2px solid var(--forest);
  border-radius:0;
  color:var(--muted);
  background:transparent;
  font-size:12px;
  line-height:1.55;
}
.report-loan-warning{ border-left-color:var(--amber); }
.report-legal-boundary{ border-left-color:var(--line-strong); }
.report-method-note>.icon,
.report-loan-warning>.icon,
.report-legal-boundary>.icon{ display:none; }
.report-method-note b,
.report-loan-warning b{ color:var(--ink-2); }

/* 03 · 실제 필요 현금 — 가정은 라벨/값 행, 합산은 hairline 등식 */
.report-user-assumptions{ margin-top:12px; }
.report-user-assumptions>div{
  min-width:0;
  padding:10px 0;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:2px 12px;
  border-bottom:1px solid var(--line);
  background:transparent;
}
.report-user-assumptions small,
.report-user-assumptions b,
.report-user-assumptions span{ display:block; }
.report-user-assumptions small{ color:var(--muted);font-size:12px;font-weight:800;align-self:center; }
.report-user-assumptions b{ grid-column:2;grid-row:1;font-size:13px;font-weight:850;text-align:right;align-self:center; }
.report-user-assumptions span{
  grid-column:1/-1;
  margin-top:2px;
  color:var(--forest);
  font-size:12px;
  font-weight:850;
}
.report-user-assumptions span .icon{ width:10px;height:10px;vertical-align:-1px;margin-right:3px; }
.report-user-assumptions .is-verified b{ color:var(--forest); }
.report-cash-total{ margin-top:14px; }
.report-cash-total>div{
  min-height:46px;
  padding:9px 0;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  border-bottom:1px solid var(--line);
}
.report-cash-total small{ color:var(--muted);font-size:12px;font-weight:800; }
.report-cash-total b{ font-size:13px;font-weight:850;text-align:right;white-space:nowrap; }
.report-cash-total>i{
  display:flex;
  justify-content:flex-end;
  padding:5px 2px 0 0;
  color:var(--muted);
  font-size:12px;
  font-style:normal;
  font-weight:900;
  line-height:1;
}
.report-cash-total .is-result{
  min-height:54px;
  margin-top:6px;
  border-top:3px solid var(--ink);
  border-bottom:0;
}
.report-cash-total .is-result small{ color:var(--ink);font-weight:850; }
.report-cash-total .is-result b{ color:var(--forest);font-size:18px;font-weight:900; }
.money-table th:nth-child(2),
.money-table td:nth-child(2){ text-align:right; }

/* 04 · 권리와 점유 — 톤 박스 폐기 → 결론 문장 + 주황 콜아웃 */
.rights-overview{ margin-top:14px; }
.rights-overview>div{
  padding:0 0 14px;
  border-bottom:1px solid var(--line);
  background:transparent;
}
.rights-main-icon{ display:none; }
.rights-overview>div small{ display:block;margin-top:0;color:var(--forest);font-size:12px;font-weight:850; }
.rights-overview h3{ margin-top:5px;font-size:17px;line-height:1.4;letter-spacing:-.03em; }
.rights-overview aside{
  margin-top:13px;
  padding:2px 0 2px 12px;
  border-left:3px solid var(--amber);
  background:transparent;
}
.rights-overview aside small{ color:var(--amber);font-size:12px;font-weight:850; }
.rights-overview aside b{ display:block;margin-top:5px;color:var(--ink);font-size:13px;line-height:1.45; }
.rights-overview aside p{ margin-top:5px;color:var(--muted);font-size:12px;line-height:1.5; }
.report-source-legend{ margin-top:12px;display:flex;flex-wrap:wrap;gap:5px; }
.report-rights-conclusion{ border-left-color:var(--amber);font-size:13px;font-weight:750; }

/* 05 · 가격과 환금성 — 박스·그라디언트 폐기, 분포 트랙은 얇은 선 + 점 */
.price-band-card{ margin-top:14px; }
.price-band-head{ display:flex;align-items:flex-start;justify-content:space-between;gap:10px; }
.price-band-head small{ color:var(--muted);font-size:12px; }
.price-band-head h3{ margin-top:4px;font-size:14px; }
.price-band-head>span{
  flex:0 0 auto;
  color:var(--forest);
  font-size:12px;
  font-weight:850;
  white-space:nowrap;
}
.price-band-track{
  position:relative;
  height:74px;
  margin:20px 14px 0;
}
.price-band-track>i{
  position:absolute;
  left:0;
  right:0;
  top:30px;
  height:2px;
  background:var(--line-strong);
}
.price-band-track>span{
  position:absolute;
  top:10px;
  translate:-50% 0;
  text-align:center;
}
.price-band-track>span::before{
  content:"";
  width:10px;
  height:10px;
  display:block;
  margin:15px auto 5px;
  border:2px solid var(--paper);
  border-radius:50%;
  background:var(--forest);
  box-shadow:0 0 0 1px var(--forest);
}
.price-band-track .p25::before{ background:var(--paper); }
.price-band-track b,
.price-band-track em{ display:block;white-space:nowrap; }
.price-band-track b{ color:var(--forest);font-size:12px; }
.price-band-track em{ color:var(--ink-2);font-size:12px;font-style:normal;font-weight:850; }
.price-band-caption{ display:flex;justify-content:space-between;gap:10px;color:var(--muted);font-size:12px; }
.liquidity-metrics{
  margin-top:16px;
  display:grid;
  grid-template-columns:1fr 1fr;
  border-top:1px solid var(--line);
}
.liquidity-metrics article{
  min-width:0;
  padding:11px 0;
  border-bottom:1px solid var(--line);
  background:transparent;
}
.liquidity-metrics article:nth-child(even){ padding-left:12px;border-left:1px solid var(--line); }
.liquidity-metrics article:nth-child(odd){ padding-right:12px; }
.liquidity-metrics span,
.liquidity-metrics b,
.liquidity-metrics small{ display:block; }
.liquidity-metrics span{ color:var(--muted);font-size:12px; }
.liquidity-metrics b{ margin-top:4px;font-size:14px; }
.liquidity-metrics small{ margin-top:3px;color:var(--muted);font-size:12px; }
.exit-comparison{
  margin-top:16px;
  padding:13px 0;
  display:grid;
  grid-template-columns:1fr 20px 1fr;
  gap:5px;
  align-items:center;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.exit-comparison>article{
  min-width:0;
  background:transparent;
}
.exit-comparison>article small,
.exit-comparison>article b,
.exit-comparison>article span{ display:block; }
.exit-comparison>article small{ color:var(--muted);font-size:12px; }
.exit-comparison>article b{ margin-top:5px;font-size:13px;line-height:1.3; }
.exit-comparison>article.is-safe b{ color:var(--forest); }
.exit-comparison>article span{ margin-top:4px;color:var(--muted);font-size:12px; }
.exit-comparison>.icon{ width:17px;height:17px;color:var(--muted); }
.report-liquidity-copy{
  margin-top:14px;
  padding:2px 0 2px 13px;
  border-left:3px solid var(--forest);
  color:var(--ink-2);
  font-size:13px;
  line-height:1.6;
}

/* 06 · 현장 위험 — hairline 행 유지 · 상태는 색 텍스트로 */
.field-task-list{ margin-top:12px; }
.field-task-list article{
  min-height:91px;
  padding:14px 0;
  display:grid;
  grid-template-columns:28px minmax(0,1fr) auto;
  gap:9px;
  align-items:start;
  border-bottom:1px solid var(--line);
}
.field-task-list article>span{ color:var(--forest);font-size:12px;font-weight:900; }
.field-task-list h3{ font-size:13px;line-height:1.35; }
.field-task-list p{ margin-top:4px;color:var(--ink-2);font-size:12px;line-height:1.45; }
.field-task-list small{ display:block;margin-top:7px;color:var(--muted);font-size:12px;line-height:1.4; }
.field-task-list strong{
  padding:0;
  background:transparent;
  color:var(--amber);
  font-size:12px;
  font-weight:850;
  white-space:nowrap;
}
.field-task-list strong.done{ color:var(--forest);background:transparent; }
.field-impact{
  margin-top:16px;
  padding:2px 0 2px 12px;
  display:block;
  border-left:3px solid var(--ink);
  color:var(--ink);
  background:transparent;
}
.field-impact>span{ display:none; }
.field-impact small{ color:var(--muted);font-size:12px;font-weight:800; }
.field-impact b{ display:block;margin-top:4px;font-size:13px;line-height:1.5; }

/* 07 · 손실 스트레스 — 다크 섹션 폐기(지면 위 비교 + 주황 판정) */
.stress-assumptions{
  margin-top:14px;
  display:flex;
  flex-wrap:wrap;
  gap:5px 14px;
}
.stress-assumptions span{ color:var(--ink-2);font-size:12px;font-weight:750; }
.stress-assumptions span::before{ content:"— ";color:var(--muted); }
.stress-compare{
  margin-top:12px;
  padding:13px 0;
  display:grid;
  grid-template-columns:1fr 18px 1fr;
  gap:8px;
  align-items:stretch;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.stress-compare>article{
  min-width:0;
  background:transparent;
}
.stress-compare article>small{ color:var(--muted);font-size:12px;font-weight:800; }
.stress-compare article>div{
  margin-top:9px;
  padding-top:8px;
  border-top:1px solid var(--line);
}
.stress-compare article span,
.stress-compare article b{ display:block; }
.stress-compare article span{ color:var(--muted);font-size:12px; }
.stress-compare article b{ margin-top:3px;font-size:13px;line-height:1.3; }
.stress-compare article>strong{ display:block;margin-top:12px;color:var(--forest);font-size:15px;font-weight:900; }
.stress-compare article.is-loss>strong{ color:var(--red); }
.stress-compare>.icon{ width:16px;height:16px;color:var(--muted);align-self:center; }
.stress-verdict{
  margin-top:14px;
  padding:2px 0 2px 12px;
  border-left:3px solid var(--amber);
  background:transparent;
}
.stress-verdict>span{ color:var(--amber);font-size:12px;font-weight:900; }
.stress-verdict p{ margin-top:5px;color:var(--ink-2);font-size:13px;line-height:1.6; }
.stress-verdict p b{ color:var(--red); }

/* 08 · 입찰 당일 — 완료 조건 행 + 3px 룰 아래 상한·입력 */
.execution-checks{ margin-top:12px; }
.execution-checks>div{
  min-height:48px;
  padding:10px 0;
  display:grid;
  grid-template-columns:24px minmax(0,1fr) auto;
  gap:9px;
  align-items:center;
  border-bottom:1px solid var(--line);
  background:transparent;
}
.execution-checks>div>span{
  width:22px;
  height:22px;
  display:grid;
  place-items:center;
  color:var(--amber);
  background:var(--amber-soft);
}
.execution-checks .icon{ width:13px;height:13px; }
.execution-checks p{ font-size:13px;font-weight:800; }
.execution-checks p small{ display:block;margin-top:2px;color:var(--muted);font-size:12px;font-weight:750; }
.execution-checks b{ color:var(--amber);font-size:12px;white-space:nowrap; }
.execution-checks>div.done>span{ color:var(--forest);background:var(--lime-soft); }
.execution-checks>div.done b{ color:var(--forest); }
.execution-checks>div.scheduled>span{ color:var(--blue);background:#e8eff3; }
.execution-checks>div.scheduled b{ color:var(--blue); }
.bid-day-card{
  margin-top:18px;
  padding-top:6px;
  display:block;
  border-top:3px solid var(--ink);
  color:var(--ink);
  background:transparent;
}
.bid-day-card>div{
  min-width:0;
  min-height:46px;
  padding:10px 0;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  border-bottom:1px solid var(--line);
  background:transparent;
}
.bid-day-card small,
.bid-day-card>div b{ display:block; }
.bid-day-card small{ color:var(--muted);font-size:12px;font-weight:800; }
.bid-day-card>div b{ margin-top:0;color:var(--forest);font-size:15px;font-weight:900;text-align:right; }
.bid-day-card label{
  display:block;
  padding:13px 0 0;
  background:transparent;
}
.bid-day-card label span{ display:block;color:var(--ink);font-size:13px;font-weight:850; }
.bid-day-card input{
  width:100%;
  min-width:0;
  height:48px;
  margin-top:8px;
  padding:0 12px;
  border:2px solid var(--ink);
  border-radius:0;
  outline:0;
  color:var(--ink);
  background:#fff;
  font-size:16px; /* T_AUDITFIX(B33): 입력은 16px 이상 — iOS 포커스 확대 차단 */
  font-weight:900;
  letter-spacing:.01em;
}
.bid-day-card input:focus{ border-color:var(--forest); }
.bid-hard-rule{
  min-height:44px;
  margin-top:14px;
  padding:10px 0;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  color:var(--ink);
  background:transparent;
}
.bid-hard-rule .icon{ display:none; }
.bid-hard-rule span{ font-size:13px;font-weight:800; }
.bid-hard-rule b{ color:var(--red);font-size:14px;font-weight:900; }
.bid-warning{
  margin-top:12px;
  padding:2px 0 2px 12px;
  display:block;
  border:0;
  border-left:3px solid var(--red);
  color:var(--ink-2);
  background:transparent;
}
.bid-warning>.icon{ display:none; }
.bid-warning p{ font-size:12px;line-height:1.6; }
.bid-warning b{ color:var(--red); }

/* 09 · 근거와 변경 이력 — 문서 행 hairline · 이력은 주황 콜아웃 */
.report-evidence-list{ margin-top:12px; }
.report-evidence-list article{
  min-height:62px;
  padding:12px 0;
  display:grid;
  grid-template-columns:24px minmax(0,1fr) auto;
  gap:10px;
  align-items:center;
  border-bottom:1px solid var(--line);
  background:transparent;
}
.evidence-doc-icon{
  width:22px;
  height:22px;
  display:grid;
  place-items:center;
  color:var(--forest);
  background:var(--lime-soft);
}
.evidence-doc-icon .icon{ width:13px;height:13px; }
.report-evidence-list h3{ font-size:13px;line-height:1.3; }
.report-evidence-list p{ margin-top:2px;color:var(--ink-2);font-size:12px; }
.report-evidence-list small{ display:block;margin-top:3px;color:var(--muted);font-size:12px;line-height:1.35; }
.report-evidence-list button{
  min-width:72px;
  min-height:34px;
  padding:0 10px;
  border:1px solid var(--forest);
  border-radius:0;
  color:#fff;
  background:var(--forest);
  font-size:12px;
  font-weight:850;
  white-space:nowrap;
}
.report-change-log{
  margin-top:16px;
  padding:2px 0 2px 12px;
  border-left:3px solid var(--amber);
  background:transparent;
}
.change-log-head{ display:flex;align-items:center;justify-content:space-between;gap:10px; }
.change-log-head span{
  display:flex;
  align-items:center;
  gap:7px;
  color:var(--amber);
  font-size:12px;
  font-weight:900;
}
.change-log-head i{
  width:7px;
  height:7px;
  border-radius:50%;
  background:var(--amber);
}
.change-log-head b{ color:var(--ink-2);font-size:12px; }
.report-change-log p{ margin-top:7px;color:var(--ink-2);font-size:12px;line-height:1.65; }
.report-change-log del{ color:var(--muted); }
.report-change-log strong{ color:var(--ink);font-weight:850; }
.report-meta-grid{
  margin-top:14px;
  display:grid;
  grid-template-columns:1fr 1fr;
  border-top:1px solid var(--line);
}
.report-meta-grid>div{ min-width:0;padding:10px 0;border-bottom:1px solid var(--line);background:transparent; }
.report-meta-grid>div:nth-child(even){ padding-left:12px;border-left:1px solid var(--line); }
.report-meta-grid>div:nth-child(odd){ padding-right:12px; }
.report-meta-grid span,
.report-meta-grid b{ display:block; }
.report-meta-grid span{ color:var(--muted);font-size:12px; }
.report-meta-grid b{ margin-top:3px;overflow:hidden;color:var(--ink-2);font-size:12px;text-overflow:ellipsis;white-space:nowrap; }
.report-footer{
  margin:28px 0 0;
  padding:20px 0 10px;
  border-top:1px solid var(--line-strong);
  text-align:left;
}
.report-footer p{ margin-top:8px;color:var(--ink-2);font-size:12px;font-weight:800; }
.report-footer small{ display:block;margin-top:7px;color:var(--muted);font-size:12px;line-height:1.55; }

/* 하단 고정 요약 — 상한 + 실행표 점프(배선 data-report-jump 유지) */
.report-sticky-space{ height:86px; }
.report-sticky-summary{
  /* T_FIXNOTRANSFORM: 위 구매 바와 같은 규칙(fixed 는 두되 transform 제거). --- T_FIXNOTRANSFORM end --- */
  position:fixed;
  z-index:40;
  left:0;
  right:0;
  bottom:0;
  margin:0 auto;
  max-width:430px;
  min-height:74px;
  padding:10px 20px calc(10px + var(--safe-bottom));
  display:grid;
  grid-template-columns:1fr 132px;
  gap:10px;
  align-items:center;
  border-top:1px solid var(--line);
  background:var(--surface);
}
.report-sticky-summary small,
.report-sticky-summary b{ display:block; }
.report-sticky-summary small{ color:var(--muted);font-size:12px; }
.report-sticky-summary b{ margin-top:3px;color:var(--forest);font-size:15px;font-weight:900; }
.report-sticky-summary button{
  min-height:48px;
  padding:0 12px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  border-radius:0;
  color:#fff;
  background:var(--forest);
  font-size:13px;
  font-weight:900;
}
.report-sticky-summary button .icon{ width:15px;height:15px; }

/* 보고서의 작은 화면 마감(≤370) — 새 지면 구조 기준 */
@media (max-width: 370px){
  .report-screen { padding-right:16px;padding-left:16px; }
  .report-screen .report-topbar { margin-right:-16px;margin-left:-16px; }
  .report-body { padding-right:16px;padding-left:16px; }
  .report-hero h1 { font-size:26px; }
  .price-line>b { font-size:24px; }
  .report-conclusion>h1 { font-size:25px; }
  .report-ceiling>b { font-size:19px; }
  .report-metric>b { font-size:16px; }
  .report-conditions>div { grid-template-columns:1fr;gap:6px; }
  .report-purchase-bar { padding-right:16px;padding-left:16px;grid-template-columns:.66fr 1.34fr; }
  .report-purchase-bar>button { padding-right:10px;padding-left:11px;font-size:13px; }
  .report-sticky-summary { padding-right:16px;padding-left:16px;grid-template-columns:1fr 116px; }
  .report-sticky-summary b { font-size:13px; }
  .stress-compare { grid-template-columns:1fr 14px 1fr; }
  .exit-comparison { grid-template-columns:1fr 16px 1fr; }
}

/* 앱 내 PDF 저장은 window.print()를 사용한다. 데이터 바인딩 코드가 전용 PDF로 교체해도 된다. */
/* --- T_REPORTBIND begin --- (2026-07-26) 입찰결정 보고서 신규 블록.
   (T_EDREPORT 2026-08-03: 박스 카드 → hairline 행으로 지면 언어에 맞춰 재정렬) */
.report-scenarios{ margin-top:12px; }
.report-scenarios article{
  padding:12px 0;border-bottom:1px solid var(--line);background:transparent;
  display:grid;grid-template-columns:1fr auto;gap:2px 10px;align-items:baseline;
}
.report-scenarios span{ grid-column:1/-1;color:var(--muted);font-size:12px;font-weight:800; }
.report-scenarios b{ grid-column:1;font-size:15px;letter-spacing:-.03em; }
.report-scenarios em{ grid-column:2;font-style:normal;font-size:13px;font-weight:900;color:var(--forest); }
.report-scenarios small{ grid-column:1/-1;margin-top:3px;color:var(--muted);font-size:12px;line-height:1.5; }
.report-scenarios article.is-loss em{ color:var(--red); }
.report-basis-line{ margin-top:9px;color:var(--muted);font-size:12px;line-height:1.6; }
.report-basis-line b{ color:var(--ink);font-weight:850; }
.report-cost-sources{ margin-top:10px; }
.report-cost-sources>div{ padding:10px 0;border-bottom:1px solid var(--line);background:transparent; }
.report-cost-sources b{ display:block;font-size:13px; }
.report-cost-sources span{ display:block;margin-top:3px;color:var(--muted);font-size:12px;line-height:1.5; }
.report-cost-sources small{ display:block;margin-top:3px;color:var(--muted);font-size:12px;line-height:1.5; }
.money-table .row-note{ display:block;margin-top:3px;color:var(--muted);font-size:12px;line-height:1.5;font-weight:500; }
.field-task-list small.impact{ display:block;margin-top:4px;color:var(--forest);font-weight:800; }
.report-evidence-list article.is-missing{ opacity:.62; }
.report-evidence-list button[disabled]{ opacity:.5;border-color:var(--line-strong);color:var(--muted);background:transparent; }
.bid-warning.is-over{ border-left-color:var(--red); }
.report-purchase-bar button.is-busy{ opacity:.6;pointer-events:none; }
/* --- T_REPORTBIND end --- */
/* --- T_EDREPORT end (보고서 구매·본문) --- */

/* ==========================================================================
   TODAY'S PICK BRIEFING · 관심지역 한 건을 먼저 판단하는 앱 전용 흐름
   ========================================================================== */
.pick-briefing{
  position:relative;
  margin-top:-1px;
  padding:20px 18px 18px;
  border:1px solid rgba(11,95,71,.10);
  border-top:0;
  border-radius:0;
  background:var(--surface);
  overflow:hidden;
}
.pick-briefing::before{
  content:"";
  position:absolute;
  top:0;
  right:18px;
  left:18px;
  height:3px;
  border-radius:0 0 99px 99px;
  background:var(--forest);
}
.pick-briefing[data-decision-tone="hold"]::before{ background:#8b6531; }
.pick-briefing[data-decision-tone="bad"]::before{ background:var(--red); }
.pick-briefing .decision-notreco{
  margin:13px 0 0;
  padding:7px 10px;
  border:1px solid rgba(173,69,61,.14);
  border-radius:0;
  color:var(--red);
  background:var(--red-soft);
  font-size:12px;
  line-height:1.45;
}
.pick-briefing>h2{ margin-top:14px;max-width:320px;font-size:24px;line-height:1.28;letter-spacing:-.055em; }
.pick-briefing-facts{ display:grid;gap:8px;margin-top:10px; }
.pick-briefing-facts article{
  min-height:68px;
  padding:12px;
  display:grid;
  grid-template-columns:36px minmax(0,1fr);
  gap:10px;
  align-items:start;
  border:1px solid var(--line);
  border-radius:0;
  background:rgba(255,255,255,.82);
}
.pick-fact-icon{ width:36px;height:36px;display:grid;place-items:center;border-radius:0; }
.pick-fact-icon.good{ color:var(--forest);background:var(--forest-soft); }
.pick-fact-icon.risk{ color:var(--amber);background:var(--amber-soft); }
.pick-fact-icon.bad{ color:var(--red);background:var(--red-soft); }
.pick-briefing-facts article.is-hold{ border-color:rgba(188,116,25,.18);background:#fffaf2; }
.pick-briefing-facts article.is-negative{ border-color:rgba(173,69,61,.16);background:#fdf8f7; }
.pick-fact-icon .icon{ width:17px;height:17px; }
.pick-briefing-facts small{ display:block;color:var(--muted);font-size:12px;font-weight:850; }
.pick-briefing-facts p{ margin-top:4px;font-size:12px;line-height:1.55;font-weight:720; }
/* T_AIGROUP: 실시간 QueryMind CTA는 단독 주행동이다. 관심/패스는 경매 이력 아래 반응 묶음으로 이동했다. */
.pick-feedback{ margin-top:13px; }
.pick-feedback .pick-feedback-action{
  width:100%;
  min-height:58px;
  margin:0;
  padding:12px 18px;
  display:flex;
  flex-direction:row;
  align-items:center;
  justify-content:center;
  gap:9px;
  border:1px solid var(--line);
  border-radius:0;
  color:var(--ink-2);
  background:#fff;
  box-shadow:none;
  text-align:center;
  font-size:14px;
  font-weight:850;
  line-height:1.25;
  transition:transform .18s,background .18s,border-color .18s;
}
.pick-feedback .pick-feedback-action:active{ transform:scale(.97); }
.pick-feedback .pick-feedback-action>.icon{ width:18px;height:18px;color:var(--forest); }
.pick-feedback .pick-feedback-action.is-primary{ border-color:var(--forest);color:#fff;background:var(--forest); }
.pick-feedback .pick-feedback-action.is-primary>.icon{ color:var(--lime); }
.pick-feedback .detail-save-control.is-saved{ border-color:rgba(11,95,71,.20);color:var(--forest);background:var(--forest-soft); }
.pick-social-signal{
  margin-top:13px;
  padding:14px;
  border:1px solid rgba(11,95,71,.11);
  border-radius:0;
  background:var(--forest-soft);
}
.interest-temperature{ display:flex;align-items:baseline;gap:7px; }
.interest-temperature>span{ color:var(--muted);font-size:12px;font-weight:850; }
.interest-temperature>b{ color:var(--forest);font-size:16px;letter-spacing:-.04em; }
.interest-temperature>em{ color:var(--forest);font-size:12px;font-style:normal;font-weight:850; }
.pick-social-summary>p{ margin-top:4px;color:var(--muted);font-size:12px;line-height:1.55; }
.pick-social-actions{ display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:13px; }
.pick-social-action,
.pick-social-action.detail-save-control{
  width:auto;
  min-height:46px;
  margin:0;
  padding:10px 12px;
  display:flex;
  grid-template-columns:none;
  align-items:center;
  justify-content:center;
  gap:8px;
  border:1px solid var(--line);
  border-radius:0;
  color:var(--ink-2);
  background:#fff;
  text-align:center;
  font-size:12px;
  font-weight:850;
  line-height:1.25;
}
.pick-social-action>.icon{ width:17px;height:17px;color:var(--forest); }
.pick-social-action.is-pass>.icon{ color:var(--muted); }
.pick-social-action.is-pass.is-passed{ border-color:rgba(79,88,83,.22);color:var(--ink-2);background:#f0f2ee; }
.pick-social-action.is-pass.is-passed>.icon{ color:var(--ink-2); }
.pick-social-action:active{ transform:scale(.98); }
.pick-social-action.detail-save-control.is-saved{ border-color:rgba(11,95,71,.20);color:var(--forest);background:var(--forest-soft); }
.pick-feedback-action.is-busy{ opacity:.58;cursor:wait; }

/* 첫 가입은 관심지역 하나만 필수로, 선택 질문은 가볍게 이어진다. */
.setup-screen{ padding-bottom:calc(24px + var(--safe-bottom));background:var(--paper); }
.setup-screen [data-setup-headline]{ white-space:pre-line; }
.setup-screen .detail-topbar{ position:sticky;top:0;z-index:12;margin:0 -20px;padding:0 15px;border-bottom:1px solid rgba(24,43,36,.06);background:var(--paper); }
.setup-card{ margin-top:10px;padding:17px;border:1px solid var(--line);border-radius:0;background:rgba(255,255,252,.82); }
.setup-card-required{ border-color:rgba(11,95,71,.17); }
.setup-card-optional{ padding-top:15px;padding-bottom:15px; }
.setup-card .form-section{ margin-top:0; }
.setup-question-head{ display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:9px;align-items:start;margin-bottom:14px; }
.setup-question-head>span{ min-width:34px;padding:4px 7px;border-radius:999px;color:#fff;background:var(--forest);text-align:center;font-size:12px;font-weight:900; }
.setup-card-optional .setup-question-head>span{ color:var(--muted);background:var(--surface-2); }
.setup-question-head h2{ margin:0;font-size:14px;line-height:1.35; }
.setup-question-head p{ margin-top:3px;color:var(--muted);font-size:12px;line-height:1.45; }
/* T_SETUPHEAD(2026-08-09 대표님 스크린샷): 구독 회원용 긴 안내("원하는 만큼 고를 수 있어요 ·
   고른 순서대로 우선 반영")가 auto 열을 통짜로 차지해 가운데 열(h2+부제)을 압살 — 부제가
   "가장/먼저/받아볼…" 한 글자씩 세로 낙수. em 에 폭 상한을 줘 스스로 줄바꿈하게 한다.
   ★퍼센트 상한(46%)은 실패했다 — % max-width 는 그리드 트랙 사이징(순환 참조)에서 무시돼
   트랙이 max-content(237px)로 잡혔다(운영 실측 gtc "35px 0px 237px"). 고정 px 만 트랙에 반영된다. */
.setup-question-head>em{ padding-top:3px;max-width:150px;color:var(--forest);font-size:12px;font-style:normal;font-weight:850;text-align:right; }
/* T_SETUPHEAD 2차: 150px 상한으로도 폰에서 가운데 열이 88px(부제 3줄)로 눌렸다(운영 실측).
   폰 전폭(430px 이하)에서는 안내(em)를 제목 아래 전체 폭 한 줄로 떨군다 — 부제가 제 폭을 갖는다.
   (기존 370px 쿼리의 같은 패턴을 폰 전체로 확장·이동한 것) */
@media (max-width:430px){
  .setup-question-head{ grid-template-columns:auto minmax(0,1fr); }
  .setup-question-head>em{ grid-column:2;max-width:none;text-align:left;padding-top:0; }
}
.setup-card .choice{ min-height:43px;border-radius:0;background:#fff; }
.setup-card-optional .choice-grid{ grid-template-columns:repeat(2,1fr); }
.setup-card-required.is-invalid{ border-color:rgba(173,69,61,.44);box-shadow:0 0 0 3px rgba(173,69,61,.08); }
.setup-inline-error{ margin:-4px 0 12px;padding:9px 11px;border-radius:0;color:var(--red);background:var(--red-soft);font-size:12px;font-weight:750;line-height:1.45; }
.setup-screen .personal-preview{ margin-top:13px;border:1px solid rgba(11,95,71,.09);background:var(--lime-soft); }
.setup-screen>.intro-start{ bottom:calc(8px + var(--safe-bottom));min-height:57px;margin-top:13px;border:5px solid var(--paper);border-radius:0; }
.setup-screen>.intro-start.is-busy{ opacity:.68;cursor:wait; }

/* 검증된 현재 픽 데이터만 사용하는 질문형 AI와 패스 이유 시트. */
/* T_EDREPORT: 구 .pass-pick-summary(잉크 박스)는 패스 시트 재작성으로 소멸 — 대체 = .sheet-answer(공용). */

@media (max-width:370px){
  .pick-briefing { padding-right:15px;padding-left:15px; }
  .pick-briefing>h2 { font-size:22px; }
  .pick-briefing-price>b { font-size:22px; }
  .pick-feedback .pick-feedback-action.is-primary { min-height:54px; }
  .setup-screen .detail-topbar { margin-right:-16px;margin-left:-16px; }
  .setup-card { padding:15px; }
  /* T_SETUPHEAD: setup 헤드의 폰 대응은 아래 430px 블록으로 이동(370px 만으론 375~430 폰이 3열에 눌렸다) */
}

/* ===========================================================================
   T_DETAILFLAT · 상세는 카드 모음이 아니라 한 번에 읽는 투자 판단 문서
   ========================================================================== */
.detail-analysis-flow{ margin-top:24px; }
/* T_DETAILSPEC: 시안 .detail-verdict 와 같은 섹션 구분 — 굵은 검정 상단선 + 상자 없음.
   (시안: margin-top:18px · padding:15px 0 · border-top:3px solid var(--ink)) */
.detail-analysis-flow>section{ margin-top:18px;padding:15px 0 0;border:0;border-top:3px solid var(--ink);background:transparent; }
.detail-analysis-flow>.detail-source-section{ padding:15px 0 0;border:0;border-top:3px solid var(--ink); }
/* 시안 글자 기준: 결론 h2 23px(SCREEN_INVENTORY '화면 제목 22-24px') */
.detail-analysis-flow .flow-heading h2{ margin-top:7px;font-size:23px;line-height:1.28;letter-spacing:-.045em; }

.detail-source-section{ padding:26px 2px 4px; }
.detail-source-section .detail-document-list{
  margin-top:15px;
  border:0;
  border-top:1px solid var(--line);
  border-radius:0;
  background:transparent;
  overflow:visible;
}
.detail-source-section .document-row{ padding:13px 0; }
.detail-source-section .document-icon{ width:26px;height:34px;border-radius:0;background:transparent; }
.detail-source-section .document-row button,
.detail-source-section .doc-state,
.detail-source-section .doc-link{ border-radius:0; }
/* --- T_DETAILONE begin --- 상세 후반부(근거 원문·보고서)를 상단과 같은 언어로 —
   번호 칩(01~04) 폐기, 상단과 동일한 eyebrow(작은 표제)+큰 제목+hairline 행만 쓴다. */
.flow-heading small{ display:block;color:var(--forest);font-size:12px;font-weight:900;letter-spacing:.14em; }
.flow-heading h2{ margin-top:6px;font-size:19px;line-height:1.3;letter-spacing:-.045em; }
.flow-heading p{ margin-top:6px;color:var(--muted);font-size:12px;line-height:1.55; }
.flow-heading p b{ color:var(--forest);font-weight:850; }
.detail-source-section{ border-top:1px solid var(--line); }
/* --- T_DETAILONE end --- */

/* 첫 판단 블록도 큰 카드 안에 작은 카드를 반복하지 않는다. */
.detail-page .pick-briefing-facts{ gap:0;margin-top:12px; }
.detail-page .pick-briefing-facts article{
  min-height:0;
  padding:14px 0;
  grid-template-columns:27px minmax(0,1fr);
  gap:9px;
  border:0;
  border-bottom:1px solid var(--line);
  border-radius:0;
  background:transparent;
}
.detail-page .pick-briefing-facts article:first-child{ border-top:1px solid var(--line); }
.detail-page .pick-briefing-facts article.is-hold,
.detail-page .pick-briefing-facts article.is-negative{ background:transparent; }
.detail-page .pick-fact-icon{ width:27px;height:27px;border-radius:0;background:transparent; }
.detail-page .pick-fact-link{ margin-top:7px;color:var(--amber);font-size:12px;font-weight:850;text-decoration:underline;text-underline-offset:3px; }
.detail-page .pick-feedback .pick-feedback-action{ border-radius:0; }
.detail-page .pick-social-signal{
  padding:14px 0;
  border:0;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  border-radius:0;
  background:transparent;
}

@media print {
  @page { size:A4;margin:12mm; }
  html,
  body,
  .prototype-stage,
  .device,
  .app-viewport,
  .app-screen{
    width:auto!important;
    height:auto!important;
    min-height:0!important;
    overflow:visible!important;
    position:static!important;
    background:#fff!important;
  }
  .prototype-stage{ display:block!important;padding:0!important; }
  .prototype-stage::before,
  .bottom-nav,
  .report-topbar,
  .report-version-strip,
  .report-section-nav,
  .report-sticky-summary,
  .report-sticky-space,
  .toast,
  .overlay,
  .sheet{ display:none!important; }
  .report-screen{
    width:100%!important;
    max-width:none!important;
    padding:0!important;
    color:#17201d!important;
    background:#fff!important;
  }
  .report-section{
    margin:0 0 8mm!important;
    padding:7mm!important;
    overflow:visible!important;
    break-inside:avoid;
    border:1px solid #d8ddd9!important;
    border-radius:6mm!important;
    box-shadow:none!important;
  }
  .report-table-wrap{ overflow:visible!important; }
  .report-table{ min-width:0!important;font-size:7pt!important; }
  .stress-section,
  .report-cash-total,
  .field-impact,
  .bid-day-card{
    -webkit-print-color-adjust:exact;
    print-color-adjust:exact;
  }
  .report-footer{ break-inside:avoid; }
}

/* --- T_DETAILAI begin (2026-08-03) ---------------------------------------
   물건 상세 + JUPGO AI 영역 재구성 CSS.
   시안: design/app-detail-ai-ux-research-20260803 (구조·문구) — 글자 크기는
   12px 하한으로 승격(시안 7~11px 금지), border-radius 없음(각진 지면).
   styles.css 맨 뒤에 이어 붙이는 부속 파일이다(토큰은 기존 :root 재사용).
   --------------------------------------------------------------------------- */

/* 1) 물건 컨텍스트 스트립 (시안 .property-context) */
.property-context{ min-height:61px; margin:0 0 10px; padding:12px 0; display:flex; align-items:center; justify-content:space-between; gap:12px; border:0; border-bottom:1px solid var(--line); background:transparent; }   /* T_DETAILSPEC: 시안에 상자 없음 */
.property-context-id{ min-width:0; }
.property-context-id small{ display:block; color:var(--muted); font-size:12px; font-weight:800; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.property-context-id b{ display:block; margin-top:3px; font-size:14px; letter-spacing:-.03em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.property-context-side{ flex:none; display:grid; justify-items:end; gap:4px; }
.property-context-badge{ display:inline-block; padding:5px 8px; color:var(--forest); background:#e4eddf; font-size:12px; font-weight:900; white-space:nowrap; }
.property-context-side em{ color:var(--muted); font-size:12px; font-style:normal; font-weight:750; }

/* 2) AI eyebrow (연두 사각 ✦ = JUPGO AI 전용 시그니처 — 이 영역에서 lime 은 AI 표식에만) */
.ai-eyebrow{ display:flex; align-items:center; gap:7px; color:var(--forest); font-size:12px; font-weight:900; letter-spacing:.05em; }
.ai-eyebrow i{ width:20px; height:20px; flex:none; display:grid; place-items:center; color:var(--forest-deep); background:var(--lime); font-size:12px; font-style:normal; }
.ai-eyebrow em{ margin-left:auto; color:var(--muted); font-size:12px; font-style:normal; font-weight:750; letter-spacing:0; }
.pick-briefing[data-decision-tone="hold"] .ai-eyebrow{ color:#7a531e; }
.pick-briefing[data-decision-tone="bad"] .ai-eyebrow{ color:var(--red); }

/* 3) 판단 결론 (시안 .verdict — 하단 3px ink 보더로 단락 마감) */
.verdict{ margin-top:10px; padding-bottom:15px; border-bottom:3px solid var(--ink); }
.verdict h2{ margin:0; font-size:23px; line-height:1.27; letter-spacing:-.05em; }
.verdict h2 b{ color:var(--forest); }
.verdict p{ margin:8px 0 0; color:var(--muted); font-size:13px; line-height:1.55; }

/* 4) 가격 판단 6행 (잠금 값은 ▣ + 잉크색 — 서버 마스킹 상태 그대로 반영) */
/* --- T_COSTSTORY begin --- 진짜 가격 영수증(대표님 발주 2026-08-16).
   ★박스를 만들지 않는다 · 새 행 구조를 만들지 않는다(대표님 "기존 디자인으로 가자" · "박스로 하지마").
     영수증은 기존 `.key-numbers` / `.key-row` 를 **그대로** 쓴다 —
       is-stop(값 적색) = 떠안는 보증금 · is-cash(위 2px 선) = 합계선 · is-reference(흐림) = 참고 수치.
     그래서 여기 남는 것은 기존 형식에 없던 **차액 색 두 줄**뿐이다. */
.key-row.is-gap > strong{ color:var(--red); }
.key-row.is-gap.is-gain > strong{ color:var(--forest); }
/* 참고 수치는 접어 둔다 — 판단은 위 영수증에서 끝난다. */
.key-reference{ margin-top:6px; }
.key-reference > summary{ padding:9px 0; color:var(--muted); font-size:12px; font-weight:800; cursor:pointer; list-style:none; }
.key-reference > summary::-webkit-details-marker{ display:none; }
/* ★PC 와 같은 규칙 — 접기 줄에 박스를 남기지 않는다(전역 summary:focus-visible 이 3px 테두리를
   그려 한 번 누르면 상자처럼 보인다). 접근성은 밑줄로 대신한다. */
.key-reference > summary:focus,
.key-reference > summary:focus-visible{ outline:none; text-decoration:underline; }
.key-reference > summary::after{ content:" ▾"; }
.key-reference[open] > summary::after{ content:" ▴"; }
/* --- T_COSTSTORY end --- */
.key-numbers{ margin-top:4px; }
.key-numbers-guide{ padding:10px 0 7px; border-bottom:1px solid var(--line); }
.key-numbers-guide b{ display:block; color:var(--forest); font-size:11px; font-weight:900; letter-spacing:.04em; }
.key-numbers-guide span{ display:block; margin-top:3px; color:var(--muted); font-size:11px; line-height:1.4; }
.key-row{ min-height:54px; padding:10px 0; display:grid; grid-template-columns:minmax(0,1fr) auto; gap:12px; align-items:center; border-bottom:1px solid var(--line); }
.key-row > div{ min-width:0; }
.key-row div b{ display:block; font-size:13px; }
.key-row div span{ display:block; margin-top:3px; color:var(--muted); font-size:12px; line-height:1.4; }
/* T_ONEBLOCK: 근거가 없는 행(감정가·실거래 건수 미상)은 빈 줄을 만들지 않는다 —
   같은 행 형식을 쓰되 값이 없을 때 자리만 벌어지면 '뭔가 빠졌다'로 읽힌다. */
.key-row div span:empty{ display:none; }
.key-row > strong{ color:var(--forest); font-size:17px; letter-spacing:-.04em; white-space:nowrap; }
.key-row.is-reference > strong{ color:var(--ink-2); }
.key-row.is-target{ margin:0 -8px; padding-right:8px; padding-left:8px; background:var(--forest-soft); }
.key-row.is-stop > strong{ color:var(--red); }
.key-row.is-cash{ margin-top:5px; border-top:2px solid var(--ink); }
.key-numbers-formula{ margin-top:11px; padding:9px 10px; color:var(--ink-2); background:var(--surface-2); font-size:11px; line-height:1.5; }
.key-row > strong.locked{ color:var(--ink); font-size:13px; }
.key-row > strong.locked::before{ content:"▣ "; color:var(--forest); }

/* 5) 잠금 해제 CTA (data-locked-only — 구독·체험에게는 applyTier 가 숨긴다) */
.unlock-one{ width:100%; min-height:48px; margin-top:12px; padding:0 14px; display:flex; align-items:center; justify-content:center; gap:7px; color:#fff; background:var(--forest); font-size:13px; font-weight:900; box-shadow:0 10px 22px rgba(11,95,71,.20); }
.unlock-one span{ color:var(--lime); font-size:14px; }
.unlock-one:active{ transform:scale(.98); }

/* 6) JUPGO AI 계산 기준 (값이 아니라 이름 공개 — 잠금과 무관하게 항상 노출) */
.basis-lines{ margin-top:16px; padding-top:12px; border-top:1px solid var(--line); }
.basis-lines > small{ color:var(--muted); font-size:12px; font-weight:900; letter-spacing:.06em; }
.basis-line{ min-height:43px; display:grid; grid-template-columns:72px minmax(0,1fr); gap:10px; align-items:center; border-bottom:1px solid var(--line); }
.basis-line b{ font-size:12px; }
.basis-line span{ color:var(--ink-2); font-size:12px; line-height:1.45; }
.loan-note{ margin:10px 0 0; padding:2px 0 2px 10px; border-left:2px solid var(--amber); color:#725b42; font-size:12px; line-height:1.5; }

/* 7) 근거 원문 진입 행 */
.source-line{ width:100%; min-height:47px; margin-top:12px; padding:9px 0; display:grid; grid-template-columns:24px minmax(0,1fr) 14px; gap:8px; align-items:center; border-top:1px solid var(--line); border-bottom:1px solid var(--line); color:var(--ink); background:transparent; text-align:left; }
.source-line > span{ color:var(--forest); font-size:15px; }
.source-line b{ display:block; font-size:13px; }
.source-line small{ display:block; margin-top:3px; color:var(--muted); font-size:12px; }
.source-line i{ color:var(--forest); font-size:17px; font-style:normal; }

/* T_EVIDENCEHERO: 상세 판단 다음에 실제 원문을 가장 먼저 검증하게 하는 핵심 진입면. */
.source-line.evidence-source-hero{
  min-height:108px;
  margin:18px 0 20px;
  padding:16px;
  grid-template-columns:44px minmax(0,1fr) auto;
  gap:12px;
  border:1px solid var(--forest-deep);
  color:#fff;
  background:var(--forest-deep);
  box-shadow:0 10px 24px rgba(11,56,43,.16);
}
.source-line.evidence-source-hero>.evidence-source-icon{
  width:44px;
  height:44px;
  display:grid;
  place-items:center;
  color:var(--forest-deep);
  background:var(--lime);
}
.source-line.evidence-source-hero>.evidence-source-icon .icon{ width:21px;height:21px; }
.source-line.evidence-source-hero .evidence-source-kicker{
  margin:0 0 5px;
  color:var(--lime);
  font-size:10px;
  font-weight:900;
  letter-spacing:.08em;
}
.source-line.evidence-source-hero b{
  color:#fff;
  font-size:19px;
  line-height:1.25;
  letter-spacing:-.04em;
}
.source-line.evidence-source-hero .evidence-source-copy{
  display:block;
  margin-top:5px;
  color:rgba(255,255,255,.76);
  font-size:11px;
  line-height:1.45;
}
.source-line.evidence-source-hero .evidence-source-action{
  min-height:34px;
  padding:0 9px;
  display:flex;
  align-items:center;
  gap:5px;
  border:1px solid rgba(255,255,255,.34);
  color:#fff;
  font-size:11px;
  font-weight:900;
  white-space:nowrap;
}
.source-line.evidence-source-hero .evidence-source-action i{ color:var(--lime); }
.source-line.evidence-source-hero:active{ transform:scale(.985); }

/* T_COLOTVIEW: 같은 번지에 함께 나온 물건 — 근거 원문 행(.source-line)과 같은 언어를 그대로 쓴다.
   행마다 border-top/bottom 이 겹쳐 두 줄로 보이지 않게 이어붙은 목록에서만 위 선을 지운다. */
.colot-list .colot-row + .colot-row{ margin-top:0; border-top:0; }
.colot-row.is-static{ cursor:default; }
.colot-note{ margin-top:10px; color:var(--muted); font-size:12px; line-height:1.55; }
.colot-note[hidden]{ display:none; }

/* --- T_FOLDSECT begin --- 이웃 물건 섹션은 접어 두고 제목과 건수만 보여 준다(대표님 지시).
   heading 에 role=button 을 얹었을 뿐이라 마크업 구조는 그대로다 — 손잡이는 여기서 만든다.
   본문에 margin-top 을 주지 않는다: 첫 행(.source-line)이 이미 12px 을 갖고 있어 이중이 된다. */
.chapter-fold{ position:relative; padding-right:26px; cursor:pointer;
  -webkit-tap-highlight-color:transparent; }
.chapter-fold::after{ content:"›"; position:absolute; right:2px; top:50%; color:var(--muted);
  font-size:20px; line-height:1; transform:translateY(-50%) rotate(90deg);
  transition:transform .18s ease; }
.chapter-fold[aria-expanded="true"]::after{ transform:translateY(-50%) rotate(-90deg); }
/* 접힌 상태에서는 설명 문장도 감춘다 — "닫아 준다"는 제목과 건수만 남긴다는 뜻이다. */
.chapter-fold[aria-expanded="false"] p{ display:none; }
.chapter-fold:focus-visible{ outline:2px solid var(--forest); outline-offset:4px; border-radius:8px; }
.fold-count{ font-style:normal; color:var(--forest); font-weight:900; }
.chapter-fold-body[hidden]{ display:none; }
/* --- T_FOLDSECT end --- */

/* T_BADGEDUP: 목록 대부분이 같은 판정일 때 행마다 반복하지 않고 여기서 한 번만 말한다(B19). */
/* T_HOMEPOLISH: 배지 요약줄("이 목록은 대부분 …")이 탭 밑선에 붙어 보였다 — 상단 여백 분리 */
.list-badge-note{ margin:14px 0 10px; color:var(--muted); font-size:12px; font-weight:800; line-height:1.5; }

/* 8) 많이 묻는 질문 칩 — T_EDREPORT: 가로 스크롤 스트립 폐기 → 줄바꿈 배치.
   390px 에서 칩 2개가 화면 밖으로 나가던 넘침(감사 X축 4건)의 근원. 스크롤 힌트도 없어서
   잘린 칩은 사실상 죽은 기능이었다 — 전부 화면 안에 보이게 한다. */
.prompt-area{ margin-top:14px; }
.prompt-area > small{ color:var(--forest); font-size:12px; font-weight:900; }
.prompt-list{ margin-top:8px; display:flex; flex-wrap:wrap; gap:6px; }
.prompt-list button{ flex:none; max-width:100%; min-height:38px; padding:0 12px; border:1px solid rgba(7,95,72,.18); color:var(--forest); background:#f9fcf9; font-size:12px; font-weight:850; white-space:nowrap; }
.prompt-list button:active{ transform:scale(.97); }

/* 9) T_AIFLOAT — 구 QueryMind 패널 호환 스타일. 전역 플로팅 런처는 영구 숨김. */
.jupgo-ai-launcher{ display:none!important; } /* 캐시된 구 마크업이 남아도 플로팅 버튼은 다시 노출하지 않는다. */
.device[data-ai-launcher-active="true"] .screen.no-tabs{ padding-bottom:calc(104px + var(--safe-bottom)); }
.jupgo-ai-launcher{
  position:absolute;
  z-index:46;
  right:12px;
  bottom:calc(91px + var(--safe-bottom));
  width:58px;
  height:58px;
  padding:6px;
  display:flex;
  align-items:center;
  justify-content:center;
  border:1px solid rgba(7,61,48,.13);
  border-radius:20px;
  color:var(--forest-deep);
  background:rgba(253,254,249,.92);
  box-shadow:0 12px 30px rgba(7,45,34,.20),inset 0 1px rgba(255,255,255,.96);
  backdrop-filter:blur(22px) saturate(1.14);
  -webkit-backdrop-filter:blur(22px) saturate(1.14);
  touch-action:none;
  user-select:none;
  -webkit-user-select:none;
  cursor:grab;
  will-change:bottom,transform;
  transition:bottom .56s cubic-bezier(.18,1.26,.32,1),transform .28s var(--ease),box-shadow .28s ease,opacity .2s ease;
}
.jupgo-ai-launcher:hover{ transform:translateY(-4px);box-shadow:0 18px 40px rgba(7,45,34,.25),inset 0 1px rgba(255,255,255,.96); }
.jupgo-ai-launcher:active{ transform:scale(.94); }
.jupgo-ai-launcher::after{
  content:"";
  position:absolute;
  inset:-5px;
  z-index:-1;
  border:1px solid rgba(207,232,97,.28);
  border-radius:24px;
  pointer-events:none;
  animation:jupgoAiGlow 4.2s ease-in-out infinite;
}
.jupgo-ai-mark{
  position:relative;
  width:46px;
  height:46px;
  display:grid;
  place-items:center;
  overflow:hidden;
  border-radius:15px;
  color:#fff;
  background:radial-gradient(circle at 30% 20%,rgba(255,255,255,.16),transparent 30%),linear-gradient(145deg,#14775b 0%,#084b39 58%,#052f25 100%);
  box-shadow:0 8px 20px rgba(7,61,48,.29),inset 0 1px rgba(255,255,255,.14);
}
.jupgo-ai-mark::before{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(118deg,transparent 25%,rgba(255,255,255,.14) 48%,transparent 70%);
  transform:translateX(-110%);
  animation:jupgoAiSheen 5.4s ease-in-out infinite;
}
.jupgo-ai-mark b{ position:relative;z-index:1;font-size:19px;line-height:1;letter-spacing:-.07em;transform:translateX(-1px); }
.jupgo-ai-mark i{ position:absolute;z-index:2;right:7px;top:7px;width:6px;height:6px;border-radius:50%;background:var(--lime);box-shadow:0 0 0 4px rgba(207,232,97,.12); }
.jupgo-ai-mark.small{ width:42px;height:42px;border-radius:14px;box-shadow:0 7px 17px rgba(7,61,48,.20); }
.jupgo-ai-mark.small b{ font-size:17px; }
.jupgo-ai-launcher-label{
  position:absolute;
  right:64px;
  width:max-content;
  padding:8px 10px;
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  border:1px solid rgba(7,61,48,.10);
  border-radius:11px;
  color:var(--ink);
  background:rgba(255,255,252,.97);
  box-shadow:0 10px 26px rgba(7,45,34,.15);
  opacity:0;
  pointer-events:none;
  transform:translateX(6px);
  transition:opacity .2s ease,transform .22s var(--ease);
}
.jupgo-ai-launcher:hover .jupgo-ai-launcher-label,
.jupgo-ai-launcher:focus-visible .jupgo-ai-launcher-label{ opacity:1;transform:none; }
.jupgo-ai-launcher-label strong{ font-size:12px;font-weight:900;letter-spacing:.04em; }
.jupgo-ai-launcher-label small{ margin-top:2px;color:var(--muted);font-size:12px;font-weight:750; }
.device.ai-open .jupgo-ai-launcher{ opacity:0;pointer-events:none;transform:translateY(8px) scale(.9); }
.jupgo-ai-launcher.is-dragging{
  cursor:grabbing;
  transform:scale(1.07);
  box-shadow:0 24px 52px rgba(7,45,34,.29),inset 0 1px rgba(255,255,255,.98);
  transition:box-shadow .18s ease,transform .18s ease,opacity .2s ease;
}
.jupgo-ai-launcher.is-dragging .jupgo-ai-launcher-label{ opacity:1;transform:none; }
.jupgo-ai-launcher.is-settling{ animation:jupgoAiDockBounce .6s cubic-bezier(.2,.9,.24,1) both; }
@keyframes jupgoAiGlow{ 0%,100%{ opacity:.28;transform:scale(.96); }50%{ opacity:.72;transform:scale(1.025); } }
@keyframes jupgoAiSheen{ 0%,72%{ transform:translateX(-120%); }88%,100%{ transform:translateX(120%); } }
@keyframes jupgoAiDockBounce{ 0%{ transform:scale(.95); }58%{ transform:scale(1.075) rotate(-1.2deg); }78%{ transform:scale(.985) rotate(.5deg); }100%{ transform:none; } }

.jupgo-ai-backdrop{
  position:absolute;
  z-index:58;
  inset:0;
  background:linear-gradient(to bottom,rgba(7,28,22,.08),rgba(7,28,22,.56));
  backdrop-filter:blur(5px);
  -webkit-backdrop-filter:blur(5px);
  animation:jupgoAiFade .24s ease both;
}
.jupgo-ai-panel{
  position:absolute;
  z-index:59;
  left:0;
  right:0;
  bottom:0;
  height:min(690px,78%);
  min-height:470px;
  padding:8px 0 calc(12px + var(--safe-bottom));
  display:grid;
  grid-template-rows:auto auto auto minmax(0,1fr) auto auto auto;
  overflow:hidden;
  border:1px solid rgba(9,70,52,.10);
  border-bottom:0;
  border-radius:29px 29px 0 0;
  color:var(--ink);
  background:radial-gradient(circle at 92% -8%,rgba(223,242,118,.18),transparent 28%),linear-gradient(180deg,#fffefa 0%,#fbfcf8 100%);
  box-shadow:0 -32px 82px rgba(7,32,25,.28);
  animation:jupgoAiRise .46s var(--ease) both;
}
.jupgo-ai-handle{ width:34px;height:4px;margin:1px auto 7px;border-radius:999px;background:#d4dad6; }
.jupgo-ai-head{
  min-height:68px;
  padding:0 19px 11px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  border-bottom:1px solid rgba(23,32,29,.07);
}
.jupgo-ai-identity{ min-width:0;display:flex;align-items:center;gap:12px; }
.jupgo-ai-identity>div{ min-width:0; }
.jupgo-ai-identity strong,.jupgo-ai-identity span{ display:block; }
.jupgo-ai-identity strong{ margin-top:1px;font-size:16px;font-weight:900;letter-spacing:-.045em; }
.jupgo-ai-title-row{ display:flex;align-items:center;gap:7px; }
.jupgo-ai-identity .jupgo-ai-eyebrow{ color:var(--forest);font-size:10px;font-weight:900;letter-spacing:.15em; }
.jupgo-ai-identity .jupgo-ai-status{ margin-top:3px;display:flex;align-items:center;gap:5px;color:var(--ink-2);font-size:12px;font-weight:750; }
.jupgo-ai-status i{ width:5px;height:5px;border-radius:50%;background:var(--lime);box-shadow:0 0 0 3px rgba(207,232,97,.16); }
.jupgo-ai-close{
  width:38px;
  height:38px;
  flex:none;
  display:grid;
  place-items:center;
  border-radius:12px;
  color:var(--ink-2);
  background:rgba(235,238,233,.78);
  transition:background .18s ease,transform .18s ease;
}
.jupgo-ai-close:hover{ background:#e5eae5; }
.jupgo-ai-close:active{ transform:scale(.94); }
.jupgo-ai-close .icon{ width:17px;height:17px; }
.jupgo-ai-context{
  width:max-content;
  max-width:calc(100% - 38px);
  margin:10px 19px 0;
  padding:7px 10px;
  overflow:hidden;
  border:1px solid rgba(11,95,71,.12);
  border-radius:999px;
  color:var(--forest);
  background:rgba(220,236,229,.58);
  font-size:12px;
  font-weight:850;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.jupgo-ai-messages{
  min-height:0;
  padding:18px 19px 12px;
  display:flex;
  flex-direction:column;
  gap:19px;
  overflow-y:auto;
  overscroll-behavior:contain;
  scrollbar-width:none;
  scroll-behavior:smooth;
}
.jupgo-ai-messages::-webkit-scrollbar{ display:none; }
.jupgo-ai-turn{ width:100%;display:grid;animation:jupgoAiTurnIn .38s var(--ease) both; }
.jupgo-ai-turn.assistant{ grid-template-columns:28px minmax(0,1fr);align-items:start;gap:10px; }
.jupgo-ai-turn.user{ justify-items:end; }
.jupgo-ai-turn-mark{
  width:28px;
  height:28px;
  display:grid;
  place-items:center;
  border-radius:9px;
  color:#fff;
  background:linear-gradient(145deg,#14775b,#073d30);
  font-size:12px;
  font-weight:950;
  box-shadow:0 5px 12px rgba(7,61,48,.18);
}
.jupgo-ai-turn-body{ min-width:0; }
.jupgo-ai-turn.assistant .jupgo-ai-turn-body{ padding-top:1px; }
.jupgo-ai-turn.user .jupgo-ai-turn-body{
  max-width:86%;
  padding:10px 13px;
  border:1px solid rgba(11,95,71,.09);
  border-radius:17px 17px 5px 17px;
  color:#19322a;
  background:#edf4f0;
}
.jupgo-ai-turn-name{ display:block;margin-bottom:5px;color:var(--forest);font-size:12px;font-weight:900;letter-spacing:.02em; }
.jupgo-ai-turn p{ color:var(--ink);font-size:13px;line-height:1.65;letter-spacing:-.025em;white-space:pre-line; }
.jupgo-ai-turn.user p{ font-size:14px;line-height:1.55; }
.jupgo-ai-message-meta{
  width:max-content;
  max-width:100%;
  margin-top:9px;
  padding:5px 8px;
  display:flex;
  align-items:center;
  gap:5px;
  border:1px solid rgba(23,32,29,.08);
  border-radius:999px;
  color:var(--muted);
  background:rgba(244,246,242,.88);
  font-size:12px;
  font-weight:750;
}
.jupgo-ai-message-meta::before{ content:"";width:5px;height:5px;flex:none;border-radius:50%;background:var(--forest);opacity:.72; }
.jupgo-ai-message-action{
  width:min(100%,270px);
  min-height:44px;
  margin-top:12px;
  padding:0 13px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  border:1px solid rgba(11,95,71,.17);
  border-radius:13px;
  color:var(--forest-deep);
  background:linear-gradient(180deg,#fff,#f4f8f5);
  font-size:12px;
  font-weight:900;
  text-align:left;
  box-shadow:0 7px 18px rgba(11,95,71,.08);
}
.jupgo-ai-message-action .icon{ width:13px;height:13px; }
.jupgo-ai-items{ margin-top:11px;display:grid;gap:8px; }
.jupgo-ai-item{
  width:100%;padding:11px 12px;display:grid;gap:6px;
  border:1px solid rgba(11,95,71,.15);border-radius:14px;
  background:linear-gradient(180deg,#fff,#f5f8f6);text-align:left;
  box-shadow:0 7px 18px rgba(11,95,71,.07);
  transition:transform .18s var(--ease),box-shadow .18s ease,border-color .18s ease;
}
.jupgo-ai-item:hover{ border-color:rgba(11,95,71,.29);box-shadow:0 10px 23px rgba(11,95,71,.12);transform:translateY(-1px); }
.jupgo-ai-item:active{ transform:scale(.99); }
.jupgo-ai-item.is-flat{ background:#fbfcfb;box-shadow:none;cursor:default; }
.jupgo-ai-item-top{ display:flex;align-items:flex-start;justify-content:space-between;gap:8px; }
.jupgo-ai-item-title{ min-width:0;color:var(--forest-deep);font-size:14px;font-weight:900;line-height:1.45;letter-spacing:-.03em; }
.jupgo-ai-item .icon{ width:13px;height:13px;flex:none;margin-top:2px;opacity:.5; }
.jupgo-ai-item-sub{ color:var(--muted);font-size:12px;font-weight:750;letter-spacing:-.01em; }
.jupgo-ai-item-figs{ display:flex;flex-wrap:wrap;gap:5px; }
.jupgo-ai-item-figs span{ padding:4px 7px;display:inline-flex;align-items:baseline;gap:4px;border:1px solid rgba(23,32,29,.07);border-radius:8px;background:rgba(244,246,242,.9);font-size:12px;font-weight:800; }
.jupgo-ai-item-figs em{ color:var(--muted);font-style:normal;font-weight:750; }
.jupgo-ai-item-figs b{ color:var(--ink);font-variant-numeric:tabular-nums; }
.jupgo-ai-item-hint{ margin-top:7px;color:var(--muted);font-size:12px;font-weight:750;line-height:1.5; }
.jupgo-ai-result{ margin-top:11px;max-width:100%;max-height:280px;overflow:auto;border:1px solid rgba(23,32,29,.09);border-radius:12px;background:#fff;-webkit-overflow-scrolling:touch; }
.jupgo-ai-result::-webkit-scrollbar{ width:4px;height:4px; }
.jupgo-ai-result::-webkit-scrollbar-thumb{ border-radius:999px;background:rgba(23,32,29,.18); }
/* --- T_AITABLEFIT --- AI 답변 표가 잘려 값이 안 보이던 것을 고친다(대표님 지적).
   ★처음에 셀 상한(150->260px)만 넓혔더니 **잘린 셀이 그대로 10/130 이었다**(실측). 폭을 넓히는
     것으로는 못 고친다 — 소재지 같은 값은 260px 로도 모자란다. ⇒ `ellipsis` 자체를 걷어내고
     **줄바꿈**으로 바꾼다. 값을 잘라 숨기지 않는 것이 이 표의 존재 이유다.
   ★가로로 더 늘리지 않고 세로로 접는 이유: 375px 창에서 1,200px 표를 옆으로 훑는 것은
     읽는 게 아니라 찾는 것이 된다. 줄바꿈은 표 폭도 함께 줄여 준다.
   ★숫자 칸(.num)만 nowrap 을 유지한다 — 금액이 두 줄로 쪼개지면 자릿수를 못 읽는다.
   ★`max-content`+`min-width:100%`: 열이 많으면 제 폭을 갖고(가로 스크롤), 적으면 칸을 채운다. */
.jupgo-ai-result table{ width:max-content;min-width:100%;border-collapse:collapse;font-size:12px; }
.jupgo-ai-result th,.jupgo-ai-result td{ max-width:190px;padding:7px 9px;border-bottom:1px solid rgba(23,32,29,.07);text-align:left;white-space:normal;overflow-wrap:anywhere;word-break:break-word; }
.jupgo-ai-result th{ position:sticky;top:0;z-index:1;color:var(--forest-deep);background:#eef3f0;font-weight:900;letter-spacing:-.01em; }
.jupgo-ai-result td{ color:var(--ink);font-weight:700; }
.jupgo-ai-result td.num{ text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap; }  /* T_AITABLEFIT: 금액은 쪼개지 않는다 */
.jupgo-ai-result tbody tr:last-child td{ border-bottom:0; }
.jupgo-ai-result tbody tr:nth-child(2n) td{ background:rgba(244,246,242,.55); }
.jupgo-ai-result-more{ margin-top:6px;color:var(--ink-2);font-size:12px;font-weight:750; }
.jupgo-ai-thinking{ min-height:24px;display:flex;align-items:center;gap:4px; }
.jupgo-ai-thinking i{ width:5px;height:5px;border-radius:50%;background:var(--forest);animation:jupgoAiDot 1.2s ease-in-out infinite; }
.jupgo-ai-thinking i:nth-child(2){ animation-delay:.14s; }
.jupgo-ai-thinking i:nth-child(3){ animation-delay:.28s; }
.jupgo-ai-thinking em{ margin-left:6px;color:var(--muted);font-size:12px;font-style:normal;font-weight:750; }
.jupgo-ai-prompts{ padding:3px 19px 12px;display:flex;gap:7px;overflow-x:auto;scrollbar-width:none; }
.jupgo-ai-prompts::-webkit-scrollbar{ display:none; }
.jupgo-ai-prompts button{ min-height:36px;padding:0 12px;flex:none;border:1px solid rgba(11,95,71,.12);border-radius:999px;color:#315c4e;background:rgba(255,255,253,.9);font-size:12px;font-weight:800;box-shadow:0 4px 12px rgba(20,42,34,.05); }
.jupgo-ai-composer{
  min-height:60px;margin:0 16px;padding:8px 8px 8px 14px;
  display:grid;grid-template-columns:minmax(0,1fr) 42px;gap:8px;align-items:center;
  border:1px solid rgba(10,74,54,.15);border-radius:19px;background:#fff;
  box-shadow:0 12px 30px rgba(15,45,35,.10),inset 0 1px rgba(255,255,255,.9);
  transition:border-color .2s ease,box-shadow .2s ease;
}
.jupgo-ai-composer .sr-only{ position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0; }
.jupgo-ai-composer:focus-within{ border-color:rgba(11,95,71,.35);box-shadow:0 15px 34px rgba(15,45,35,.12),0 0 0 3px rgba(11,95,71,.055); }
.jupgo-ai-composer textarea{
  display:block;align-self:center;width:100%;height:24px;min-height:24px;max-height:92px;min-width:0;
  padding:0;overflow-y:auto;border:0;outline:0;resize:none;-webkit-appearance:none;appearance:none;
  background:transparent;color:var(--ink);font-family:inherit;font-size:16px;line-height:24px;
  vertical-align:middle;-webkit-text-size-adjust:100%;
}
.jupgo-ai-composer textarea::placeholder{ color:#929b97;font-size:13px; }
.jupgo-ai-composer textarea:disabled{ color:var(--muted);cursor:not-allowed; }
.jupgo-ai-composer button{ align-self:center;width:42px;height:42px;display:grid;place-items:center;border-radius:14px;color:#fff;background:linear-gradient(145deg,#117355,var(--forest-deep));box-shadow:0 7px 15px rgba(11,95,71,.18);transition:opacity .18s ease,transform .18s var(--ease),box-shadow .18s ease; }
.jupgo-ai-composer button:active:not(:disabled){ transform:scale(.94); }
.jupgo-ai-composer button:disabled{ opacity:.24;box-shadow:none;cursor:default; }
.jupgo-ai-composer button .icon{ width:17px;height:17px;transform:rotate(180deg); }
.jupgo-ai-composer.is-busy textarea{ opacity:.68; }
.jupgo-ai-principle{ padding:8px 16px 0;display:flex;align-items:center;justify-content:center;gap:6px;color:var(--ink-2);font-size:12px;font-weight:750; }
.jupgo-ai-principle span{ width:5px;height:5px;border-radius:50%;background:var(--lime);box-shadow:0 0 0 3px rgba(207,232,97,.17); }
@keyframes jupgoAiRise{ from{ opacity:0;transform:translate3d(0,42px,0) scale(.985); }to{ opacity:1;transform:none; } }
@keyframes jupgoAiFade{ from{ opacity:0; } }
@keyframes jupgoAiTurnIn{ from{ opacity:0;transform:translateY(8px); }to{ opacity:1;transform:none; } }
@keyframes jupgoAiDot{ 0%,65%,100%{ opacity:.25;transform:translateY(0); }32%{ opacity:1;transform:translateY(-3px); } }

@media (max-width:370px){
  .jupgo-ai-launcher{ right:8px;width:54px;height:54px;padding:6px; }
  .jupgo-ai-mark{ width:42px;height:42px; }
  .jupgo-ai-panel{ height:82%;min-height:440px; }
  .jupgo-ai-head,.jupgo-ai-messages,.jupgo-ai-prompts{ padding-right:16px;padding-left:16px; }
  .jupgo-ai-turn.user .jupgo-ai-turn-body{ max-width:91%; }
}

/* 10) 상단바 담기 버튼 담김 상태 */
.detail-topbar .icon-btn.detail-save-control.is-saved{ color:var(--forest); background:var(--forest-soft); }

/* 11) AI 답변 시트 — 전 화면 QueryMind 패널과 같은 브랜드·대화 시각 체계. */
.sheet.is-ai-answer-sheet{
  padding:8px 18px calc(18px + var(--safe-bottom));
  overscroll-behavior:contain;
  border:1px solid rgba(9,70,52,.10);
  border-radius:29px 29px 0 0;
  color:var(--ink);
  background:radial-gradient(circle at 92% -8%,rgba(223,242,118,.18),transparent 28%),linear-gradient(180deg,#fffefa 0%,#fbfcf8 100%);
  box-shadow:0 -32px 82px rgba(7,32,25,.25);
}
.sheet.is-ai-answer-sheet .sheet-handle{ width:34px; margin:1px auto 8px; border-radius:999px; background:#d4dad6; }
.sheet-head.ai-sheet-head{ min-height:68px; align-items:center; padding:0 1px 12px; margin-bottom:15px; border-bottom:1px solid rgba(23,32,29,.07); }
.ai-answer-identity{ gap:11px; }
.ai-answer-identity .jupgo-ai-mark.small{ flex:none; }
.ai-answer-identity .jupgo-ai-status{ color:var(--ink-2); }
.ai-answer-close{ margin-right:1px; }
.user-question{
  width:max-content;
  max-width:86%;
  margin-left:auto;
  padding:10px 13px;
  border:1px solid rgba(11,95,71,.09);
  border-radius:17px 17px 5px 17px;
  color:var(--muted);
  background:#edf4f0;
  font-size:12px;
  font-weight:800;
}
.user-question span{ letter-spacing:.03em; }
.user-question b{ display:block; margin-top:4px; color:#19322a; font-size:14px; line-height:1.5; letter-spacing:-.025em; }
.ai-response{ margin-top:17px; display:grid; grid-template-columns:28px minmax(0,1fr); align-items:start; gap:10px; }
.ai-response-body{ min-width:0; padding-top:1px; }
.ai-response h3{ margin:0; color:var(--ink); font-size:18px; line-height:1.34; letter-spacing:-.04em; }
.ai-response p{ margin:8px 0 0; color:var(--ink-2); font-size:14px; line-height:1.62; letter-spacing:-.022em; }
.ai-response.is-busy{ animation:aiThinking 1.6s ease-in-out infinite; }
.ai-response.is-busy h3{ color:var(--muted); }
@keyframes aiThinking { 50%{ opacity:.55; } }
.ai-free-note{ display:block; margin-top:9px; padding-top:8px; border-top:1px solid var(--line); color:var(--muted); font-size:12px; font-style:normal; line-height:1.45; }
.ai-response .compare-cash{ margin-top:12px; }

/* 12) 계산 구조 — 피연산자 span · 연산자 i · 결과 b(우측 밀착, 잠기면 ▣) */
.equation{ margin:15px 0 0 38px; padding:12px 13px; border:1px solid rgba(11,95,71,.11); border-radius:14px; background:rgba(244,248,245,.78); }
.equation > small{ color:var(--forest); font-size:12px; font-weight:900; letter-spacing:.04em; }
.equation-line{ margin-top:8px; display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.equation-line span{ color:var(--ink-2); font-size:12px; font-weight:800; }
.equation-line i{ color:var(--muted); font-size:12px; font-style:normal; }
.equation-line b{ margin-left:auto; color:var(--forest); font-size:13px; white-space:nowrap; }
.equation-line b.locked{ color:var(--ink); }
.equation-line b.locked::before{ content:"▣ "; color:var(--forest); }

/* 13) 출처 칩 + 원문 보기 */
.source-chips{ margin:12px 0 0 38px; display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.source-chips button{ min-height:30px; padding:0 10px; border:1px solid rgba(11,95,71,.09); border-radius:999px; color:var(--forest); background:var(--forest-soft); font-size:12px; font-weight:850; }
.source-chips button:last-child{ margin-left:auto; background:transparent; text-decoration:underline; text-underline-offset:3px; }

/* 14) 대출 경고(시트) — 좌측 orange 세로바 */
.sheet.is-ai-answer-sheet .sheet-warning{ margin:11px 0 0 38px; padding:8px 10px; border:1px solid rgba(197,122,50,.16); border-left:3px solid var(--amber); border-radius:0 10px 10px 0; color:#735a40; background:rgba(251,243,229,.62); font-size:12px; line-height:1.5; }

/* 15) 시트 CTA (내 현금과 비교하기 · 체크리스트 열기) */
.compare-cash{ width:100%; min-height:44px; margin-top:12px; display:flex; align-items:center; justify-content:center; color:#fff; background:var(--forest); font-size:13px; font-weight:900; box-shadow:0 9px 20px rgba(11,95,71,.18); }
.compare-cash:active{ transform:scale(.98); }
.sheet.is-ai-answer-sheet > .compare-cash{ width:calc(100% - 38px); margin-left:38px; border-radius:14px; }
.sheet.is-ai-answer-sheet .ai-response .compare-cash{ border-radius:14px; }

/* 16) 내 현금 비교 결과 */
.compare-result{ margin-top:10px; padding:12px; border:1px solid var(--line); background:var(--surface-2); }
.sheet.is-ai-answer-sheet > .compare-result{ margin-left:38px; border-radius:13px; }
.compare-result b{ display:block; font-size:13px; }
.compare-result p{ margin:5px 0 0; color:var(--ink-2); font-size:12px; line-height:1.5; }
.compare-result button{ margin-top:9px; width:100%; min-height:38px; border:1px solid var(--forest); color:var(--forest); background:#fff; font-size:12px; font-weight:850; }
.compare-result[data-tone="good"]{ border-color:rgba(7,95,72,.35); background:var(--forest-soft); }
.compare-result[data-tone="good"] b{ color:var(--forest); }
.compare-result[data-tone="bad"]{ border-color:rgba(166,77,69,.4); background:var(--red-soft); }
.compare-result[data-tone="bad"] b{ color:var(--red); }
.compare-result[data-tone="warn"]{ border-color:rgba(197,122,50,.4); background:var(--amber-soft); }
.compare-result[data-tone="warn"] b{ color:#7a531e; }

/* 17) 이어서 물어보기 */
.followups{ margin-top:16px; padding-top:13px; border-top:1px solid rgba(23,32,29,.07); }
.followups > small{ color:var(--forest); font-size:12px; font-weight:900; letter-spacing:.02em; }
.followups button{ width:100%; min-height:46px; padding:8px 3px; display:flex; align-items:center; justify-content:space-between; gap:10px; border-bottom:1px solid rgba(23,32,29,.08); color:var(--ink-2); background:transparent; text-align:left; font-size:13px; font-weight:800; }
.followups button i{ color:var(--forest); font-size:16px; font-style:normal; flex:none; }
.followups button:active{ background:var(--forest-soft); }

.ai-guard-note{ position:relative; margin-top:13px; padding:10px 11px 10px 25px; border:1px solid rgba(23,32,29,.06); border-radius:12px; color:var(--ink-2); background:rgba(244,246,242,.76); line-height:1.5; }
.ai-guard-note::before{ content:""; position:absolute; left:11px; top:16px; width:5px; height:5px; border-radius:50%; background:var(--lime); box-shadow:0 0 0 3px rgba(207,232,97,.17); }

@media (max-width:370px){
  .sheet.is-ai-answer-sheet{ padding-right:16px; padding-left:16px; }
  .user-question{ max-width:91%; }
  .equation,.source-chips,.sheet.is-ai-answer-sheet .sheet-warning,.sheet.is-ai-answer-sheet > .compare-result{ margin-left:36px; }
  .sheet.is-ai-answer-sheet > .compare-cash{ width:calc(100% - 36px); margin-left:36px; }
}

/* --- T_DETAILAI end -------------------------------------------------------- */

/* --- T_EDHOME begin (2026-08-03) -------------------------------------------
   홈 · 오늘 볼 물건 · 검색 3화면을 시안(design/app-wide-editorial-system-20260803)의
   에디토리얼 골격으로 재구성. 원칙: 박스·그림자 대신 1px 가로선(--line) 구획,
   결론 스트립 아래에만 굵은 ink 선, 연두(--lime)는 JUPGO AI eyebrow 전용,
   border-radius 신설 금지, font-size 12px 미만 금지.
   파일 맨 끝 레이어라 베이스(≤1040) · 프리미엄(1041~) · 370px 미디어보다 뒤에서 이긴다. */

/* 0) 공용 프리미티브 — 새 클래스(충돌 없음 확인: hero-title 등 기존 0건) */
.ed-kicker{ display:flex;align-items:center;gap:7px;color:var(--forest);font-size:12px;font-weight:900;letter-spacing:.04em; }
.hero-title{ margin:10px 0 0;font-size:30px;line-height:1.2;letter-spacing:-.05em;font-weight:870; }
.hero-title b{ color:var(--forest);font-weight:870; }
/* T_HOMEPOLISH(2026-08-09 대표님): 인사말이 상태에 따라 1줄↔2줄로 바뀌며 아래가 들썩였다 — 2줄 높이로 고정 */
/* T_HOMEPOLISH2(2026-08-14 대표님 "글의 밀림으로 이미지가 탭마다 같은 위치에 있지 않다"):
   min-height 를 **3줄분**으로 올린다. 이 블록은 인사(항상 1줄) + 상태문(1~2줄)이라 총 2~3줄인데,
   2줄분만 잡아 두면 3줄이 되는 탭에서 아래가 통째로 22px 밀린다.
   ★실측(375px): '내지역 픽/추천' 66px(3줄) vs '전국 픽/추천' 44px(2줄) — 탭을 옮길 때마다
     그만큼 카드·사진이 튀었다. 아이폰에서 먼저 눈에 띈 것도 같은 원인이다.
   ★문구를 짧게 하는 방식으로는 못 막는다 — 건수·인사말(아침/저녁)이 길이를 바꾸기 때문이다.
     자리를 먼저 잡아 두는 것이 유일하게 확실한 방법이다. */
.hero-copy{ margin:10px 0 0;color:var(--muted);font-size:14px;line-height:1.58;min-height:calc(3 * 1.58em); }
.eyebrow{ display:flex;align-items:center;gap:7px;color:var(--forest);font-size:12px;font-weight:900;letter-spacing:.06em; }
.eyebrow .spark{ width:20px;height:20px;display:grid;place-items:center;color:var(--forest-deep);background:var(--lime);font-style:normal; }
.section-rule{ margin-top:26px;padding-top:18px;border-top:3px solid var(--ink); }
.section-rule .section-heading{ margin:0 0 11px; }
.section-rule .section-heading h2{ font-size:22px;letter-spacing:-.04em; }
.section-rule .section-heading p{ margin-top:5px;color:var(--muted);font-size:12px;line-height:1.45; }
.primary-btn{ width:100%;min-height:50px;padding:0 16px;display:flex;align-items:center;justify-content:center;gap:6px;color:#fff;background:var(--forest);font-size:14px;font-weight:900; }
.primary-btn:active{ opacity:.85; }
.text-link{ color:var(--forest);background:transparent;font-size:13px;font-weight:850;white-space:nowrap; }
.tag{ display:inline-flex;align-items:center;min-height:26px;padding:0 8px;color:var(--forest);background:var(--lime-soft);font-size:12px;font-weight:850; }
.page-head,.home-head{ padding:16px 0 0; }

/* 1) 범위 탭 — 시안 scope-tabs(언더라인). 배선(data-recommendation-scope)은 v5 그대로. */
.scope-tabs{ display:flex;align-items:stretch;margin-top:16px;border-bottom:1px solid var(--line); }
/* T_HOMETAB4 정돈(2026-08-09 대표님 실기): 4탭은 균등 4등분 + 줄바꿈 금지 — 375px 에서 "내지역/픽"
   두 줄 꺾임을 없앤다. 지역칩은 탭 행에서 분리(.scope-region-line 아랫줄). */
.scope-tabs button{ flex:1 1 0;min-height:43px;padding:0 2px;border-bottom:3px solid transparent;color:var(--muted);background:transparent;font-size:13px;font-weight:850;letter-spacing:-.02em;white-space:nowrap;transition:color .15s,border-color .15s; }
.scope-region-line{ display:flex;justify-content:flex-end;margin:10px 0 10px auto; }
@media (max-width:360px){ .scope-tabs button{ font-size:12px; } }
/* 홈 히어로 슬라이더 오버레이(T_HOMESLIDE): 카운터는 우상단(D-day 와 분리) · 도트는 좌하단('오늘은 패스' 태그와 분리) */
.pick-visual .photo-count{ top:13px;right:13px;bottom:auto;left:auto; }
.pick-visual .photo-dots{ top:auto;bottom:14px;left:13px; }
.scope-tabs button.is-active{ border-color:var(--forest);color:var(--forest); }
.scope-tabs button:disabled{ opacity:.4;cursor:not-allowed; }
.scope-tabs .scope-region-chip{ margin:0 0 0 auto;align-self:center;display:inline-flex;align-items:center;gap:4px;padding:0;border:0;border-radius:0;background:transparent;color:var(--forest);font-size:12px;font-weight:850;box-shadow:none; }
.scope-tabs .scope-region-chip .icon{ width:13px;height:13px; }

/* 2) 오늘의 픽 — today-pick: 3px 상단 룰 → 사진 → 판단문 → 결론 스트립(하단 굵은 선) → 근거 행 */
.today-pick{ margin-top:0;border-top:0;padding-top:0; }
.pick-visual{ position:relative;height:164px;overflow:hidden;background:linear-gradient(135deg,#cfd9d0,#899a90); }
.pick-visual img{ position:absolute;inset:0;width:100%;height:100%;object-fit:cover; }
.pick-visual.is-placeholder img{ display:none; }
.pick-visual.is-placeholder::before{ content:"";position:absolute;inset:38px 32px 0;background:linear-gradient(135deg,#e8e3d5,#b9b19e);clip-path:polygon(8% 100%,8% 30%,42% 30%,42% 10%,92% 10%,92% 100%); }
.pick-visual .tag{ position:absolute;left:13px;top:13px;z-index:1; }
.pick-dday{ position:absolute;right:13px;bottom:12px;z-index:1;padding:5px 8px;color:#fff;background:rgba(10,24,19,.62);font-size:12px;font-weight:850; }
.pick-copy{ padding:16px 0 0; }
.pick-copy small{ color:var(--forest);font-size:12px;font-weight:900; }
.pick-copy h2{ margin:6px 0 0;font-size:24px;letter-spacing:-.045em;line-height:1.25; }
.pick-copy p{ margin:7px 0 0;color:var(--muted);font-size:14px;line-height:1.55; }
.decision-strip{ margin-top:14px;padding:12px 0;display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--line);border-bottom:3px solid var(--ink); }
/* T_VERDICTSTACK: >b 로 좁힌다 — 자손 b 까지 잡으면 결론(strong) 안의 %강조 <b>가 14px 로 준다 */
.decision-strip>b{ font-size:14px;font-weight:850; }
.decision-strip strong{ color:var(--forest);font-size:18px;font-weight:900;text-align:right; }
.fact-lines{ margin-top:0; }
.fact-line{ min-height:46px;padding:8px 0;display:grid;grid-template-columns:96px minmax(0,1fr);gap:10px;align-items:center;border-bottom:1px solid var(--line); }
.fact-line b{ font-size:12px;font-weight:850;line-height:1.4; }
.fact-line span{ color:var(--ink-2);font-size:13px;line-height:1.5; }
.fact-line span.is-good{ color:var(--forest);font-weight:800; }
/* T_FACTLEDGER: 위험·근거는 장식 카드가 아니라 판단 순서가 보이는 한 장의 체크 레저로 읽는다. */
.fact-insights{ display:block;margin-top:18px; }
.fact-insights-head{ min-height:33px;padding:0 0 9px;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;border-bottom:2px solid var(--ink); }
.fact-insights-head b{ color:var(--ink);font-size:13px;font-weight:900;letter-spacing:-.025em; }
.fact-insights-head span{ color:var(--muted);font-size:11px;font-weight:700;text-align:right; }
.fact-insights-list{ border-bottom:1px solid var(--line); }
.fact-insight{ position:relative;margin:0;padding:11px 0;display:grid;grid-template-columns:78px minmax(0,1fr);gap:12px;align-items:center;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;box-shadow:none;overflow:visible; }
.fact-insight:last-child{ border-bottom:0; }
.fact-insight-label{ min-width:0; }
.fact-insight-label b{ display:block;color:var(--ink);font-size:12px;font-weight:900;line-height:1.35; }
.fact-insight-label small{ display:block;margin-top:3px;font-size:10px;font-weight:800;line-height:1.35;white-space:nowrap; }
.fact-insight--risk .fact-insight-label small{ color:#986a20; }
.fact-insight--basis .fact-insight-label small{ color:var(--forest); }
.fact-insight-copy{ min-width:0;padding-left:12px;border-left:1px solid var(--line); }
.fact-insight p{ margin:0;color:var(--ink-2);font-size:13px;font-weight:400;line-height:1.62;word-break:keep-all; }
.today-pick .primary-btn{ margin-top:14px; }
.feedback-row{ display:grid;grid-template-columns:1fr 1.15fr 1fr;gap:7px;margin-top:10px; }
.feedback-row button{ min-height:42px;padding:0 4px;border:1px solid var(--line);color:var(--ink-2);background:transparent;font-size:12px;font-weight:800; }
.feedback-row button.is-primary{ border-color:var(--forest);color:#fff;background:var(--forest); }
.feedback-row button[aria-pressed="true"]:not(.is-primary){ border-color:var(--forest);color:var(--forest); }
.feedback-row button.is-busy{ opacity:.55; }

/* 3) 선정 근거(why_ranked) — 박스 해제, 라벨·값 행 + hairline (JS 마크업 그대로) */
.why-ranked{ margin-top:18px;padding:0;border:0;border-radius:0;background:transparent; }
.why-ranked-eyebrow{ display:block;color:var(--forest);font-size:12px;font-weight:900;letter-spacing:.02em; }
.why-ranked-list{ margin:6px 0 0;padding:0;list-style:none;border-top:1px solid var(--line); }
/* T_WHYROWGAP(2026-08-09 대표님 "권역 매매지수 하단 줄이 너무 붙어있어" + "2줄이 나온다"):
   1) 라벨 열 auto — 구 minmax(72px,.7fr)는 좁은 폭에서 "시세보다 낮은 정도"(108px 필요)를
      84px 로 눌러 두 줄로 꺾었다. auto 면 라벨이 제 폭을 갖고 값(우측 정렬)이 나머지를 쓴다.
   2) last-child 의 padding-bottom:0(위 734 구 정의 상속)을 10px 로 복원 — 2599 는 border 만
      되살리고 패딩을 안 덮어 마지막 행(권역 매매지수)만 글자 1px 밑에 선이 붙었다. */
.why-ranked-item{ display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:start;padding:10px 0;border-bottom:1px solid var(--line); }
.why-ranked-item:last-child{ border-bottom:1px solid var(--line);padding-bottom:10px; }
.why-ranked-label{ color:var(--ink);font-size:12px;font-weight:850; }
.why-ranked-value{ font-size:12px; }
.why-ranked-value > b{ font-size:13px; }
.why-ranked-source{ padding:0;border-radius:0;background:transparent;color:var(--muted);font-weight:700; }

/* 4) '오늘 볼 물건' 진입 — 카드 대신 룰 섹션 + 한 줄 진입 행 */
.home-next .recommendation-entry{ width:100%;margin:0;padding:13px 0;display:grid;grid-template-columns:40px minmax(0,1fr) 17px;gap:12px;align-items:center;text-align:left;border:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);border-radius:0;background:transparent;box-shadow:none; }
.home-next .recommendation-entry-icon{ width:40px;height:40px;border:1px solid var(--line);border-radius:0;background:transparent;color:var(--forest); }
.home-next .recommendation-entry.is-locked{ background:transparent;border-color:var(--line); }
.home-next .recommendation-entry.is-locked .recommendation-entry-icon{ background:transparent;color:var(--ink); }
.home-next .recommendation-entry-copy strong{ font-size:14px; }
.home-next .recommendation-entry-arrow{ color:var(--forest); }

/* 5) 선별 기록(details) — 박스 해제: hairline summary + 세로 스택 제외 기록(주황 좌측 보더) */
.selection-audit{ margin-top:26px;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none; }
.selection-audit>summary{ margin:0;padding:13px 0;display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);border-radius:0;background:transparent;list-style:none; }
.selection-audit[open]>summary{ border-bottom:1px solid var(--line); }
.selection-audit .market-pulse{ margin:0;padding:13px 0;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px 12px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent; }
.selection-audit .market-pulse .pulse-copy b{ font-size:12px; }
.selection-audit .market-pulse .pulse-copy span{ font-size:12px;color:var(--muted); }
.selection-audit .section-heading{ margin:17px 0 0; }
.selection-audit .section-heading h2{ font-size:15px; }
.selection-audit .insight-strip{ display:block;margin:0;padding:0;overflow:visible; }
.selection-audit .insight{ min-width:0;margin-top:12px;padding:2px 0 2px 12px;border:0;border-left:3px solid var(--amber);border-radius:0;background:transparent;scroll-snap-align:none; }
.selection-audit .insight h3{ font-size:13px; }
.selection-audit .insight p{ font-size:12px; }
/* --- T_APPWAIT begin --- 가격 대기 줄. 바로 위 .market-pulse(깔때기)와 **같은 언어**로 그린다:
   상자 없음 · hairline 구획 · 투명 배경 · 12px 하한. 값은 하나뿐이라 18px(시안 주요값 16-18)로 세운다. */
.selection-audit .price-wait-row{ padding:13px 0;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px 12px;border-bottom:1px solid var(--line); }
.price-wait-copy b{ display:block;font-size:12px; }
.price-wait-copy span{ display:block;margin-top:4px;font-size:12px;line-height:1.5;color:var(--muted); }
.price-wait-row strong{ font-size:18px;letter-spacing:-.045em;font-variant-numeric:tabular-nums; }
.price-wait-soon{ padding:10px 0 0;font-size:12px;line-height:1.55;color:var(--muted); }
.price-wait-soon b{ color:var(--ink);font-variant-numeric:tabular-nums; }
.price-wait-soon small{ display:block;margin-top:3px;font-size:12px;color:var(--muted); }
@media (max-width:370px){ .price-wait-row strong{ font-size:16px; } }
/* T_WAITLIST: 이 줄은 목록 진입점(button)이 됐다 — 버튼 기본 꼴을 지우고 오른쪽에 수+화살표를 세운다. */
.selection-audit button.price-wait-row{ width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;font:inherit;color:inherit; }
.price-wait-right{ display:flex;align-items:center;gap:6px; }
.price-wait-right>.icon{ width:15px;height:15px;color:var(--muted); }
/* --- T_APPWAIT end --- */

/* --- T_WAITLIST begin --- '가격 대기' 목록 화면. v5 언어: 상자 없음 · hairline 구획 · 12px 하한.
   ★값은 세로 2열(라벨 왼쪽 · 값 오른쪽)이다. 가로 3칸을 먼저 시도했다가 되돌렸다 —
     375px 에서 "1억 5,974만원"이 두 줄로 꺾인다. */
.wait-list{ border-top:3px solid var(--ink); }
.section-rule .wait-list{ border-top:0; }   /* 룰 섹션 안에서는 3px 선을 두 번 긋지 않는다(.listing-list 와 같은 규칙) */
.wait-row{ display:block;width:100%;text-align:left;padding:14px 0 15px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;font:inherit;color:inherit; }
.wait-row-head{ display:flex;align-items:flex-start;justify-content:space-between;gap:10px; }
.wait-row-head b{ font-size:14px;line-height:1.4;letter-spacing:-.035em; }
.wait-badge{ flex:none;padding:3px 7px;border:1px solid var(--forest);border-radius:0;color:var(--forest);font-size:12px;font-weight:800;font-style:normal;white-space:nowrap; }
.wait-prices{ margin-top:10px;display:grid;gap:5px; }
.wait-prices>span{ display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:10px; }
.wait-prices i{ font-style:normal;font-size:12px;color:var(--muted); }
.wait-prices b{ font-size:13px;font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums;white-space:nowrap; }
.wait-prices .is-gap i{ color:var(--ink-2); }
.wait-prices .is-gap b{ color:var(--amber);font-size:15px; }
.wait-meta{ display:block;margin-top:9px;font-size:12px;line-height:1.5;color:var(--muted); }
.wait-locked-note{ display:block;margin-top:10px;padding:8px 10px;border-left:3px solid var(--line-strong);font-size:12px;line-height:1.5;color:var(--muted); }
.wait-capped{ margin-top:16px;padding:13px 0;border-top:1px solid var(--line); }
.wait-capped b{ display:block;font-size:13px; }
.wait-capped p{ margin-top:5px;font-size:12px;line-height:1.55;color:var(--muted); }
.wait-capped button{ margin-top:11px;width:100%; }
/* --- T_WAITLIST end --- */

/* --- T_FREECAPSAY begin --- 홈 추천 탭의 '무료 10건' 안내 + 전체 보기.
   v5 언어 그대로: 상자 없음 · hairline · 12px 하한. 목록 위에 서고, 버튼은 목록 아래다. */
.free-cap-note{ display:flex;align-items:flex-start;gap:7px;margin:0 0 10px;padding:9px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:var(--muted);font-size:12px;line-height:1.55; }
.free-cap-note .icon{ flex:none;width:14px;height:14px;margin-top:1px;color:var(--forest); }
.free-cap-cta{ margin-top:12px;width:100%; }
/* --- T_FREECAPSAY end --- */

/* 6) 목록 공용 — listing-list/listing-row (오늘 볼 물건 · 검색 · 검토 목록이 공유) */
.listing-list{ border-top:3px solid var(--ink); }
.section-rule .listing-list{ border-top:0; }   /* 룰 섹션 안에서는 3px 선을 두 번 긋지 않는다 */
[data-home-reco-list]{ border-top:0; }
[data-screen="search"] .listing-list{ border-top:0; }
.section-rule.list-rule{ margin-top:20px; }
.listing-row{ width:100%;min-height:112px;padding:14px 0;display:grid;grid-template-columns:92px minmax(0,1fr) 17px;gap:13px;align-items:center;border-bottom:1px solid var(--line);color:var(--ink);background:transparent;text-align:left; }
.listing-row:active{ opacity:.72; }
/* T_PLACEHOLDER2: 사진이 없으면 목록은 <img> 를 아예 만들지 않는다(T_EDHOME 패턴) — 그래서
   보이는 것은 이 배경뿐이었다(구: 회녹색 그라디언트). 92x88 전용 판을 깔아 '사진 준비 중'임이
   형태로 전달되게 한다. 사진이 있으면 .listing-thumb img 가 inset:0 으로 덮는다. */
.listing-thumb{ position:relative;width:92px;height:88px;overflow:hidden;background:#eef2ee url(assets/property-placeholder-thumb.svg) center/cover no-repeat; }
.listing-thumb img{ position:absolute;inset:0;width:100%;height:100%;object-fit:cover; }
.listing-thumb b{ position:absolute;left:0;top:0;padding:2px 6px;background:var(--ink);color:#fff;font-size:12px;font-weight:800;line-height:1.3; }
.listing-copy{ min-width:0;display:block; }
.listing-copy small{ display:flex;align-items:center;gap:6px;color:var(--forest);font-size:12px;font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.listing-copy small em{ flex:none;font-style:normal;font-weight:900; }
.listing-copy small em.lotgroup{ flex:0 1 auto;min-width:0;padding:1px 5px;border:1px solid var(--line);color:var(--muted);font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
/* T_FRESHUI: 목록 행 표식 — '오늘 새로 확인'(오늘 처음 판정한 물건) · '목록 N일 남음'(곧 빠진다).
   ★lotgroup 과 같은 칩 형태를 쓴다(한 줄 안에서 배지가 두 모양이면 무엇이 중요한지 안 보인다).
   ★flex:none — 375px 실측에서 lotgroup("같은 사건 별도매각 2건")과 자리를 다투다 이 배지가
     "목록 3일 …" 으로 잘렸다. **숫자가 잘리면 이 배지는 아무 말도 못 한다.** lotgroup 은 잘려도
     ("같은 사건 별도매…") 뜻이 남으므로, 줄어드는 쪽을 lotgroup 으로 둔다.
     한 줄 전체가 넘쳐도 상위 small 이 overflow:hidden 이라 레이아웃은 안 무너진다. */
.listing-copy small em.row-flag{ flex:none;padding:1px 5px;border:1px solid currentColor;font-weight:800;white-space:nowrap; }
.listing-copy small em.row-flag.is-closing{ color:var(--amber); }
/* T_VIOLBADGE: 위반건축물은 경고다 — 기일 배지(amber)보다 강한 색으로 구분한다. */
.listing-copy small em.row-flag.is-violation{ color:var(--red); }
.listing-copy strong{ display:-webkit-box;margin-top:5px;font-size:16px;line-height:1.3;letter-spacing:-.035em;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2; }
.listing-row.is-current .listing-copy strong{ color:var(--forest); }
.listing-meta{ display:flex;align-items:center;gap:4px;min-width:0;margin-top:4px;color:var(--muted);font-size:13px;line-height:1.45;white-space:nowrap;overflow:hidden; }
/* --- T_TYPEICON --- 물건 유형을 메타 줄 첫 자리에 못박는다(대표님 "아파트인지 빌라인지 구별이 안된다").
   자산군마다 함정이 다르므로(헌법 0-1-3) 무엇을 보고 있는지가 값보다 먼저 읽혀야 한다.
   ★줄이 길어지지 않았다: 원본 표기("연립주택,다세대,빌라" 12자)를 메타에서 빼고 그 자리에
     아이콘 13px + 2~4자를 넣는 교환이라 실제로는 짧아진다(pickMeta 의 omitUsage).
   ★색은 유형별로 나누지 않는다 — 목록에서 이미 판정(GREEN/RED)이 색을 쓰고 있어 색이 둘이 되면
     초보는 어느 색이 무슨 뜻인지 못 읽는다. 유형은 형태로만 구별한다. */
.type-tag{ display:inline-flex;align-items:center;gap:2px;flex:none;margin:0;padding:0;border:0;color:var(--ink-2);font-style:normal;font-size:12px;font-weight:750;line-height:1.2;letter-spacing:-.02em; }
.type-tag .icon{ width:12px;height:12px;flex:none;color:var(--forest);stroke-width:2; }
.type-meta-divider{ flex:none;color:var(--line-strong);font-style:normal; }
.type-meta-copy{ min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.listing-facts{ display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:6px; }
.listing-facts>span{ display:inline-flex;align-items:baseline;gap:5px;min-width:0; }
.listing-facts i{ color:var(--muted);font-size:12px;font-style:normal;white-space:nowrap; }
.listing-facts b{ color:var(--ink-2);font-size:13px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.listing-row>.icon{ width:17px;height:17px;color:var(--forest); }
/* T_PENDINGROW: 아직 분석 전이라 상세가 열리지 않는 줄. 눌러도 안 열리는 것을 눈으로 알게 한다 —
   진입 화살표를 감추면 "여기로 들어간다"는 신호 자체가 사라진다(disabled 는 클릭을 막을 뿐이다). */
.listing-row.is-pending{ opacity:.62;cursor:default; }
.listing-row.is-pending:active{ opacity:.62; }
.listing-row.is-pending>.icon{ visibility:hidden; }
.listing-list .empty-state{ border:0;border-radius:0;background:transparent;text-align:left;padding:22px 0; }
.listing-list .empty-state .empty-symbol{ margin:0 0 10px; }

/* 7) 검색 — 2px ink 검색창 · 칩 필터 · 결과 요약 */
.search-box{ height:52px;margin-top:17px;padding:0 13px;display:grid;grid-template-columns:25px minmax(0,1fr) 30px;align-items:center;border:2px solid var(--ink);border-radius:0;background:var(--surface); }
.search-box>.icon{ width:20px;height:20px;color:var(--ink); }
.search-box input{ width:100%;border:0;outline:0;background:transparent;font-size:16px;letter-spacing:-.02em; }
.search-box input::placeholder{ color:var(--muted);font-weight:600;font-size:14px; }
.search-box input::-webkit-search-cancel-button{ -webkit-appearance:none; }
.search-box button{ width:30px;height:30px;display:grid;place-items:center;border-radius:0;background:transparent;color:var(--muted); }
.search-box button .icon{ width:15px;height:15px; }
.filter-strip{ display:flex;gap:6px;margin-top:11px;overflow-x:auto;scrollbar-width:none; }
.filter-strip::-webkit-scrollbar{ display:none; }
.filter-strip button{ flex:none;min-height:36px;padding:0 11px;border:1px solid var(--line);border-radius:0;color:var(--ink-2);background:var(--surface);font-size:12px;font-weight:800; }
.filter-strip button.is-active{ border-color:var(--forest);color:#fff;background:var(--forest); }
.result-summary{ margin:20px 0 0;padding-bottom:10px;display:flex;justify-content:space-between;align-items:flex-end;gap:12px; }
.result-summary>div{ min-width:0; }
.result-summary b{ font-size:20px;letter-spacing:-.03em; }
.result-summary b span{ color:var(--forest); }
.result-summary>div>span{ display:block;margin-top:3px;color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.search-access-note{ margin-top:18px;padding:13px 0;display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:10px;align-items:center;border:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);border-radius:0;background:transparent;box-shadow:none; }
.search-access-note>.icon{ margin:0; }

/* 8) 빈 상태(내 화면 3곳) — 점선 박스 대신 굵은 룰 아래 왼쪽 정렬 문단 */
[data-screen="home"] .criteria-empty{ margin-top:22px;padding:16px 0 6px;border:0;border-top:3px solid var(--ink);border-radius:0;background:transparent;text-align:left; }
[data-screen="home"] .criteria-empty .empty-symbol{ display:none; }
[data-screen="home"] .criteria-empty h3{ font-size:16px; }
[data-screen="home"] .criteria-empty p{ font-size:13px;max-width:none; }

/* 9) 좁은 폭 — 시안 뷰포트(390)보다 좁은 360 계열 보정 */
@media (max-width:370px){
  .hero-title { font-size:27px; }
  .fact-line { grid-template-columns:88px minmax(0,1fr); }
  .listing-row { grid-template-columns:80px minmax(0,1fr) 16px;gap:11px; }
  .listing-thumb { width:80px;height:78px; }
  /* T_HOMETAB4: 구 padding:0 12px 오버라이드 제거 — 4탭 균등(0 2px)을 좁은 폭에서 되돌려 꺾임을 재발시킨다 */
  .pick-visual { height:150px; }
  .pick-copy h2 { font-size:22px; }
  .filter-strip { margin-right:-16px;margin-left:-16px;padding-right:16px;padding-left:16px; }
}
/* --- T_EDHOME end ---------------------------------------------------------- */

/* --- T_EDSAVED begin (2026-08-03) ------------------------------------------
   시안 08 saved · 09 score · 13 profile + 딸린 시트(검토 단계·플랜·분석 원칙·회원 탈퇴·알림)를
   design/app-wide-editorial-system-20260803 의 편집 언어로 재구성.
   원칙: 박스·그림자 대신 1px 가로선(--line) 구획, 섹션 시작은 3px ink 룰, 핵심 어구만 forest,
   연두(--lime)는 JUPGO AI 전용, border-radius 신설 금지(원형·기존 pill 예외), 12px 미만 금지,
   파괴적 액션은 빨강 라벨(버튼 전체 빨강 금지).
   ★같은 선택자의 베이스(≤1040)·프리미엄(1041~) 정의를 전수 grep 해 여기서 전부 덮는다
   (파일 맨 끝 레이어 — 뒤가 이긴다). */

/* 1) 내 경매 — 실제 단계별 건수와 현재 필터를 함께 보여주는 연결형 트랙. */
.stage-track{ margin-top:4px;padding:13px 0 0;border-top:3px solid var(--ink);border-bottom:1px solid var(--line); }
.stage-track-grid{ position:relative;display:grid;grid-template-columns:repeat(5,1fr); }
.stage-track-grid::before{ content:"";position:absolute;z-index:0;top:16px;right:10%;left:10%;height:1px;background:var(--line-strong); }
.stage-track .stage-tab{ position:relative;z-index:1;min-width:0;min-height:50px;padding:3px 1px 6px;display:flex;flex-direction:column;align-items:center;gap:5px;border:0;border-radius:0;background:transparent;color:var(--muted);font-size:12px;font-weight:800;white-space:nowrap;text-align:center; }
.stage-track .stage-tab::before{ display:none; }
.stage-track .stage-tab>[data-stage-count]{ min-width:27px;height:27px;padding:0 4px;display:grid;place-items:center;border:1px solid var(--line-strong);border-radius:999px;color:var(--muted);background:var(--paper);font-size:12px;font-weight:900;line-height:1; }
.stage-track .stage-tab>span{ display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis; }
.stage-track .stage-tab.is-populated{ color:var(--ink-2); }
.stage-track .stage-tab.is-populated>[data-stage-count]{ border-color:rgba(7,95,72,.32);color:var(--forest);background:var(--forest-soft); }
.stage-track .stage-tab.is-active{ background:transparent;border:0;color:var(--forest); }
.stage-track .stage-tab.is-active>[data-stage-count]{ border-color:var(--forest);color:#fff;background:var(--forest); }
.stage-track-status{ min-height:42px;padding:8px 1px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--line); }
.stage-track-status>span{ min-width:0;display:flex;align-items:baseline;gap:7px; }
.stage-track-status b{ color:var(--ink);font-size:12px;font-weight:900;white-space:nowrap; }
.stage-track-status small{ color:var(--muted);font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.stage-track-status>button{ flex:none;min-height:30px;padding:0 9px;color:var(--forest);font-size:12px;font-weight:850;text-decoration:underline;text-underline-offset:3px; }
[data-screen="saved"] .page-intro p{ font-size:14px; }

/* 2) 내 경매 — change-alert: 주황 좌측 3px 보더 행(금색 박스 배너 폐기) */
.change-alert{ margin-top:14px;padding:12px 0 12px 12px;display:grid;grid-template-columns:24px minmax(0,1fr) auto;gap:9px;align-items:center;border-left:3px solid var(--amber);border-bottom:1px solid var(--line); }
.change-alert-icon{ display:grid;place-items:center;color:var(--amber); }
.change-alert-icon .icon{ width:17px;height:17px; }
.change-alert b{ display:block;font-size:13px; }
.change-alert div>span{ display:block;margin-top:3px;color:var(--muted);font-size:12px;line-height:1.45; }
.change-alert-when{ color:var(--forest);font-size:12px;font-weight:850;white-space:nowrap; }

/* 3) 내 경매 — saved-row 목록(카드 박스 폐기, 행 사이 hairline) */
.saved-list{ margin-top:2px; }
.saved-row{ width:100%;margin:0;padding:15px 0 0;border:0;border-radius:0;border-bottom:1px solid var(--line);background:transparent;box-shadow:none;overflow:visible;color:var(--ink);text-align:left; }
.saved-row-top{ display:grid;grid-template-columns:86px minmax(0,1fr);gap:12px;align-items:center;padding:0; }
.saved-row .listing-thumb{ width:86px;height:82px; }
.saved-row .saved-copy small{ display:block;color:var(--forest);font-size:12px;font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.saved-row .saved-copy h3{ margin:4px 0 0;font-size:16px;line-height:1.3;letter-spacing:-.035em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.saved-row .saved-copy p{ display:flex;align-items:center;gap:4px;min-width:0;margin:5px 0 0;color:var(--muted);font-size:13px;line-height:1.45;white-space:nowrap;overflow:hidden; }
.saved-row .saved-next{ width:100%;margin-top:12px;padding:10px 0 13px;display:flex;align-items:center;justify-content:space-between;gap:10px;border:0;border-top:1px solid var(--line);border-radius:0;background:transparent;text-align:left;font-size:12px; }
.saved-row .saved-next span{ color:var(--muted);font-size:12px; }
.saved-row .saved-next b{ color:var(--forest);font-size:12px;font-weight:850;white-space:nowrap; }

/* 4) 성과 — score-hero: 잉크 카드·링 폐기 → 3px 룰 아래 55px 수치 + 3분할 건수 */
.score-hero{ margin-top:6px;padding:18px 0 16px;position:static;overflow:visible;border-radius:0;border-top:3px solid var(--ink);border-bottom:1px solid var(--line);background:transparent;color:var(--ink);box-shadow:none; }
.score-hero::after{ content:none; }
[data-score-title]{ white-space:pre-line; }
.score-main{ display:flex;align-items:flex-end;justify-content:space-between;gap:14px; }
.score-main>strong{ color:var(--forest);font-size:55px;line-height:1;letter-spacing:-.07em;font-weight:900; }
.score-main>div{ min-width:0;padding-bottom:5px;text-align:right; }
.score-main>div>b{ display:block;font-size:14px;font-weight:850; }
.score-main>div>span{ display:block;margin-top:4px;color:var(--muted);font-size:12px;line-height:1.5; }
.score-main>div>span b{ color:var(--ink-2);font-weight:850; }
.score-counts{ margin-top:16px;display:grid;grid-template-columns:repeat(3,1fr); }
.score-counts .score-number{ display:block;min-height:0;padding:9px 0 0 10px;border:0;border-left:1px solid var(--line); }
.score-counts .score-number:first-child{ border-left:0;padding-left:0; }
.score-counts .score-number span{ display:block;color:var(--muted);font-size:12px; }
.score-counts .score-number b{ display:block;margin-top:4px;font-size:18px;letter-spacing:-.02em; }
.score-hero .score-cta{ margin-top:16px;min-height:48px;border-radius:0;background:var(--forest);color:#fff;font-size:13px; }

/* 5) 성과 — 집계 기준(details)·최근 판단 결과: 박스 카드 → 라벨/값 hairline 행 */
.score-details{ margin-top:0;border-bottom:1px solid var(--line); }
.score-details .outcome-grid{ display:block;padding-bottom:6px; }
.score-details .outcome-card{ display:flex;flex-direction:row-reverse;align-items:center;justify-content:space-between;gap:12px;min-height:0;padding:11px 0;border:0;border-radius:0;border-top:1px solid var(--line);background:transparent; }
.score-details .outcome-card b{ display:block;margin:0;font-size:14px;color:var(--forest);white-space:nowrap; }
.score-details .outcome-card span{ display:block;margin:0;color:var(--ink-2);font-size:12px;line-height:1.45; }
.score-worklog{ margin-top:16px;padding:14px 0 13px;border-top:3px solid var(--ink);border-bottom:1px solid var(--line); }
.score-worklog-head{ display:flex;align-items:center;justify-content:space-between;gap:12px; }
.score-worklog-head b{ font-size:13px;font-weight:900; }
.score-worklog-head span{ color:var(--muted);font-size:11px; }
.score-worklog-grid{ margin-top:12px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr)); }
.score-worklog-grid>div{ padding-left:10px;border-left:1px solid var(--line); }
.score-worklog-grid>div:first-child{ padding-left:0;border-left:0; }
.score-worklog-grid span{ display:block;color:var(--muted);font-size:11px;line-height:1.35; }
.score-worklog-grid b{ display:block;margin-top:4px;font-size:17px;letter-spacing:-.035em;font-variant-numeric:tabular-nums; }
.score-worklog+.score-hero{ margin-top:0;border-top:0; }
.score-main>strong{ white-space:nowrap; }
.score-main>div>span{ max-width:185px; }
.score-evidence{ display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-bottom:1px solid var(--line); }
.score-evidence>div{ min-width:0;padding:12px 8px 12px 10px;border-left:1px solid var(--line); }
.score-evidence>div:first-child{ padding-left:0;border-left:0; }
.score-evidence span{ display:block;color:var(--muted);font-size:11px;line-height:1.35; }
.score-evidence b{ display:block;margin-top:4px;color:var(--forest);font-size:15px;letter-spacing:-.02em;white-space:nowrap; }
.score-visible{ color:var(--muted);font-size:12px;font-weight:800;white-space:nowrap; }
.score-filters{ margin:12px -20px 0;padding:0 20px 10px;display:flex;gap:7px;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--line); }
.score-filters::-webkit-scrollbar{ display:none; }
.score-filters button{ flex:0 0 auto;min-height:34px;padding:0 11px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--muted);font-size:12px;font-weight:800;white-space:nowrap; }
.score-filters button b{ margin-left:3px;font-size:11px;font-weight:900;font-variant-numeric:tabular-nums; }
.score-filters button.is-active{ border-color:var(--forest);background:var(--forest);color:#fff; }
.decision-state{ display:inline-flex;align-items:center;min-height:23px;padding:0 7px;background:var(--lime);color:var(--forest-deep);font-size:11px;font-weight:900; }
.result-row{ display:grid;grid-template-columns:24px minmax(0,1fr) auto;gap:10px;align-items:start;padding:13px 0;border-bottom:1px solid var(--line); }
.result-mark{ width:24px;height:24px;border-radius:0;background:var(--lime-soft);color:var(--forest);display:grid;place-items:center; }
.result-mark .icon{ width:14px;height:14px; }
.result-mark.pending{ background:var(--surface-2);color:var(--muted); }
.result-mark.over{ background:var(--gold-soft);color:var(--gold); }
.result-row h3{ font-size:14px;letter-spacing:-.02em; }
.result-row p{ color:var(--muted);font-size:13px;line-height:1.5;margin-top:4px; }
.result-status{ padding-top:2px; }
.result-status b{ font-size:13px;font-weight:850;color:var(--forest); }
.result-status.is-resolved b{ padding:0;border-radius:0;background:transparent;color:var(--forest); }

/* 6) 프로필 — profile-head(3px 하단 룰) · plan-line · criteria-line · setting-line */
[data-screen="profile"] .profile-head{ margin-top:6px;padding:20px 0 17px;display:grid;grid-template-columns:50px minmax(0,1fr);gap:12px;align-items:center;border-bottom:3px solid var(--ink); }
[data-screen="profile"] .avatar{ width:50px;height:50px;font-size:17px; }
.profile-head .profile-name b{ display:block;margin-top:0;font-size:18px;color:var(--ink); }
.profile-head .profile-name span{ display:block;margin-top:4px;color:var(--muted);font-size:12px;line-height:1.45;overflow:hidden;text-overflow:ellipsis; }
.plan-line{ min-height:62px;padding:11px 0;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line); }
.plan-line div>span{ display:block;color:var(--muted);font-size:12px; }
.plan-line div>b{ display:block;margin-top:3px;font-size:14px; }
.plan-line>button{ min-height:44px;padding:0;border:0;background:transparent;color:var(--forest);font-size:12px;font-weight:850;white-space:nowrap; }
.criteria-list{ margin-top:2px; }
.criteria-line,.setting-line{ width:100%;min-height:58px;padding:10px 0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;border:0;border-radius:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);text-align:left; }
.criteria-line.preference{ padding:10px 0;border:0;border-bottom:1px solid var(--line);background:transparent; }
.criteria-line div>b,.setting-line div>b{ display:block;font-size:13px;font-weight:800; }
.criteria-line div>span,.setting-line div>span{ display:block;margin-top:3px;margin-bottom:0;color:var(--muted);font-size:12px;line-height:1.45; }
.criteria-line>strong{ color:var(--forest);font-size:13px;font-weight:850;text-align:right;line-height:1.4;max-width:170px; }
.setting-line>.icon{ width:15px;height:15px;color:var(--ink-2); }
.setting-line.danger div>b{ color:var(--red); }
[data-screen="profile"] .preference-note{ margin-top:10px; }
[data-screen="profile"] .settings-note{ margin:10px 0 0;padding:0; }

/* 7) 시트 공용(시안 M) — sheet-answer · sheet-row · choice-list · sheet-actions */
.sheet-answer{ margin:15px 0 0;padding:0 0 0 13px;border-left:3px solid var(--forest); }
.sheet-answer small{ display:block;color:var(--forest);font-size:12px;font-weight:900; }
.sheet-answer h3{ margin:6px 0 0;font-size:20px;line-height:1.32;letter-spacing:-.04em; }
.sheet-answer p{ margin:8px 0 0;color:var(--ink-2);font-size:14px;line-height:1.58; }
.sheet-answer.is-danger small{ color:var(--red); }
.sheet-rows{ margin-top:6px; }
.sheet-row{ width:100%;min-height:54px;padding:10px 0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;border:0;border-radius:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);text-align:left; }
.sheet-row div>b{ display:block;font-size:14px;font-weight:800; }
.sheet-row div>span{ display:block;margin-top:3px;color:var(--muted);font-size:12px;line-height:1.5; }
.sheet-row>strong{ color:var(--forest);font-size:13px;font-weight:850;white-space:nowrap; }
.sheet-actions{ display:grid;gap:7px;margin-top:15px; }
.sheet-actions .sheet-logout{ padding:10px 0 2px; }
.choice-list{ margin-top:6px; }
.choice-list button{ width:100%;min-height:48px;padding:9px 0;display:flex;align-items:center;justify-content:space-between;gap:10px;border:0;border-radius:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);font-size:14px;font-weight:800;text-align:left; }
.choice-list button .count{ color:var(--muted);font-size:12px;font-weight:800;white-space:nowrap; }
.choice-list button.is-active{ color:var(--forest); }
.choice-list button.is-active .count{ color:var(--forest); }
.delete-lines{ margin-top:13px; }
.delete-lines span{ display:flex;align-items:center;min-height:44px;border-bottom:1px solid var(--line);color:var(--ink-2);font-size:13px; }
.sheet-row.delete-consent{ cursor:pointer; }
.delete-consent input{ width:18px;height:18px;margin:0;accent-color:var(--red);flex:none; }
.sheet-primary.danger{ border:1px solid var(--red);background:transparent;color:var(--red); }

/* 8) 빈 상태 전 화면 통일 — 지면 언어: 왼쪽 정렬 + 풀폭 forest CTA.
   점선 박스·가운데 정렬(카드 UI 잔재) 폐기. 한 블록 안 정렬 혼재 금지. */
.empty-state{ padding:20px 0;border:0;border-radius:0;background:transparent;text-align:left; }
.empty-state.compact{ padding:16px 0; }
.empty-state .empty-symbol{ margin:0 0 10px; }
.empty-state h3{ font-size:16px; }
.empty-state p{ font-size:13px; }
.empty-state button{ width:100%;min-height:48px;padding:0 16px;margin-top:14px;background:var(--forest);color:#fff;font-size:13px;font-weight:900; }

/* 9) 좁은 폭(≤370) 보정 — 시안 뷰포트(390)보다 좁은 360 계열 */
@media (max-width:370px){
  .score-main>strong { font-size:46px; }
  .saved-row-top { grid-template-columns:78px minmax(0,1fr);gap:11px; }
  .saved-row .listing-thumb { width:78px;height:76px; }
  .criteria-line>strong { max-width:130px; }
}
/* --- T_EDSAVED end --------------------------------------------------------- */

/* --- T_EDREPORT begin (2026-08-03) -----------------------------------------
   보고서 구매(11) · 입찰결정 보고서(12) · 원문 뷰어(14) + 상세 딸린 시트 4개(현장 확인·물건 정보·
   패스 이유·법원 기일 내역)를 design/app-wide-editorial-system-20260803 의 편집 언어로 재구성한
   라운드의 "말미 레이어" — 시트 행·상세 진입부처럼 앞 레이어(T_EDSAVED 공용 시트 어휘)를
   재사용·확장하는 것만 여기 둔다. 화면 본체 CSS 는 프리미엄 레이어 자리(구 카드 스타일)를
   같은 자리에서 대체했다. -------------------------------------------------- */

/* 1) 현장 확인 체크리스트 시트 — hairline 행 + lime-soft 체크 뱃지(읽기 전용, 배선 원래 없음) */
.checklist-rows{ margin-top:4px; }
.checklist-row{ min-height:52px;padding:12px 0;display:grid;grid-template-columns:24px minmax(0,1fr);gap:9px;align-items:start;border-bottom:1px solid var(--line); }
.checklist-row>span{ width:22px;height:22px;display:grid;place-items:center;color:var(--forest);background:var(--lime-soft); }
.checklist-row .icon{ width:13px;height:13px; }
.checklist-row p{ padding-top:2px;font-size:14px;line-height:1.5; }

/* 2) 패스 이유 시트 — choice-list(T_EDSAVED 공용) 행의 우측 chevron */
.choice-list button .icon{ width:15px;height:15px;color:var(--forest);flex:0 0 auto; }

/* 3) 상세 04 최종점검 — 입찰결정 보고서 진입(분석 흐름의 마지막 단) */
.report-offer-entry{ padding:26px 2px 10px;border-top:1px solid var(--line); }

/* 4) 시트 안 sheet-answer 아래 choice-list 가 이어질 때 첫 행 위 여백 */
.sheet-answer + .choice-list{ margin-top:14px; }
/* --- T_EDREPORT end --------------------------------------------------------- */

/* --- T_WAITFAIL begin (2026-08-03) ------------------------------------------
   대표님 지시 6종: 로딩 3프리미티브 · 보고서 준비 중 · 결제 실패 3분기 · 판매하지 않는 물건 ·
   로그인 풀림(401 공통) · 보고서 보관함. 시각 언어 = 이 라운드 공통(각진 지면 · hairline ·
   화면당 forest 풀폭 CTA 1개 · 12px 미만 금지). ------------------------------- */

/* 1) 버튼 안 대기 — 기존 is-busy(흐림뿐)에 최소한의 움직임을 얹는다(모든 is-busy 지점 공통).
   ★.ai-response.is-busy 는 자기 애니메이션(aiThinking)이 더 구체적이라 그대로 이긴다. */
.is-busy{ animation:busy-pulse 1.15s ease-in-out infinite; }
@keyframes busy-pulse { 0%,100%{ opacity:.68; } 50%{ opacity:.4; } }
.busy-dots{ display:inline-flex;gap:4px;margin-left:7px;vertical-align:1px; }
.busy-dots i{ width:4px;height:4px;background:currentColor;opacity:.25;animation:busy-dot 1.05s infinite; }
.busy-dots i:nth-child(2){ animation-delay:.18s; }
.busy-dots i:nth-child(3){ animation-delay:.36s; }
@keyframes busy-dot { 0%,60%,100%{ opacity:.25; } 30%{ opacity:1; } }

/* 2) 전체 화면 대기·실패 레이어 — 문서뷰어(T_DOCINAPP)와 같은 in-device 오버레이 */
.wait-layer{ position:absolute;inset:0;z-index:94;overflow-y:auto;background:var(--paper);animation:screenIn .28s var(--ease) both; }
.wait-layer[hidden]{ display:none; }
.wait-layer-inner{ padding:calc(var(--safe-top) + 22px) 20px 40px; }
.wait-kicker{ font-size:12px;font-weight:900;letter-spacing:.08em;color:var(--forest); }
.wait-title{ margin-top:10px;font-size:24px;line-height:1.3;letter-spacing:-.04em; }
.wait-copy{ margin-top:12px;color:var(--ink-2);font-size:14px;line-height:1.62; }
.wait-money{ padding-bottom:14px;margin-bottom:16px;border-bottom:3px solid var(--ink);font-size:16px;font-weight:900;line-height:1.45; }
/* 진행바 — .splash-track(높이·오버플로) 재사용, 지면 위 색만 보정(연두는 JUPGO AI 전용이라 forest) */
.wait-track{ margin-top:22px;background:var(--line-strong); }
.wait-track i{ width:38%;background:var(--forest);transition:none;animation:wait-slide 1.35s ease-in-out infinite; }
@keyframes wait-slide { 0%{ transform:translateX(-110%); } 100%{ transform:translateX(290%); } }
.wait-skeleton{ display:grid;gap:10px;margin-top:20px; }
.wait-actions{ display:grid;gap:8px;margin-top:24px; }
.wait-actions .wait-primary{ min-height:52px;border-radius:0;background:var(--forest);color:#fff;font-size:14px;font-weight:900; }
.wait-actions .wait-secondary{ min-height:46px;border-radius:0;background:transparent;border:1px solid var(--line-strong);color:var(--ink);font-size:13px;font-weight:800; }
.wait-dismiss{ margin:-6px 0 14px -8px;min-height:40px;padding:0 8px;display:inline-flex;align-items:center;gap:5px;background:transparent;color:var(--muted);font-size:13px;font-weight:800; }
.wait-dismiss .icon{ width:16px;height:16px; }
.report-wait-body{ padding:18px 0 8px; }   /* report 화면 안 재열람 대기 — .screen 패딩 위에 얹힌다 */

/* 3) 판매하지 않는 물건 — report-offer 준비상태 구획 안, 서버 문구 정본(notice + blocks[].reason) */
.report-blocks{ margin-top:16px;border-top:3px solid var(--ink);padding-top:14px; }
.report-blocks b{ display:block;font-size:15px;line-height:1.5; }
.report-blocks ul{ margin:6px 0 0;padding:0;list-style:none; }
.report-blocks li{ position:relative;padding:9px 0 9px 14px;border-bottom:1px solid var(--line);color:var(--ink-2);font-size:13px;line-height:1.55; }
.report-blocks li::before{ content:"";position:absolute;left:0;top:15px;width:5px;height:5px;background:var(--red); }
.report-blocks .report-blocks-exit{ margin-top:12px;font-size:13px;color:var(--muted);line-height:1.55; }
.report-purchase-bar button.is-locked{ background:var(--surface-2);color:var(--muted);pointer-events:none; }
.report-purchase-bar button.is-locked .icon{ display:none; }
.report-readiness .readiness-state{ white-space:nowrap; }   /* "확인 중"·"판매하지 않음"이 두 줄로 꺾이지 않게 */
.report-readiness.is-unavailable .readiness-state{ background:transparent;border:1px solid var(--red);color:var(--red); }

/* 4) 보고서 보관함 — hairline 행 목록(saved 목록과 같은 어휘) */
.report-lib-list{ margin-top:2px; }
.report-lib-row{ width:100%;display:grid;gap:5px;padding:15px 0;border:0;border-radius:0;border-bottom:1px solid var(--line);background:transparent;text-align:left;color:var(--ink); }
.report-lib-row small{ color:var(--forest);font-size:12px;font-weight:850; }
.report-lib-row.is-archived small{ color:var(--muted); }
.report-lib-row h3{ font-size:15px;line-height:1.4; }
.report-lib-row p{ color:var(--ink-2);font-size:13px;line-height:1.5; }
.report-lib-row .report-lib-open{ margin-top:3px;display:flex;align-items:center;justify-content:space-between;color:var(--forest);font-size:13px;font-weight:850; }
.report-lib-row.is-archived .report-lib-open{ color:var(--muted); }
.report-lib-skeleton{ display:grid;gap:10px;padding-top:8px; }
/* --- T_WAITFAIL end --------------------------------------------------------- */

/* --- T_TOPBARSLOT begin (2026-08-03) ---
   상단바는 `grid-template-columns:44px 1fr auto` 다. 뒤로가기를 [hidden] 으로 감추면
   **그리드 아이템 자체가 사라져** 제목이 44px 짜리 1열로 밀리고 부제가 세로로 눕는다
   (맞춤 기준 설정 화면에서 실측 — 제목 폭 44px · 390/360 동일).
   자리는 남기고 보이기만 없앤다. visibility:hidden 은 opacity:0 과 달리 터치도 먹지 않는다. */
.detail-topbar > .icon-btn[hidden]{ display: grid !important; visibility: hidden; }
/* --- T_TOPBARSLOT end --- */

/* --- T_AUDITFIX begin (2026-08-08 배포 전 전수 점검) ---------------------------
   신규·복원 컴포넌트 스타일. 시각 언어 준수: 카드·그림자 없음 · hairline 구획 · 각진 모서리 · 12px 하한. */
/* (B41) 버튼을 길게 눌러도 텍스트가 선택되지 않는다 — 입력 필드는 제외. */
button, .listing-row, .bottom-nav, summary{ -webkit-user-select:none; user-select:none; }
/* (A25) 깔때기 4단계 — 이름 있는 셀. 기존 .funnel-mini 화살표(i)는 그대로 쓴다. */
.funnel-named{ flex-wrap:wrap; row-gap:6px; }
.funnel-named .funnel-cell{ display:grid;gap:2px;justify-items:center; }
.funnel-named .funnel-cell small{ color:var(--muted);font-size:12px;font-weight:800;white-space:nowrap; }
.funnel-named .funnel-cell b{ min-width:34px; }
/* (C14) 홈 대표 카드 사건번호 줄 — 목록·상세와 같은 case-chip 표기를 담는다.
   .pick-copy p(0,1,1)보다 특이도를 높여 덮는다(!important 금지). */
.pick-copy p.pick-case-line{ margin:5px 0 0;color:var(--ink-2);font-size:12px;font-variant-numeric:tabular-nums; }
/* (B38) 상세 기일 이력 — 접힘 요약 행은 hairline 로만 구획한다. */
.detail-bidhist .bidhist-details summary{ list-style:none;display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:48px;padding:11px 0;border-top:1px solid var(--line);color:var(--ink);font-size:13px;font-weight:850;cursor:pointer; }
.detail-bidhist .bidhist-details summary::-webkit-details-marker{ display:none; }
.detail-bidhist .bidhist-details summary .icon{ width:17px;height:17px;color:var(--muted);transition:rotate .18s; }
.detail-bidhist .bidhist-details[open] summary .icon{ rotate:90deg; }
.detail-bidhist .bidhist-alert h3{ font-size:13px; }
/* (C01) 보고서 03 취득세 입력 — 좌측 3px forest 보더(시트 answer 와 같은 언어). */
.report-inputs-ask{ margin-top:14px;padding:12px 0 12px 14px;border-left:3px solid var(--forest);background:transparent; }
.report-inputs-ask > b{ display:block;font-size:13px;letter-spacing:-.02em; }
.report-inputs-ask > p{ margin-top:5px;color:var(--muted);font-size:12px;line-height:1.55; }
.report-inputs-choices{ display:flex;flex-wrap:wrap;gap:8px;margin-top:10px; }
.report-inputs-choices button{ min-height:40px;padding:0 14px;border:1px solid var(--line-strong);border-radius:0;background:#fff;color:var(--ink);font-size:13px;font-weight:850; }
.report-inputs-choices button:disabled{ opacity:.55; }
/* (B11) 시트 로그아웃이 앵커→버튼이 되면서 블록 중앙정렬 폭을 명시한다. */
.sheet-actions button.sheet-logout{ width:100%; }
/* (T_PAIDJOIN 연간권) 플랜 선택 — hairline 행 · 선택은 forest 보더(카드·그림자 금지). */
.plan-choices{ display:grid;gap:8px;margin:4px 0 12px; }
.plan-choices button{ display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:52px;padding:0 14px;border:1px solid var(--line-strong);border-radius:0;background:#fff;text-align:left; }
.plan-choices button.is-active{ border:2px solid var(--forest);padding:0 13px; }
.plan-choices button b{ font-size:13px;letter-spacing:-.02em; }
.plan-choices button span{ color:var(--ink-2);font-size:12px;font-weight:800;white-space:nowrap; }
.plan-choices button.is-active b{ color:var(--forest); }
/* --- T_PLANSCOPE (2026-08-17 대표님 "어느 서비스 가능한지 명시해") --- 등급 이름·가격은
   윗줄에 마주보게, **무엇이 되는지는 아랫줄**에. 한 줄에 셋을 넣으면 375px 에서 넘친다
   (그래서 종전엔 설명 자체가 없었다 — 자리를 바꿔 넣지, 설명을 없애지 않는다). */
.plan-choices button{ display:block;padding:11px 14px; }
.plan-choices button.is-active{ padding:10px 13px; }
.plan-line{ display:flex;align-items:baseline;justify-content:space-between;gap:10px; }
.plan-scope{ display:block;margin-top:4px;color:var(--muted);font-size:12px;font-style:normal;font-weight:700;line-height:1.45; }
.plan-choices button.is-active .plan-scope{ color:var(--ink-2); }
/* --- T_AUDITFIX end -------------------------------------------------------- */

/* --- T_IAPREWIRE begin (2026-08-13) ----------------------------------------
   앱 전용 자동갱신 고지 + 구매 복원. 새 언어를 만들지 않고 로그인 화면의 고지(.auth-terms)와
   같은 문법을 쓴다 — 작은 회색 글에 forest 링크. 페이월 안에서만 쓴다. */
.iap-legal{ margin:10px 0 0;color:var(--muted);font-size:12px;line-height:1.5;text-align:center; }
.iap-legal a{ color:var(--forest);font-weight:800;text-underline-offset:2px; }
.iap-legal button{ color:var(--forest);font-weight:800;background:none;border:0;padding:0;
  font-size:inherit;font-family:inherit;text-decoration:underline;text-underline-offset:2px; }

/* --- T_TAPTARGET begin --- (2026-08-20 코덱스 접근성 지적 · 결제·로그인 경로 한정)
   iOS HIG 44pt · Android 48dp 가 최소 터치 영역이다. 실측으로 미달인 것만 개별로 키운다.
   🔴**일괄 승격은 하지 않는다** — 폰트 "15px 이상 70%" 수치를 쫓아 423건을 한꺼번에 올렸다가
     모바일 레이아웃이 깨져 롤백한 전례가 있다(글자만 키우고 자리는 그대로 뒀다).
   ★인라인 링크는 **크기를 키우지 않는다** — 문단이 깨진다. 가상요소로 **터치 영역만** 넓힌다
     (좌우는 텍스트 폭 그대로라 옆 링크와 겹치지 않는다). */
.iap-legal a, .iap-legal button{ position:relative; display:inline-block; }
.iap-legal a::before, .iap-legal button::before{
  content:""; position:absolute; left:0; right:0; top:50%;
  transform:translateY(-50%); height:44px;
}
/* --- T_TAPTARGET end --- */

/* --- T_IAPREWIRE end -------------------------------------------------------- */

/* --- T_DETAILHOME2 begin (2026-08-09) --------------------------------------
   상세 상단을 HOME 과 같은 컴포넌트 문법으로 다시 짠다.
   HOME 정본: paper 지면 · 3px ink 시작선 · 사진 위 판정/D-day · 물건명 · AI 판단 스트립 ·
   hairline 정보 행 · 하나의 초록 주행동. 기존 데이터 훅과 AI/담기/패스 동작은 유지한다. */
.detail-page{ background:var(--paper); }
.detail-page .detail-topbar{
  background:var(--paper);
  backdrop-filter:none;
}

/* 상단 담기 아이콘은 본문용 .detail-save-control(64px 카드) 규칙을 상속하지 않는다. */
.detail-page .detail-topbar .detail-save-control{
  width:44px;
  height:44px;
  min-height:44px;
  margin:0;
  padding:0;
  display:grid;
  grid-template-columns:1fr;
  gap:0;
  place-items:center;
  border:0;
  background:transparent;
  text-align:center;
}
.detail-page .detail-topbar .detail-save-control.is-saved{ background:var(--forest-soft); }

/* HOME .today-pick 과 동일한 시작선/사진 비율. */
.detail-page .detail-today-pick{
  margin-top:12px;
  padding-top:12px;
  border-top:3px solid var(--ink);
}
.detail-page .detail-today-pick .media-hero{
  height:164px;
  margin:0;
  border:0;
  background:linear-gradient(135deg,#cfd9d0,#899a90);
}
.detail-page .detail-today-pick .media-hero::after{ background:none; }
.detail-page .detail-today-pick .detail-pick-grade{
  position:absolute;
  z-index:4;
  top:12px;
  left:12px;
}
.detail-page .detail-today-pick .pick-dday{
  z-index:4;
  right:12px;
  bottom:12px;
}
.detail-page .detail-today-pick .photo-count{
  top:12px;
  right:12px;
  bottom:auto;
  padding:5px 8px;
  background:rgba(10,24,19,.62);
}
.detail-page .detail-today-pick .photo-dots{
  top:auto;
  bottom:16px;
  left:13px;
}
.detail-page .detail-today-pick .photo-step{ width:34px;height:40px;background:rgba(10,24,19,.42); }

.detail-pick-copy{ padding-top:16px; }
.detail-pick-copy h1{
  margin:6px 0 0;
  font-size:25px;
  line-height:1.25;
  letter-spacing:-.047em;
}
.detail-pick-copy p.pick-case-line{ color:var(--ink-2); }
.detail-pick-copy .detail-pick-summary{
  margin-top:8px;
  color:var(--muted);
  font-size:14px;
  line-height:1.55;
}

/* 큰 흰 카드였던 briefing 을 HOME 카드 내부의 평평한 연속 지면으로 바꾼다. */
.detail-page .detail-today-pick .pick-briefing{
  margin:0;
  padding:0;
  border:0;
  background:transparent;
  overflow:visible;
}
.detail-page .detail-today-pick .pick-briefing::before{ display:none; }
/* T_VERDICTSTACK: 시안(screen-10-detail)은 라벨 한 줄 + 결론 전체 폭 큰 글자(23px)다.
   좌우 한 행(max-width:64%)에 욱여넣으니 375px 에서 "오늘은 이 / 물건을 건너뛰세요" 로
   꺾였다 — 대표님 지적 "글자가 밀려 2칸 차지"의 근원. 세로 스택으로 되돌린다. */
.detail-decision-strip{ margin-top:14px;display:block; }
.detail-decision-strip>b{ display:block; }
.detail-decision-strip strong{
  display:block;
  max-width:none;
  margin-top:8px;
  color:var(--forest);
  font-size:23px;
  line-height:1.3;
  text-align:left;
  text-wrap:balance;
}
.pick-briefing[data-decision-tone="hold"] .detail-decision-strip strong{ color:#7a531e; }
.pick-briefing[data-decision-tone="bad"] .detail-decision-strip strong{ color:var(--red); }
.detail-page .pick-briefing .decision-notreco{
  margin:12px 0 0;
  padding:9px 0 9px 12px;
  border:0;
  border-left:3px solid var(--red);
  color:var(--red);
  background:transparent;
  font-size:12px;
  font-weight:800;
}

/* 핵심 숫자 = HOME fact-line 밀도. 값이 길어도 360px 에서 화면 밖으로 밀지 않는다. */
.detail-page .detail-today-pick .key-numbers{ margin-top:0; }
.detail-page .detail-today-pick .key-row{
  min-height:58px;
  padding:10px 0;
  gap:12px;
  border-bottom:1px solid var(--line);
}
.detail-page .detail-today-pick .key-row div b{ font-size:13px; }
.detail-page .detail-today-pick .key-row div span{ font-size:12px;line-height:1.45; }
.detail-page .detail-today-pick .key-row>strong{
  max-width:none;
  color:var(--forest);
  font-size:16px;
  line-height:1.3;
  white-space:nowrap;
  text-align:right;
}
.detail-page .detail-today-pick .key-row.is-reference>strong{ color:var(--ink-2); }
.detail-page .detail-today-pick .key-row.is-stop>strong{ color:var(--red); }
.detail-page .detail-today-pick .unlock-one{
  min-height:50px;
  margin-top:14px;
  box-shadow:none;
}

/* 가격/권리/위험도 HOME 의 '범주 | 내용 | 상태' 3열 hairline 행으로. */
.detail-page .detail-fact-lines{
  display:grid;
  gap:0;
  margin-top:10px;
}
.detail-page .detail-fact-lines article,
.detail-page .detail-fact-lines article:first-child{
  min-height:62px;
  padding:10px 0;
  display:grid;
  grid-template-columns:58px minmax(0,1fr) auto;
  gap:10px;
  align-items:center;
  border:0;
  border-bottom:1px solid var(--line);
  background:transparent;
}
.detail-page .detail-fact-lines article:first-child{ border-top:0; }
.detail-fact-label{ color:var(--muted);font-size:12px;font-weight:850; }
.detail-page .detail-fact-lines article>div{ min-width:0; }
.detail-page .detail-fact-lines article>div>small{
  color:var(--ink);
  font-size:13px;
  font-weight:850;
  line-height:1.4;
}
.detail-page .detail-fact-lines article>div>p{
  margin-top:3px;
  color:var(--muted);
  font-size:12px;
  font-weight:650;
  line-height:1.45;
}
.detail-page .detail-fact-lines article.has-price-metrics{ align-items:start; }
.detail-page .detail-price-metrics{
  grid-column:2/-1;
  display:grid;
  margin-top:2px;
  border-top:1px solid var(--line);
}
.detail-page .detail-price-metric{
  min-height:37px;
  padding:8px 0;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:8px;
  align-items:center;
  border-bottom:1px solid var(--line);
}
.detail-page .detail-price-metric:last-child{ border-bottom:0; }
.detail-page .detail-price-metric-label{ color:var(--ink-2);font-size:12px;font-weight:750;line-height:1.45; }
.detail-page .detail-price-metric-value{ min-width:0;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:3px 5px;text-align:right; }
.detail-page .detail-price-metric-value>b{ color:var(--ink);font-size:13px;font-weight:900;line-height:1.4; }
.detail-page .detail-price-metric.is-good .detail-price-metric-value>b{ color:var(--forest); }
.detail-page .detail-price-metric-value small{ color:var(--ink-2);font-size:11px;font-weight:650;line-height:1.4; }
.detail-page .detail-price-metric-value small i{ margin-right:4px;color:var(--forest);font-style:normal; }
.detail-page .detail-price-metric-value em{ color:var(--muted);font-size:11px;font-style:normal;font-weight:700;line-height:1.4;white-space:nowrap; }

/* --- T_APPRPHISTORY begin --- 핵심 검토 뒤, 가격 계산 근거 바로 위의 동일단지 실거래 차트. */
.detail-page .detail-price-history{
  width:100%;
  min-width:0;
  margin-top:18px;
  padding:14px 0 5px;
  border-top:1px solid var(--line);
  overflow-anchor:none;
}
.app-price-history-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
}
.app-price-history-head small{
  display:block;
  color:var(--forest);
  font-size:10px;
  font-weight:850;
  line-height:1.35;
  letter-spacing:.01em;
}
.app-price-history-head h3{
  margin-top:2px;
  color:var(--ink);
  font-size:15px;
  font-weight:900;
  line-height:1.35;
  letter-spacing:-.02em;
}
.app-price-history-head>span{
  max-width:46%;
  padding:4px 8px;
  border-radius:999px;
  background:var(--forest-soft);
  color:var(--forest);
  font-size:10px;
  font-weight:850;
  line-height:1.35;
  text-align:right;
  white-space:nowrap;
}
.app-price-history-head>span.is-working{
  display:inline-flex;
  align-items:center;
  gap:3px;
  color:#7a531e;
  background:#fff3dc;
}
.app-price-history-head>span.is-working i{
  width:3px;
  height:3px;
  border-radius:50%;
  background:currentColor;
  animation:app-history-dot 1s ease-in-out infinite;
}
.app-price-history-head>span.is-working i:nth-child(2){ animation-delay:.14s; }
.app-price-history-head>span.is-working i:nth-child(3){ animation-delay:.28s; }
.app-price-history-tabs{
  margin-top:12px;
  padding:3px;
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:3px;
  border-radius:10px;
  background:rgba(22,45,36,.055);
}
.app-price-history-tabs button{
  min-height:31px;
  padding:0;
  border:0;
  border-radius:7px;
  color:var(--muted);
  background:transparent;
  font-size:11px;
  font-weight:850;
  touch-action:manipulation;
}
.app-price-history-tabs button.is-on{
  color:var(--forest);
  background:#fff;
  box-shadow:0 1px 5px rgba(16,38,30,.11);
}
.app-price-history-loading{
  margin-top:12px;
  padding:13px;
  overflow:hidden;
  border:1px solid rgba(11,95,71,.12);
  border-radius:13px;
  background:linear-gradient(180deg,rgba(250,253,250,.98),rgba(241,247,243,.92));
}
.app-price-history-loading-copy{
  position:relative;
  min-height:32px;
  padding-left:42px;
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.app-price-history-loading-copy::before{
  content:"";
  position:absolute;
  left:2px;
  top:1px;
  width:26px;
  height:26px;
  border:2px solid rgba(11,95,71,.15);
  border-top-color:var(--forest);
  border-radius:50%;
  animation:app-history-spin .85s linear infinite;
}
.app-price-history-loading-copy b{ color:var(--ink);font-size:12px;font-weight:900;line-height:1.4; }
.app-price-history-loading-copy span{ margin-top:2px;color:var(--muted);font-size:10px;font-weight:650;line-height:1.4; }
.app-price-history-loading-chart{
  position:relative;
  height:106px;
  margin-top:12px;
  overflow:hidden;
}
.app-price-history-loading-chart>i{
  position:absolute;
  left:0;
  right:0;
  height:1px;
  background:rgba(22,45,36,.08);
}
.app-price-history-loading-chart>i:nth-child(1){ top:8px; }
.app-price-history-loading-chart>i:nth-child(2){ top:36px; }
.app-price-history-loading-chart>i:nth-child(3){ top:64px; }
.app-price-history-loading-chart>i:nth-child(4){ top:92px; }
.app-price-history-loading-chart svg{ position:absolute;inset:4px 0 0;width:100%;height:94px; }
.app-price-history-loading-chart path{
  fill:none;
  stroke:rgba(11,95,71,.48);
  stroke-width:2.4;
  stroke-linecap:round;
  stroke-dasharray:420;
  stroke-dashoffset:420;
  animation:app-history-trace 1.75s cubic-bezier(.35,.02,.2,1) infinite;
}
.app-price-history-loading-track{
  height:3px;
  overflow:hidden;
  border-radius:99px;
  background:rgba(11,95,71,.09);
}
.app-price-history-loading-track i{
  display:block;
  width:38%;
  height:100%;
  border-radius:inherit;
  background:var(--forest);
  animation:app-history-track 1.25s ease-in-out infinite;
}
.app-price-history-chart-wrap{ margin-top:9px; }
.app-price-history-legend{
  min-height:20px;
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:10px;
  color:var(--muted);
  font-size:9px;
  font-weight:750;
}
.app-price-history-legend span{ display:inline-flex;align-items:center;gap:4px;white-space:nowrap; }
.app-price-history-legend i{ width:13px;height:6px;display:inline-block;border-radius:4px; }
.app-price-history-legend i.is-band{ background:rgba(20,128,94,.14); }
.app-price-history-legend i.is-line{ height:2px;background:var(--forest); }
.app-price-history-legend i.is-deal{
  width:7px;
  height:7px;
  border-radius:50%;
  background:#9b55cf;
  box-shadow:0 0 0 2px rgba(155,85,207,.12);
}
.app-price-history-chart{ display:block;width:100%;height:auto;overflow:visible; }
.app-price-history-grid{ stroke:rgba(22,45,36,.10);stroke-width:1;stroke-dasharray:2.5 4; }
.app-price-history-axis,.app-price-history-month{
  fill:var(--muted);
  /* --- T_CHARTREAD --- (2026-08-13) 9px -> 11px. 이 라벨은 **금액**("4.8억"·"최근 5.2억")인데
     9px 이라 모바일에서 읽히지 않았다. 대표님이 실제로 불만을 말한 크기대가 6~9px 이다.
     ★폰트를 키우면 겹친다 - 그래서 375px 실기(iframe)에서 9/10/11/12px 을 다 재고 올렸다:
       라벨 10개 전부 **겹침 0 · SVG 밖 넘침 0**(12px 까지 여유). 위계를 지키려 11px 로 멈춘다. */
  font-size:11px;
  font-weight:750;
  font-variant-numeric:tabular-nums;
}
.app-price-history-month{ fill:var(--faint);font-weight:650; }
.app-price-history-band{ fill:rgba(20,128,94,.12);stroke:none; }
.app-price-history-line{
  fill:none;
  stroke:var(--forest);
  stroke-width:2.5;
  stroke-linecap:round;
  stroke-linejoin:round;
  vector-effect:non-scaling-stroke;
}
.app-price-history-point{ outline:none;cursor:pointer;touch-action:manipulation; }
.app-price-history-hit{ fill:transparent;stroke:none;pointer-events:all; }
.app-price-history-dot{
  fill:#fff;
  stroke:var(--forest);
  stroke-width:1.8;
  vector-effect:non-scaling-stroke;
  transition:fill .14s ease,stroke-width .14s ease;
}
.app-price-history-point:focus .app-price-history-dot,
.app-price-history-point.is-active .app-price-history-dot{
  fill:var(--forest);
  stroke:#fff;
  stroke-width:3;
}
.app-price-history-deal{ cursor:pointer;touch-action:manipulation; }
.app-price-history-deal-hit{ fill:transparent;stroke:none;pointer-events:all; }
.app-price-history-deal-dot{
  fill:#a45bd6;
  stroke:rgba(255,255,255,.9);
  stroke-width:.8;
  vector-effect:non-scaling-stroke;
  transition:fill .14s ease,stroke-width .14s ease,filter .14s ease;
}
.app-price-history-deal.is-active .app-price-history-deal-dot{
  fill:#6f2ca0;
  stroke:#fff;
  stroke-width:2.3;
  filter:drop-shadow(0 1px 2px rgba(73,28,104,.28));
}
.app-price-history-latest line{ stroke:rgba(11,95,71,.5);stroke-width:1;stroke-dasharray:2 2; }
.app-price-history-latest rect{ fill:var(--ink);filter:drop-shadow(0 3px 4px rgba(15,37,29,.18)); }
.app-price-history-latest text{ fill:#fff;font-size:9px;font-weight:850;font-variant-numeric:tabular-nums; }
.app-price-history-readout{
  margin-top:5px;
  overflow:hidden;
  border:1px solid rgba(11,95,71,.13);
  border-radius:11px;
  background:#fff;
  box-shadow:0 5px 16px rgba(20,50,39,.055);
}
.app-price-history-readout-head{
  min-width:0;
  padding:7px 10px 6px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  border-bottom:1px solid rgba(22,45,36,.07);
  background:#fbfcfb;
}
.app-price-history-readout-head span{ color:var(--muted);font-size:9px;font-weight:750;line-height:1.35; }
.app-price-history-readout-head em{
  color:var(--forest);
  font-size:9px;
  font-style:normal;
  font-weight:850;
  line-height:1.35;
  white-space:nowrap;
}
.app-price-history-readout dl{ min-width:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr)); }
.app-price-history-readout dl>div{
  min-width:0;
  padding:7px 10px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:7px;
}
.app-price-history-readout dl>div.is-primary{
  grid-column:1/-1;
  padding-top:8px;
  padding-bottom:8px;
  border-bottom:1px solid rgba(22,45,36,.07);
}
.app-price-history-readout dl>div.is-low{ border-left:1px solid rgba(22,45,36,.07); }
.app-price-history-readout dt{ color:var(--faint);font-size:9px;font-weight:700;white-space:nowrap; }
.app-price-history-readout dd{
  min-width:0;
  color:var(--ink-2);
  text-align:right;
  font-size:9.5px;
  font-weight:850;
  line-height:1.35;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}
.app-price-history-readout .is-primary dt{ color:var(--forest);font-weight:850; }
.app-price-history-readout .is-primary dd{
  color:var(--forest);
  font-size:13px;
  font-weight:900;
  letter-spacing:-.025em;
}
.app-price-history-readout .is-high dt{ color:#c84e43; }
.app-price-history-readout .is-low dt{ color:#3976b9; }
.app-price-history-readout.is-deal .is-primary dt,
.app-price-history-readout.is-deal .is-primary dd{ color:#7734a8; }
.app-price-history-backfill{
  margin-top:9px;
  padding:10px 11px;
  border-radius:10px;
  background:#fff9ee;
}
.app-price-history-backfill>div{ display:flex;align-items:center;justify-content:space-between;gap:8px; }
.app-price-history-backfill b{ color:#7a531e;font-size:10px;font-weight:850; }
.app-price-history-backfill span{ color:#9a6b29;font-size:9px;font-weight:800;white-space:nowrap; }
.app-price-history-backfill>i{
  height:3px;
  margin-top:7px;
  display:block;
  overflow:hidden;
  border-radius:99px;
  background:rgba(188,116,25,.14);
}
.app-price-history-backfill>i em{ display:block;height:100%;border-radius:inherit;background:#bd7b23;transition:width .3s ease; }
.app-price-history-backfill p{ margin-top:6px;color:#87653a;font-size:9px;line-height:1.45; }
.app-price-history-note{
  margin-top:9px;
  color:var(--muted);
  font-size:9px;
  font-weight:650;
  line-height:1.5;
}
.app-price-history-no-points{
  min-height:96px;
  margin-top:10px;
  padding:18px;
  display:grid;
  place-items:center;
  border:1px dashed var(--line-2);
  border-radius:10px;
  color:var(--muted);
  text-align:center;
  font-size:11px;
  line-height:1.5;
}
.app-price-history-state{
  min-height:82px;
  margin-top:11px;
  padding:12px;
  display:grid;
  grid-template-columns:30px minmax(0,1fr) auto;
  align-items:center;
  gap:9px;
  border:1px solid var(--line);
  border-radius:11px;
  background:rgba(255,255,255,.7);
}
.app-price-history-state>span{
  width:30px;
  height:30px;
  display:grid;
  place-items:center;
  border-radius:9px;
  color:var(--forest);
  background:var(--forest-soft);
}
.app-price-history-state>span .icon{ width:16px;height:16px; }
.app-price-history-state b{ display:block;color:var(--ink);font-size:11px;font-weight:850;line-height:1.45; }
.app-price-history-state p{ margin-top:3px;color:var(--muted);font-size:9px;line-height:1.45; }
.app-price-history-state button{
  min-height:34px;
  padding:0 8px;
  border:1px solid var(--line-2);
  border-radius:8px;
  color:var(--forest);
  background:#fff;
  font-size:9px;
  font-weight:850;
}
.app-price-history-state.is-locked>span{ color:#7a531e;background:#fff3dc; }
@keyframes app-history-spin{ to{ transform:rotate(360deg); } }
@keyframes app-history-dot{ 0%,70%,100%{ opacity:.28;transform:translateY(0); }35%{ opacity:1;transform:translateY(-2px); } }
@keyframes app-history-trace{ 0%{ stroke-dashoffset:420;opacity:.25; }55%,82%{ stroke-dashoffset:0;opacity:1; }100%{ stroke-dashoffset:0;opacity:.18; } }
@keyframes app-history-track{ 0%{ transform:translateX(-110%); }55%{ transform:translateX(110%); }100%{ transform:translateX(260%); } }

/* --- T_POOLQ begin --- 최초 응답 전에는 결과가 들어설 골격을 먼저 그린다.
   스켈레톤은 실제 행(.listing-row)의 자리·크기를 그대로 써 도착할 때 레이아웃이 튀지 않는다. */
.listing-row.is-skeleton{ pointer-events:none;cursor:default; }
.listing-row.is-skeleton .listing-thumb{ background:rgba(22,45,36,.07); }
.sk-bar{ position:relative;display:block;height:9px;overflow:hidden;border-radius:99px;background:rgba(22,45,36,.085); }
.sk-bar+.sk-bar{ margin-top:7px; }
.sk-bar.is-tag{ width:34%;height:8px; }
.sk-bar.is-title{ width:72%;height:13px; }
.sk-bar.is-meta{ width:52%; }
.sk-bar::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.9),transparent);
  animation:search-sheen 1.15s ease-in-out infinite;
}
@keyframes search-sheen{ 0%{ transform:translateX(-100%); }100%{ transform:translateX(100%); } }

/* --- T_SCROLLTOP --- 우측 하단 '맨 위로'. 하단 탭바(높이 66 + bottom 7 + safe) 바로 위에 앉는다.
   ★.device 가 position:relative 라 absolute 기준이 목업 안이다 — fixed 로 두면 데스크톱
     미리보기에서 화면 밖으로 나간다. */
.scroll-top{
  position:absolute;z-index:16;
  right:16px;bottom:calc(84px + var(--safe-bottom));
  width:44px;height:44px;display:grid;place-items:center;
  border:1px solid rgba(11,95,71,.16);border-radius:50%;
  background:rgba(255,255,255,.95);
  box-shadow:0 6px 18px rgba(15,42,32,.15);
  color:var(--forest);cursor:pointer;
  opacity:0;transform:translateY(10px) scale(.92);pointer-events:none;
  transition:opacity .2s ease,transform .2s ease;
}
.scroll-top.is-on{ opacity:1;transform:none;pointer-events:auto; }
.scroll-top .icon{ width:20px;height:20px;stroke-width:2.4; }
.scroll-top:active{ transform:scale(.93); }
@media(prefers-reduced-motion:reduce){ .scroll-top{ transition:none; } }

/* 수신 중일 때만 보이는 한 줄 상태. 하단 진행선 없이 큰 결과 건수가 수신량대로 변한다. */
.search-progress{ min-height:30px;margin:5px 0 3px;display:flex;align-items:center;gap:7px;color:var(--muted); }
.search-progress-spinner{ width:16px;height:16px;flex:none;border:2px solid rgba(11,95,71,.15);border-top-color:var(--forest);border-radius:50%;animation:app-history-spin .85s linear infinite; }
.search-progress-text{ color:var(--muted);font-size:12px;font-weight:700;line-height:1.4;letter-spacing:-.01em; }
/* T_POOLAUTO: 받는 중일 때만 도는 점 세 개(가격 흐름 로딩과 같은 keyframes). */
.search-progress-dots{ display:none;align-items:center;gap:3px; }
.search-progress.is-working .search-progress-dots{ display:inline-flex; }
.search-progress-dots>i{ width:3px;height:3px;border-radius:50%;background:var(--forest);opacity:.28;animation:app-history-dot 1.05s ease-in-out infinite; }
.search-progress-dots>i:nth-child(2){ animation-delay:.14s; }
.search-progress-dots>i:nth-child(3){ animation-delay:.28s; }
/* 재검색(조건 변경) — 이미 보고 있던 목록을 **지우지 않는다.** 지우면 스크롤과 맥락이 함께 사라진다. */
.listing-list.is-refreshing{ opacity:.4;transition:opacity .18s ease;pointer-events:none; }
.search-refresh-bar{ height:3px;margin:8px 0 2px;overflow:hidden;border-radius:99px;background:rgba(11,95,71,.09); }
.search-refresh-bar i{ display:block;width:38%;height:100%;border-radius:inherit;background:var(--forest);animation:app-history-track 1.25s ease-in-out infinite; }
@media(prefers-reduced-motion:reduce){
  .sk-bar::after,.search-refresh-bar i,.search-progress-spinner,
  .search-progress-dots>i{ animation:none; }
}
/* --- T_POOLQ end --- */

@media(max-width:370px){
  .app-price-history-head>span{ max-width:42%; }
  .app-price-history-legend{ gap:7px;font-size:8.5px; }
  .app-price-history-readout dl>div{ padding-left:8px;padding-right:8px; }
  .app-price-history-readout dd{ font-size:9px; }
}
@media(prefers-reduced-motion:reduce){
  .app-price-history-head>span.is-working i,
  .app-price-history-loading-copy::before,
  .app-price-history-loading-chart path,
  .app-price-history-loading-track i{ animation:none; }
  .app-price-history-loading-chart path{ stroke-dashoffset:0; }
}
/* --- T_APPRPHISTORY end --- */
.detail-page .detail-fact-lines .pick-fact-icon{
  width:26px;
  height:26px;
  color:var(--forest);
  background:transparent;
}
.detail-page .detail-fact-lines .pick-fact-link{
  min-height:36px;
  margin:0;
  padding:0 2px;
  color:var(--forest);
  font-size:12px;
  font-weight:900;
  text-decoration:none;
  white-space:nowrap;
}

/* HOME 의 selection-audit 패턴을 계산 근거에 재사용한다. */
.detail-page .detail-calculation-audit{ margin-top:18px; }
.detail-page .detail-calculation-audit>summary{ min-height:52px; }
.detail-page .detail-calculation-audit>summary>span{ min-width:0; }
.detail-page .detail-calculation-audit>summary small{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
}
.detail-calculation-body{ padding:0 0 4px; }
.detail-page .detail-calculation-body .basis-lines{
  margin:0;
  padding:14px 0 0;
  border:0;
}
.detail-page .detail-calculation-body .basis-line{
  min-height:46px;
  padding:9px 0;
  grid-template-columns:96px minmax(0,1fr);
}
.detail-page .detail-calculation-body .basis-line span{ font-size:12px;line-height:1.5; }
.detail-page .detail-calculation-body .loan-note{ margin:11px 0 2px; }

/* T_APPDETAILORDER: 경매 이력은 핵심 수치의 '준비할 현금' 바로 다음에서 읽는다.
   후반 detail-analysis-flow 밖으로 이동했으므로 같은 섹션 구분선을 여기서 명시한다. */
.detail-page .detail-key-bidhist{
  margin:18px 0 0;
  padding:15px 0 3px;
  border-top:3px solid var(--ink);
}
.detail-page .detail-key-bidhist .flow-heading h2{
  margin-top:7px;
  font-size:21px;
  line-height:1.28;
  letter-spacing:-.045em;
}

.detail-page .detail-today-pick .source-line{ margin-top:16px; }
.detail-page .detail-today-pick .evidence-source-hero{ margin:18px 0 20px; }
.detail-page .detail-today-pick .prompt-area{ margin-top:17px; }
.detail-page .detail-today-pick .pick-feedback{ margin-top:14px; }
.detail-page .detail-today-pick .pick-feedback .pick-feedback-action{ min-height:50px; }
.detail-page .detail-analysis-flow .detail-interest-signal{ margin-top:26px;padding:16px 0; }

/* 법원 기일 내역은 HOME section-rule 과 같은 한 번의 굵은 선으로 바로 이어진다. */
.detail-page .detail-analysis-flow{ margin-top:28px; }
.detail-page .detail-analysis-flow>section{ margin-top:26px; }
.detail-page .detail-analysis-flow>section:first-child{ margin-top:0; }
.detail-page .detail-analysis-flow .flow-heading h2{ font-size:22px; }

/* --- T_REPORTCONVERT begin --- 상세의 마지막을 9,900원 입찰보고서 구매 전환면으로 쓴다.
   글자 발광 없이 대비·결과·단일 CTA만으로 위계를 만든다(T_APPTEXTCLEAR 유지). */
.detail-page .detail-analysis-flow>.report-conversion{
  margin:32px 0 0;
  padding:22px 18px 18px;
  border:0;
  background:var(--forest-deep);
  color:#fff;
}
.report-conversion-label{ display:flex;align-items:center;justify-content:space-between;gap:12px; }
.report-conversion-label small{ color:var(--lime);font-size:11px;font-weight:900;letter-spacing:.08em; }
.report-conversion-label strong{ padding:5px 8px;border:1px solid rgba(255,255,255,.22);color:#fff;font-size:11px;font-weight:900;white-space:nowrap; }
.report-conversion h2{ margin-top:14px;font-size:24px;line-height:1.28;letter-spacing:-.05em; }
.report-conversion-copy{ margin-top:10px;color:rgba(255,255,255,.75);font-size:13px;line-height:1.6; }
.report-conversion-results{ margin-top:17px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid rgba(255,255,255,.18);border-bottom:1px solid rgba(255,255,255,.18); }
.report-conversion-results span{ min-width:0;padding:11px 5px;color:#fff;font-size:11px;font-weight:850;line-height:1.35;text-align:center;border-left:1px solid rgba(255,255,255,.14); }
.report-conversion-results span:first-child{ border-left:0; }
.report-conversion-cta{ width:100%;min-height:58px;margin-top:16px;padding:10px 12px 10px 14px;display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--lime);color:var(--forest-deep);text-align:left; }
.report-conversion-cta>span{ min-width:0; }
.report-conversion-cta b,.report-conversion-cta small{ display:block; }
.report-conversion-cta b{ font-size:14px;font-weight:950;line-height:1.35; }
.report-conversion-cta small{ margin-top:4px;color:rgba(6,68,50,.72);font-size:10px;font-weight:800;line-height:1.35; }
.report-conversion-cta i{ flex:0 0 auto;font-size:25px;font-style:normal;line-height:1; }
.report-conversion-trust{ margin-top:12px;color:rgba(255,255,255,.62);font-size:11px;line-height:1.55; }
/* --- T_REPORTCONVERT end --- */

@media (max-width:370px){
  .detail-page .detail-today-pick{ margin-top:8px; }
  .detail-pick-copy h1{ font-size:23px; }
  .detail-decision-strip strong{ font-size:21px; }   /* T_VERDICTSTACK: 세로 스택이라 max-width 불요 */
  .detail-page .detail-fact-lines article,
  .detail-page .detail-fact-lines article:first-child{ grid-template-columns:48px minmax(0,1fr) auto;gap:8px; }
  .detail-page .detail-today-pick .pick-feedback{ grid-template-columns:50px minmax(0,1fr) 50px; }
  .detail-page .detail-analysis-flow>.report-conversion{ padding-right:15px;padding-left:15px; }
  .report-conversion h2{ font-size:22px; }
  .report-conversion-results span{ padding-right:3px;padding-left:3px;font-size:10px; }
}
/* --- T_DETAILHOME2 end ---------------------------------------------------- */

/* --- T_MOTIONRESTORE begin (2026-08-10) ---------------------------------
   과거 버튼 효과 작업(8eb4dd0)과 이력보기 전용 효과(fb838ce)는 V5 전환
   (086540d) 때 새 styles.css로 교체되며 빠졌다. 현재 화면의 역할에 맞춰
   '다음 판단으로 진행시키는 주 CTA'의 표면과 외곽에만 다시 적용한다.
   선택·위험·결제 보조 행동과 글자는 상시 반짝이지 않는다. */
.primary-btn,
.intro-start,
.score-cta,
.guest-welcome button,
.sheet-primary:not(.danger),
.report-cta,
.pick-feedback-action.is-primary,
.wait-primary{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  transform:translateZ(0);
  transition:transform .24s var(--ease),box-shadow .24s ease,filter .24s ease;
}
.primary-btn::before,
.intro-start::before,
.score-cta::before,
.guest-welcome button::before,
.sheet-primary:not(.danger)::before,
.report-cta::before,
.pick-feedback-action.is-primary::before,
.wait-primary::before{
  content:"";
  position:absolute;
  top:-85%;
  bottom:-85%;
  left:-42%;
  width:25%;
  pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.72),transparent);
  filter:blur(.3px);
  opacity:0;
  transform:translateX(-230%) rotate(15deg);
  animation:premiumCtaSweep 4.4s var(--ease) infinite;
}
.primary-btn{ animation:premiumDecisionBreathe 3.8s ease-in-out infinite; }
.intro-start::before{ animation-delay:-1.6s; }
.score-cta::before{ animation-delay:-2.4s; }
.guest-welcome button::before{ animation-delay:-3.1s; }
.sheet-primary:not(.danger)::before{ animation-delay:-1.2s; }
.report-cta::before{ animation-delay:-2s; }
.pick-feedback-action.is-primary::before{ animation-delay:-.8s; }
.wait-primary::before{ animation-delay:-2.8s; }

@keyframes premiumCtaSweep{
  0%,62%{ opacity:0;transform:translateX(-230%) rotate(15deg); }
  68%{ opacity:.82; }
  84%{ opacity:0;transform:translateX(680%) rotate(15deg); }
  100%{ opacity:0;transform:translateX(680%) rotate(15deg); }
}
@keyframes premiumDecisionBreathe{
  0%,100%{ box-shadow:0 9px 18px rgba(11,95,71,.20),0 0 0 0 rgba(207,232,97,0); }
  50%{ box-shadow:0 13px 25px rgba(11,95,71,.27),0 0 0 4px rgba(207,232,97,.10); }
}

/* T_APPTEXTCLEAR(2026-08-12): 글자에 걸린 drop-shadow 애니메이션은 Android WebView에서
   획이 번져 보인다. 판단 문구는 의미색만 유지하고 필터·그림자·애니메이션을 적용하지 않는다. */
[data-decision-verdict],
.detail-decision-strip strong,
.verdict h2 b{
  animation:none;
  filter:none;
  text-shadow:none;
  will-change:auto;
}

/* 유찰 행 '이력보기'는 과거 전용 pill 효과를 현재 12px 타입에 맞춰 복원한다. */
.why-ranked-more{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  border:1px solid rgba(207,232,97,.30);
  color:#fff;
  background:linear-gradient(135deg,#087052 0%,var(--forest) 58%,#064432 100%);
  font-weight:850;
  text-shadow:none;
  box-shadow:0 4px 10px rgba(11,95,71,.20),0 0 0 0 rgba(207,232,97,0);
  animation:whyHistoryGlow 2.9s ease-in-out infinite;
  transition:transform .16s ease,box-shadow .2s ease;
}
.why-ranked-more::before{
  content:"";
  position:absolute;
  z-index:-1;
  top:-70%;
  bottom:-70%;
  left:-35%;
  width:22%;
  pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.82),transparent);
  filter:blur(.4px);
  transform:translateX(-220%) rotate(16deg);
  animation:whyHistoryShine 3.1s var(--ease) infinite;
}
.why-ranked-more::after{
  content:"";
  position:absolute;
  top:3px;
  right:5px;
  width:3px;
  height:3px;
  pointer-events:none;
  border-radius:50%;
  background:#f5ffc8;
  box-shadow:-29px 8px 0 -1px rgba(245,255,200,.88);
  animation:whyHistoryTwinkle 2.2s ease-in-out infinite;
}
@keyframes whyHistoryGlow{
  0%,100%{ box-shadow:0 4px 10px rgba(11,95,71,.20),0 0 0 0 rgba(207,232,97,0); }
  48%{ box-shadow:0 6px 14px rgba(11,95,71,.28),0 0 0 3px rgba(207,232,97,.12); }
}
@keyframes whyHistoryShine{
  0%,56%{ opacity:0;transform:translateX(-220%) rotate(16deg); }
  62%{ opacity:.9; }
  80%{ opacity:0;transform:translateX(620%) rotate(16deg); }
  100%{ opacity:0;transform:translateX(620%) rotate(16deg); }
}
@keyframes whyHistoryTwinkle{
  0%,32%,100%{ opacity:.18;transform:scale(.55); }
  42%{ opacity:1;transform:scale(1.25); }
  58%{ opacity:.36;transform:scale(.72); }
  72%{ opacity:.92;transform:scale(1); }
}

/* 과거 170개 클릭 요소에 있던 저강도 상호작용도 현재 선택자에 맞춰 복원한다.
   이 그룹은 상시 발광하지 않고 hover/press 순간에만 반응한다. */
.unlock-one,
.document-row button,
.locked-banner button,
.empty-state button,
.search-access-note button,
.report-purchase-bar>button,
.report-sticky-summary button,
.report-evidence-list button,
.doc-link,
.splash-retry,
.source-line,
.compare-cash{
  transition:transform .2s var(--ease),box-shadow .2s ease,filter .2s ease,
    color .2s ease,background .2s ease,border-color .2s ease;
}
.choice,
.stage-tab,
.search-filters button,
.recommendation-scope button,
.region-picked-chip,
.profile-shortcut,
.social,
.photo-step,
.report-section-nav button,
.prompt-list button{
  transition:transform .2s var(--ease),box-shadow .2s ease,filter .2s ease,
    color .2s ease,background .2s ease,border-color .2s ease,opacity .2s ease;
}
.setting-line,
.saved-next,
.listing-row,
.report-lib-row,
.sheet-row{
  transition:transform .2s var(--ease),background .2s ease,box-shadow .2s ease;
}
.text-btn,
.intro-skip,
.sheet-secondary,
.guest-entry,
.icon-btn{
  transition:color .2s ease,opacity .2s ease,transform .2s var(--ease),background .2s ease;
}

@media (hover:hover) and (pointer:fine){
  .primary-btn:not(:disabled):hover,
  .intro-start:not(:disabled):hover,
  .score-cta:not(:disabled):hover,
  .guest-welcome button:not(:disabled):hover,
  .sheet-primary:not(.danger):not(:disabled):hover,
  .report-cta:not(:disabled):hover,
  .pick-feedback-action.is-primary:not(:disabled):hover,
  .wait-primary:not(:disabled):hover{
    transform:translateY(-2px);
    filter:brightness(1.035) saturate(1.03);
    box-shadow:0 15px 30px rgba(7,61,48,.25),0 0 0 3px rgba(207,232,97,.09);
  }
  .primary-btn:hover{ animation-play-state:paused; }
  .why-ranked-more:hover{
    transform:translateY(-1px);
    box-shadow:0 7px 15px rgba(11,95,71,.28),0 0 0 3px rgba(207,232,97,.10);
  }
  .unlock-one:hover,
  .document-row button:hover,
  .locked-banner button:hover,
  .empty-state button:hover,
  .search-access-note button:hover,
  .report-purchase-bar>button:not(:disabled):not(.is-locked):hover,
  .report-sticky-summary button:hover,
  .report-evidence-list button:not(:disabled):hover,
  .doc-link:hover,
  .splash-retry:hover,
  .compare-cash:hover{
    transform:translateY(-1px);
    filter:brightness(1.025);
    box-shadow:0 8px 18px rgba(11,95,71,.16);
  }
  .choice:not(.on):not(.is-active):hover,
  .stage-tab:not(.is-active):hover,
  .search-filters button:not(.is-active):hover,
  .recommendation-scope button:not(.is-active):not(:disabled):hover,
  .region-picked-chip:hover,
  .prompt-list button:hover{
    color:var(--forest);
    border-color:rgba(11,95,71,.24);
    background:#f3f8f5;
    box-shadow:0 7px 16px rgba(11,95,71,.08);
    transform:translateY(-1px);
  }
  .profile-shortcut:hover,
  .social:hover,
  .photo-step:not(:disabled):hover{
    transform:translateY(-2px);
    filter:brightness(1.02);
    box-shadow:0 10px 22px rgba(16,45,35,.12);
  }
  .setting-line:not(.danger):hover,
  .saved-next:hover,
  .listing-row:hover,
  .report-lib-row:hover,
  .sheet-row:hover{
    background:rgba(220,236,229,.34);
    box-shadow:inset 0 0 0 1px rgba(11,95,71,.055);
  }
  .text-btn:hover,
  .intro-skip:hover,
  .sheet-secondary:hover,
  .guest-entry:hover{ color:var(--forest-deep); }
  .icon-btn:hover{ color:var(--forest);background:rgba(11,95,71,.075); }
}
.primary-btn:not(:disabled):active,
.intro-start:not(:disabled):active,
.score-cta:not(:disabled):active,
.guest-welcome button:not(:disabled):active,
.sheet-primary:not(.danger):not(:disabled):active,
.report-cta:not(:disabled):active,
.pick-feedback-action.is-primary:not(:disabled):active,
.wait-primary:not(:disabled):active{ transform:scale(.975); }
.unlock-one:active,
.document-row button:active,
.locked-banner button:active,
.empty-state button:active,
.search-access-note button:active,
.report-purchase-bar>button:not(:disabled):not(.is-locked):active,
.report-sticky-summary button:active,
.report-evidence-list button:not(:disabled):active,
.doc-link:active,
.splash-retry:active,
.source-line:active,
.compare-cash:active,
.choice:active,
.stage-tab:active,
.search-filters button:active,
.recommendation-scope button:not(:disabled):active,
.region-picked-chip:active,
.profile-shortcut:active,
.social:active,
.photo-step:not(:disabled):active,
.report-section-nav button:active,
.prompt-list button:active,
.setting-line:active,
.saved-next:active,
.listing-row:active,
.report-lib-row:active,
.sheet-row:active{ transform:scale(.985); }
.text-btn:active,
.intro-skip:active,
.sheet-secondary:active,
.guest-entry:active,
.icon-btn:active{ opacity:.64; }
.primary-btn:disabled,
.intro-start:disabled,
.score-cta:disabled,
.sheet-primary:disabled,
.report-cta:disabled,
.pick-feedback-action.is-primary:disabled,
.wait-primary:disabled{
  animation:none;
  transform:none;
}
.primary-btn:disabled::before,
.intro-start:disabled::before,
.score-cta:disabled::before,
.sheet-primary:disabled::before,
.report-cta:disabled::before,
.pick-feedback-action.is-primary:disabled::before,
.wait-primary:disabled::before{ display:none; }

@media (prefers-reduced-motion:reduce){
  .primary-btn,
  .intro-start,
  .score-cta,
  .guest-welcome button,
  .sheet-primary:not(.danger),
  .report-cta,
  .pick-feedback-action.is-primary,
  .wait-primary,
  .why-ranked-more,
  .jupgo-ai-launcher::after,
  .jupgo-ai-mark::before{ animation:none;filter:none; }
  .primary-btn::before,
  .intro-start::before,
  .score-cta::before,
  .guest-welcome button::before,
  .sheet-primary:not(.danger)::before,
  .report-cta::before,
  .pick-feedback-action.is-primary::before,
  .wait-primary::before,
  .why-ranked-more::before,
  .why-ranked-more::after{ display:none; }
}

/* --- T_SCORESHEET begin ----------------------------------------------------
   모바일 운영 성과: PC 원장의 정보 밀도를 한 행에 맞추고, 선택한 행의 상세만 하단에서 연다.
   상세 시트 자체에는 스크롤을 만들지 않는다. app-screen 하나가 여백까지 포함해 움직인다. */
[data-screen="score"].screen:not(.no-tabs){
  padding-bottom:calc(116px + var(--score-sheet-clearance, 0px));
}

/* 오늘 작업량은 2×2로 고정해 긴 라벨 하나만 두 줄이 되던 문제를 없앤다. */
.score-worklog-head span,
.score-worklog-grid span,
.score-evidence span,
.score-filters button b{ font-size:12px; }
.score-worklog-grid{
  grid-template-columns:repeat(2,minmax(0,1fr));
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.score-worklog-grid>div{
  position:relative;
  min-width:0;
  padding:11px 10px;
  border-top:1px solid var(--line);
  border-left:1px solid var(--line);
}
.score-worklog-grid>div:nth-child(-n+2){ border-top:0; }
.score-worklog-grid>div:nth-child(odd){ padding-left:0;border-left:0; }
.score-worklog-grid b{ font-size:19px; }
.score-worklog-grid .is-final b{ color:var(--forest); }
.score-worklog-grid .is-final::after{
  content:"";position:absolute;right:0;bottom:-1px;left:10px;height:3px;background:var(--lime);
}

.score-rule .result-list{ margin-right:-20px;margin-left:-20px; }
.score-rule .result-list>.empty-state{ padding-right:20px;padding-left:20px; }
.score-ledger-row{
  position:relative;
  width:100%;
  min-height:0;
  display:block;
  padding:17px 45px 16px 20px;
  border:0;
  border-bottom:1px solid var(--line);
  border-radius:0;
  background:transparent;
  color:var(--ink);
  text-align:left;
  transition:background .16s ease,box-shadow .16s ease;
}
.score-ledger-row.is-selected{ background:var(--forest-soft);box-shadow:inset 3px 0 var(--forest); }
.score-ledger-row:focus-visible{ outline:3px solid rgba(7,95,72,.22);outline-offset:-3px; }
.score-ledger-top{ display:flex;align-items:center;justify-content:space-between;gap:10px; }
.score-ledger-top>span:last-child{
  min-width:0;color:var(--muted);font-size:12px;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.score-ledger-row .decision-state{ flex:0 0 auto;min-height:24px;background:var(--forest-soft);color:var(--forest);font-size:12px; }
.score-ledger-row.decision-hold .decision-state{ background:var(--gold-soft);color:var(--gold); }
.score-ledger-row.decision-not_selected .decision-state{ background:var(--surface-2);color:var(--muted); }
.score-ledger-title{
  display:block;margin-top:8px;overflow:hidden;font-size:15px;font-weight:900;line-height:1.35;
  letter-spacing:-.03em;text-overflow:ellipsis;white-space:nowrap;
}
.score-ledger-row .result-case{ display:block;margin-top:3px;color:var(--faint);font-size:12px; }
.score-ledger-row .case-chip{ font-size:12px; }
.score-ledger-prices{
  margin-top:12px;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:7px;
}
.score-ledger-prices>span{ min-width:0;color:var(--muted);font-size:12px; }
.score-ledger-prices>span:last-child{ text-align:right; }
.score-ledger-prices small{ display:block;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.score-ledger-prices b{
  display:block;margin-top:2px;overflow:hidden;color:var(--ink);font-size:13px;font-weight:900;
  line-height:1.4;letter-spacing:-.025em;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums;
}
.score-ledger-prices>i{ color:var(--faint);font-size:13px;font-style:normal; }
.score-ledger-gap{ display:block;margin-top:7px;font-size:12px;font-weight:800;text-align:right; }
.score-ledger-gap.is-minus{ color:var(--red); }
.score-ledger-gap.is-plus{ color:var(--forest); }
.score-ledger-gap.is-neutral{ color:var(--muted); }
.score-ledger-row>.icon{
  position:absolute;top:50%;right:18px;width:17px;height:17px;color:var(--faint);transform:translateY(-50%);
}

.score-detail-layer{
  position:absolute;z-index:50;inset:0;visibility:hidden;display:flex;align-items:flex-end;pointer-events:none;
}
.score-detail-layer.is-mounted{ visibility:visible; }
.score-detail-sheet{
  position:relative;width:100%;overflow:visible;padding:10px 20px calc(20px + var(--safe-bottom));
  border-top:1px solid var(--line-strong);background:#fbfbf8;box-shadow:0 -20px 54px rgba(19,32,28,.18);
  opacity:0;transform:translateY(calc(100% + 20px));transition:opacity .2s ease,transform .32s var(--ease);pointer-events:auto;
}
.score-detail-layer.is-open .score-detail-sheet{ opacity:1;transform:translateY(0); }
.score-detail-handle{ width:38px;height:4px;display:block;margin:2px auto 17px;background:#d6dbd8; }
.score-detail-close{
  position:absolute;z-index:2;top:10px;right:20px;width:38px;height:38px;display:grid;place-items:center;
  border:0;border-radius:0;background:var(--surface-2);color:var(--ink);
}
.score-detail-close .icon{ width:16px;height:16px; }
.score-detail-head{ padding-right:42px; }
.score-detail-head-top{ display:flex;align-items:center;gap:8px; }
.score-detail-state{ min-height:24px;display:inline-flex;align-items:center;padding:0 7px;background:var(--forest-soft);color:var(--forest);font-size:12px;font-weight:900;white-space:nowrap; }
.score-detail-state.is-hold{ background:var(--gold-soft);color:var(--gold); }
.score-detail-state.is-not_selected{ background:var(--surface-2);color:var(--muted); }
.score-detail-case{ min-width:0;margin-left:auto;overflow:hidden;color:var(--faint);font-size:12px;text-overflow:ellipsis;white-space:nowrap; }
.score-detail-case .case-chip{ font-size:12px; }
.score-detail-head h2{
  margin-top:7px;display:-webkit-box;overflow:hidden;font-size:19px;line-height:1.35;letter-spacing:-.04em;
  -webkit-box-orient:vertical;-webkit-line-clamp:2;
}
.score-detail-timeline{ margin-top:13px;display:flex;align-items:center;color:var(--muted);font-size:12px; }
.score-detail-timeline i{ height:1px;flex:1;margin:0 8px;background:var(--line); }
.score-detail-timeline b{ color:var(--forest);font-size:12px;text-align:right; }
.score-detail-prices{
  margin-top:13px;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:8px;
}
.score-detail-prices>div{ min-width:0;padding:11px 10px;border:1px solid var(--line); }
.score-detail-prices span{ display:block;color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.score-detail-prices strong{
  display:block;margin-top:3px;overflow:hidden;font-size:15px;letter-spacing:-.03em;text-overflow:ellipsis;white-space:nowrap;
}
.score-detail-prices>i{ color:var(--faint);font-style:normal; }
.score-detail-gap{
  margin-top:9px;padding:9px 10px;display:flex;align-items:center;justify-content:space-between;gap:10px;
  border-left:3px solid var(--red);background:var(--red-soft);
}
.score-detail-gap.is-plus{ border-left-color:var(--forest);background:var(--forest-soft); }
.score-detail-gap.is-neutral{ border-left-color:var(--amber);background:var(--amber-soft); }
.score-detail-gap span{ color:var(--muted);font-size:12px; }
.score-detail-gap b{ font-size:13px;text-align:right; }
.score-detail-outcome{
  margin-top:11px;display:-webkit-box;overflow:hidden;color:var(--ink-2);font-size:13px;line-height:1.6;
  -webkit-box-orient:vertical;-webkit-line-clamp:4;
}
.score-detail-reason{ margin-top:12px;padding-top:11px;border-top:1px solid var(--line); }
.score-detail-reason>span{ color:var(--muted);font-size:12px; }
.score-detail-reason p{
  margin-top:3px;display:-webkit-box;overflow:hidden;color:var(--ink-2);font-size:13px;line-height:1.5;
  -webkit-box-orient:vertical;-webkit-line-clamp:3;
}

@media (max-height:760px){
  .score-detail-sheet{ padding-bottom:calc(14px + var(--safe-bottom)); }
  .score-detail-handle{ margin-bottom:12px; }
  .score-detail-prices{ margin-top:9px; }
  .score-detail-outcome{ margin-top:8px;-webkit-line-clamp:3; }
  .score-detail-reason{ margin-top:8px;padding-top:8px; }
}
@media (prefers-reduced-motion:reduce){
  .score-detail-sheet{ transition-duration:.01ms; }
}
/* --- T_SCORESHEET end ------------------------------------------------------ */

/* --- T_SCORE_MOCKUP_PARITY begin ------------------------------------------
   승인된 모바일 성과 시안의 정보 순서와 비율을 운영 화면에 그대로 적용한다. */
[data-screen="score"].screen:not(.no-tabs){
  padding-bottom:calc(88px + var(--safe-bottom) + var(--score-sheet-clearance, 0px));
}
.score-mobile-hero{ padding:16px 0 22px; }
.score-mobile-eyebrow{ display:flex;align-items:center;gap:7px;color:var(--forest);font-size:12px;font-weight:900;letter-spacing:.06em; }
.score-mobile-eyebrow>span{ width:20px;height:20px;display:grid;place-items:center;background:var(--lime);color:var(--forest-deep);font-size:12px;letter-spacing:0; }
.score-mobile-hero h1{ margin-top:10px;font-size:30px;line-height:1.2;letter-spacing:-.05em;white-space:pre-line; }
.score-mobile-hero>p{ margin-top:10px;max-width:360px;color:var(--muted);font-size:14px;line-height:1.58; }
.score-mobile-hero>time{ display:block;margin-top:14px;color:var(--faint);font-size:12px;font-variant-numeric:tabular-nums; }

.score-daily{ padding:14px 0 15px;border-top:3px solid var(--ink);border-bottom:1px solid var(--line); }
.score-daily>header{ display:flex;align-items:center;justify-content:space-between; }
.score-daily>header b{ font-size:15px;font-weight:900; }
.score-daily>header time{ color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums; }
.score-daily-grid{ margin-top:13px;display:grid;grid-template-columns:1fr 1fr;border-top:3px solid var(--ink);border-bottom:1px solid var(--line); }
.score-daily-grid>div{ position:relative;min-width:0;padding:12px 10px;border-top:1px solid var(--line);border-left:1px solid var(--line); }
.score-daily-grid>div:nth-child(-n+2){ border-top:0; }
.score-daily-grid>div:nth-child(odd){ padding-left:0;border-left:0; }
.score-daily-grid span{ display:block;color:var(--muted);font-size:12px;white-space:nowrap; }
.score-daily-grid b{ display:inline-block;margin-top:3px;font-size:19px;letter-spacing:-.04em;font-variant-numeric:tabular-nums; }
.score-daily-grid small{ margin-left:6px;color:var(--faint);font-size:12px; }
.score-daily-grid .is-final b{ color:var(--forest); }
.score-daily-grid .is-final::after{ content:"";position:absolute;right:0;bottom:-1px;left:10px;height:3px;background:var(--lime); }
.score-principle{ margin-top:13px;display:grid;grid-template-columns:76px minmax(0,1fr);align-items:start;gap:9px; }
.score-principle b{ padding:5px 7px;background:var(--forest-soft);color:var(--forest);font-size:12px;text-align:center; }
.score-principle span{ color:var(--muted);font-size:12px;line-height:1.55; }

.score-decision-summary{ padding:21px 0 20px;border-bottom:1px solid var(--line); }
.score-summary-main{ display:flex;align-items:flex-end;justify-content:space-between;padding-bottom:13px;border-bottom:3px solid var(--ink); }
.score-summary-main>span{ color:var(--muted);font-size:13px; }
.score-summary-main strong{ color:var(--forest);font-size:38px;line-height:.9;letter-spacing:-.06em;font-variant-numeric:tabular-nums; }
.score-summary-main strong>small{ margin-left:3px;color:var(--ink-2);font-size:13px;letter-spacing:0; }
.score-summary-mix{ display:grid;grid-template-columns:repeat(3,minmax(0,1fr)); }
.score-summary-mix>div{ position:relative;min-width:0;padding:13px 8px 0 11px;border-left:1px solid var(--line); }
.score-summary-mix>div:first-child{ padding-left:0;border-left:0; }
.score-summary-mix>div>span{ display:block;color:var(--muted);font-size:12px;white-space:nowrap; }
.score-summary-mix i{ width:7px;height:7px;display:inline-block;margin-right:4px;border-radius:50%; }
.score-summary-mix i.is-selected{ background:var(--forest); }
.score-summary-mix i.is-hold{ background:#d4a550; }
.score-summary-mix i.is-rejected{ background:#7b8580; }
.score-summary-mix b{ display:block;margin-top:3px;font-size:17px;font-variant-numeric:tabular-nums; }
.score-summary-mix small{ color:var(--faint);font-size:12px; }

.score-proposal{ margin-top:12px;padding:15px 16px 16px;border:1px solid rgba(7,95,72,.13);border-radius:14px;background:#fff; }
.score-proposal>header{ display:flex;align-items:flex-start;justify-content:space-between;gap:16px; }
.score-section-kicker{ color:var(--forest);font-size:12px;font-weight:900;letter-spacing:.06em; }
.score-proposal h2{ margin-top:5px;font-size:18px;line-height:1.35;letter-spacing:-.035em; }
.score-proposal header>strong{ color:var(--forest);font-size:24px;line-height:1;text-align:right;white-space:nowrap; }
.score-proposal header>strong small{ display:block;margin-top:5px;color:var(--muted);font-size:12px;font-weight:600; }
.score-proposal-track{ position:relative;height:5px;margin-top:22px;display:flex;justify-content:space-between;background:#e4e8e4; }
.score-proposal-track i{ width:9px;height:9px;margin-top:-2px;border:2px solid var(--surface);border-radius:50%;background:var(--forest);box-shadow:0 0 0 1px var(--forest); }
.score-proposal-track b{ position:absolute;top:-8px;bottom:-8px;left:50%;width:2px;background:rgba(7,95,72,.42); }
.score-proposal-meta{ margin-top:9px;display:flex;justify-content:space-between;color:var(--faint);font-size:12px; }
.score-proposal-meta b{ color:var(--ink-2); }
.score-proposal>p{ margin-top:14px;padding-top:12px;border-top:1px solid var(--line);color:var(--muted);font-size:12px;line-height:1.6; }
.score-proposal>p b{ color:var(--ink); }

.score-ledger{ margin-top:26px;padding-top:18px;border-top:3px solid var(--ink); }
.score-ledger-heading{ display:flex;align-items:flex-end;justify-content:space-between;gap:14px; }
.score-ledger-heading h2{ margin-top:5px;font-size:22px;letter-spacing:-.04em; }
.score-ledger-heading>span{ color:var(--muted);font-size:12px;font-weight:700;white-space:nowrap; }
.score-ledger .score-filters{ margin:12px -22px 0;padding:0 22px 10px;gap:7px;border-bottom:1px solid var(--line); }
.score-ledger .score-filters button{ height:35px;min-height:35px;padding:0 11px;font-size:12px;font-weight:750; }
.score-ledger .score-filters button b{ font-size:12px; }
.score-ledger .result-list{ margin:0 -22px; }
.score-ledger .result-list>.empty-state{ padding-right:22px;padding-left:22px; }
.score-page-end{ height:28px; }

.score-ledger-row{ padding:17px 44px 16px 22px; }
.score-ledger-title{ margin-top:8px;font-size:15px; }
.score-ledger-row>.icon{ right:18px; }

.score-detail-sheet{ max-height:calc(100% - 72px);padding:10px 20px calc(20px + var(--safe-bottom)); }
.score-detail-outcome{ margin-top:11px;display:block;overflow:visible;font-size:13px;line-height:1.6; }
.score-detail-outcome b{ color:var(--ink); }
.score-detail-reason p{ display:block;overflow:visible;-webkit-line-clamp:unset; }
.score-detail-note{ margin:11px 0 0;color:var(--faint);font-size:12px;line-height:1.5; }

@media (max-height:760px){
  .score-detail-outcome{ display:block;overflow:visible;-webkit-line-clamp:unset; }
}
/* --- T_SCORE_MOCKUP_PARITY end -------------------------------------------- */
/* --- T_MOTIONRESTORE end -------------------------------------------------- */

/* --- T_DOCPRINTFIT begin --- (2026-08-20 앱팀 v11 실기기 회신 2-1 "원본 서류 저장 시 여백·뭉개짐")
   원문 뷰어의 저장은 **최상위 문서**를 인쇄한다 — 네이티브 printPage 는 대상을 못 받고,
   웹은 iframe 이 불투명 출처라 contentWindow.print() 가 막혀 window.print() 로 떨어진다.
   재현 실측: sandbox iframe 이 있는 페이지를 인쇄하면 4쪽, 없으면 1쪽 — 즉 **문서 내용은
   인쇄에 들어간다.** 나오지 않는 게 아니라 앱 UI 와 섞인 채 iframe 높이(=화면 높이)에서
   잘리는 것이 결함의 정체다.
   ⇒ 뷰어가 열려 있을 때만(body.doc-print) 앱 UI 를 걷어내고 iframe 을 문서 전체 높이로 편다.
     높이는 문서가 postMessage 로 알려 준 값(--doc-print-h · app.js T_DOCPRINTFIT).
   ★sandbox 계약(allow-same-origin 금지)도 네이티브 계약도 건드리지 않는다.
   ★보고서 인쇄(report-pdf)는 뷰어가 닫힌 상태라 이 블록이 걸리지 않는다 — 종전 그대로다. */
@media print {
  body.doc-print .app-screen,
  body.doc-print .bottom-nav,
  body.doc-print .sheet,
  body.doc-print .toast,
  body.doc-print .document-viewer-bar,
  body.doc-print .document-viewer-state{ display:none!important; }
  body.doc-print .document-viewer{
    position:static!important;height:auto!important;max-height:none!important;
    overflow:visible!important;background:#fff!important;padding:0!important;border:0!important; }
  body.doc-print .document-viewer-body{
    height:auto!important;max-height:none!important;overflow:visible!important;padding:0!important; }
  body.doc-print [data-document-frame]{
    height:var(--doc-print-h,1400px)!important;max-height:none!important;
    width:100%!important;border:0!important; }
}
/* --- T_DOCPRINTFIT end ---------------------------------------------------- */

/* --- T_APPSUPPORT begin --------------------------------------------------
   내 정보 > 고객센터. 작은 폰부터 iPad까지 한 열로 읽히며 모든 조작 높이는 48px 이상이다. */
.support-screen{ padding-bottom:calc(34px + var(--safe-bottom)); }
.support-hero{ margin-top:14px;padding:20px 18px 19px;background:var(--forest);color:#fff; }
.support-hero>span{ display:block;color:var(--lime);font-size:12px;font-weight:900;letter-spacing:.04em; }
.support-hero h1{ margin:7px 0 0;font-size:23px;line-height:1.25;letter-spacing:-.04em; }
.support-hero p{ margin:9px 0 0;color:rgba(255,255,255,.72);font-size:13px;line-height:1.58; }
.support-faq-list{ border-top:1px solid var(--line); }
.support-faq-list details{ margin:0;border-bottom:1px solid var(--line); }
.support-faq-list summary{ min-height:56px;padding:13px 0;display:grid;grid-template-columns:minmax(0,1fr) 18px;gap:10px;align-items:center;color:var(--ink);font-size:14px;font-weight:850;line-height:1.45;list-style:none;cursor:pointer; }
.support-faq-list summary::-webkit-details-marker{ display:none; }
.support-faq-list summary .icon{ width:16px;height:16px;color:var(--muted);transition:transform .18s ease; }
.support-faq-list details[open] summary .icon{ transform:rotate(90deg); }
.support-faq-list details>p{ margin:0;padding:0 24px 16px 0;color:var(--ink-2);font-size:13px;line-height:1.65; }
.support-form{ display:grid;gap:15px; }
.support-form label>span{ display:block;margin-bottom:7px;color:var(--ink-2);font-size:12px;font-weight:850; }
.support-form input,.support-form select,.support-form textarea{ width:100%;min-height:50px;padding:12px 13px;border:1px solid var(--line);border-radius:0;background:#fff;color:var(--ink);font:inherit;font-size:14px;line-height:1.45;outline:0; }
.support-form textarea{ min-height:150px;resize:vertical; }
.support-form input:focus,.support-form select:focus,.support-form textarea:focus{ border-color:var(--forest);box-shadow:inset 3px 0 0 var(--lime); }
.support-form input::placeholder,.support-form textarea::placeholder{ color:var(--faint); }
.support-security{ margin:-2px 0 0;display:grid;grid-template-columns:17px minmax(0,1fr);gap:7px;align-items:start;color:var(--muted);font-size:12px;line-height:1.5; }
.support-security .icon{ width:16px;height:16px;margin-top:1px;color:var(--forest); }
.support-form-error{ margin:0;padding:10px 11px;border-left:3px solid var(--red);background:var(--red-soft);color:var(--red);font-size:12px;line-height:1.5; }
.support-submit{ width:100%;min-height:52px;border:0;background:var(--forest);color:#fff;font-size:14px;font-weight:900; }
.support-submit:disabled{ opacity:.62; }
.support-history .section-heading{ display:flex;align-items:flex-end;justify-content:space-between;gap:12px; }
.support-history .text-btn{ min-height:44px;padding:0;color:var(--forest);background:transparent;font-size:12px;font-weight:850; }
.support-list{ border-top:1px solid var(--line); }
.support-ticket{ margin:0;border-bottom:1px solid var(--line); }
.support-ticket summary{ min-height:78px;padding:13px 0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;list-style:none;cursor:pointer; }
.support-ticket summary::-webkit-details-marker{ display:none; }
.support-ticket summary div>span{ display:block;color:var(--forest);font-size:12px;font-weight:850; }
.support-ticket summary div>b{ display:block;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;line-height:1.4; }
.support-ticket summary div>small{ display:block;margin-top:4px;color:var(--muted);font-size:12px;line-height:1.4;font-variant-numeric:tabular-nums; }
.support-ticket summary>em{ min-height:25px;padding:4px 7px;background:var(--surface-2);color:var(--ink-2);font-size:12px;font-style:normal;font-weight:850;white-space:nowrap; }
.support-ticket.is-progress summary>em{ background:var(--gold-soft);color:var(--gold); }
.support-ticket.is-answered summary>em{ background:var(--lime-soft);color:var(--forest); }
.support-ticket-body{ padding:2px 0 17px; }
.support-question,.support-answer,.support-wait{ padding:13px 14px;background:var(--surface-2); }
.support-answer{ margin-top:8px;border-left:3px solid var(--lime);background:var(--forest-soft); }
.support-question>span,.support-answer>span{ display:block;color:var(--muted);font-size:12px;font-weight:850; }
.support-question p,.support-answer p{ margin:6px 0 0;color:var(--ink-2);font-size:13px;line-height:1.65;word-break:break-word; }
.support-answer p{ color:var(--ink); }
.support-wait{ margin-top:8px;display:grid;gap:4px; }
.support-wait b{ font-size:13px; }
.support-wait span{ color:var(--muted);font-size:12px;line-height:1.5; }
.support-empty{ min-height:130px;display:grid;align-content:center;justify-items:center;text-align:center; }
.support-empty b{ font-size:14px; }
.support-empty span{ margin-top:6px;color:var(--muted);font-size:12px;line-height:1.5; }
.support-list-loading{ padding:18px 0;display:grid;gap:9px; }
.support-list-loading i{ height:68px;background:linear-gradient(90deg,var(--surface-2),#fff,var(--surface-2));background-size:200% 100%;animation:support-loading 1.15s ease-in-out infinite; }
@keyframes support-loading{ to{ background-position:-200% 0; } }
@media (max-width:360px){
  .support-hero{ padding-right:15px;padding-left:15px; }
  .support-ticket summary{ grid-template-columns:minmax(0,1fr); }
  .support-ticket summary>em{ justify-self:start; }
}
@media (prefers-reduced-motion:reduce){ .support-faq-list summary .icon,.support-list-loading i{ transition:none;animation:none; } }
/* --- T_APPSUPPORT end ---------------------------------------------------- */
