@font-face {
  font-family: 'S-CoreDream-5Medium';
  src: url('../assets/fonts/S-CoreDream-5Medium.woff') format('woff');
  font-weight: 500; font-style: normal; font-display: swap;
}
/* Home 탭 */

.home__body {
  padding: var(--section-top) var(--pad-screen) var(--section-top);
  display: flex; flex-direction: column; gap: var(--gap-card);
}

/* 카드 격자(2026-10-09 재배치, 개정) — 정확히 2열 × 4행(8칸). 칸 높이(--cell-h)는 ui/home.js fitHomeGrid가 헤더 아래 ~ 하단 탭 위 높이에서
   승인된 위 여백·아래 여백·카드 간격을 빼고 4로 나눠 정합니다. 같은 화면에서는 모든 카드가 같은 칸 크기(열도 1 : 1).
   카드는 자기 칸을 채우고(최소 높이 없음), 배치·규격이 바뀌어도 대시보드 높이는 그대로입니다. */
.home-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-rows: repeat(4, var(--cell-h, auto)); gap: 12px; }
.home__body .home-grid > [data-reorder-id] { min-width: 0; min-height: 0; }
/* 칸 크기를 정할 때만 쓰는 보이지 않는 측정용 복사본(ui/home.js contentNeed) */
.home-grid-measure { position: absolute; left: 0; top: 0; visibility: hidden; pointer-events: none; z-index: -1; }
/* 반폭 큰 카드 안 — 파고 숫자와 방향 화살표가 한 줄에 안 들어가면(360px, 두 자리 파고) 화살표 묶음이
   파고·주기 아래 오른쪽으로 내려갑니다. 글자를 줄이거나 가리지 않습니다. 좌우 여백만 22→18px. */
.fav-hero:not(.is-wide) { padding-left: 18px; padding-right: 18px; }
.fav-hero:not(.is-wide) .fav-hero__row { flex-wrap: wrap; column-gap: 8px; row-gap: 6px; align-content: center; }
.fav-hero:not(.is-wide) .fav-hero__dir { margin-left: auto; }
/* 작은 카드 — 파고가 두 자리라 주기와 한 줄에 안 들어가면 주기만 다음 줄 오른쪽으로 */
.fav-tile__row { flex-wrap: wrap; }

.fav-hero {
  background: var(--hero-navy); border: none; border-radius: var(--r-hero);
  padding: 22px; display: flex; flex-direction: column; min-height: 250px;
  text-align: left; cursor: pointer; color: #FFFFFF; position: relative; width: 100%;
}
.fav-hero.is-wide { min-height: 220px; justify-content: space-between; }

.fav-hero__name { font-size: 22px; font-weight: 700; color: #FFFFFF; }
.fav-hero.is-wide .fav-hero__name { font-size: 24px; }
.fav-hero__row  { display: flex; justify-content: space-between; align-items: center; width: 100%; flex: 1; }
.fav-hero.is-wide .fav-hero__row { flex: none; }
.fav-hero__wave { display: flex; align-items: baseline; gap: 2px; font-family: var(--font-num); }
.fav-hero__num  { font-size: 56px; font-weight: 800; color: #FFFFFF; letter-spacing: -1px; }
.fav-hero.is-wide .fav-hero__num { font-size: 58px; }
.fav-hero__unit { font-size: 25px; color: rgb(255 255 255 / 70%); font-weight: 600; }
.fav-hero.is-wide .fav-hero__unit { font-size: 28px; }
.fav-hero__per  { display: flex; align-items: center; gap: 5px; margin-top: 4px; color: rgb(255 255 255 / 70%); font-size: 22px; font-family: var(--font-num); }
.fav-hero.is-wide .fav-hero__per { font-size: 24px; }
.fav-hero__pers { font-size: 16px; color: rgb(255 255 255 / 70%); }
.fav-hero__dir  { display: flex; flex-direction: column; align-items: center; gap: 3px; }
.fav-hero__arrow { display: inline-block; font-size: 46px; color: #FFFFFF; line-height: 1; }
.fav-hero__dirlabel { font-size: 14px; font-weight: 700; color: rgb(255 255 255 / 70%); }
.fav-hero.is-wide .fav-hero__dirlabel { font-size: 16px; }

.fav-tile {
  background: #E0F8F5; border: 1px solid #9FE3DA;
  border-radius: var(--r-card); padding: 18px; flex: 1;
  display: flex; flex-direction: column; justify-content: space-between;
  text-align: left; cursor: pointer;
}
.fav-tile__name { font-size: 15px; font-weight: 700; color: #008574; }
.fav-tile__row  { display: flex; align-items: baseline; gap: 2px; font-family: var(--font-num); }
.fav-tile__num  { font-size: 38px; font-weight: 800; color: var(--text-strong); }
.fav-tile__unit { font-size: 17px; color: var(--text-sub); font-weight: 600; }
.fav-tile__per  { font-size: 15.5px; color: var(--text-sub); margin-left: auto; }

.fav-empty {
  background: #F4F5F7; border: 1px dashed #C5C8CD;
  border-radius: var(--r-hero); padding: 24px;
  display: flex; align-items: center; justify-content: center; text-align: center;
  font-size: 15.5px; color: #5C6068; line-height: 1.5;
}/* 최근 활동 */
/* 리포트 표시가 둘(완료 + 요청 가능)일 때 — 각각 따로 누르는 버튼, 좁으면 다음 줄로 */
/* 「로그 N개 쌓임」이 버튼이 되며(2026-09-30) 버튼 기본 모양만 지웁니다 — 글자·자리·카드 높이는 예전 div와 같게 */

/* 반폭 카드(Wavepool·마켓) — 격자는 위의 .home-grid */

.duo-card { border-radius: var(--r-card); padding: 20px; text-align: left; cursor: pointer; }
.duo-card--pool   { background: var(--accent-pool-bg); border: 1px solid var(--accent-pool-bd); }
.duo-card--market { background: var(--accent-market-bg); border: 1px solid var(--accent-market-bd); }
.duo-card__title  { font-size: 14.5px; font-weight: 700; }
/* 제목은 단어 단위로만 줄바꿈(아래 「준비 중」 배지와 그 여백은 2026-10-09에 뺌) */
.duo-card__title { word-break: keep-all; }
.duo-card--pool   .duo-card__title { color: var(--accent-pool); }
.duo-card--market .duo-card__title { color: var(--accent-market); }
.duo-card__count  { font-size: 28px; font-weight: 800; color: var(--text-strong); margin-top: 12px; }
.duo-card__sub    { font-size: 15px; color: var(--text-sub); margin-top: 6px; }
.duo-card__none   { font-size: 15.5px; color: var(--text-sub); margin-top: 12px; }

.duo-card__inslist { display: flex; flex-direction: column; gap: 12px; margin-top: 12px; }
.duo-card__ins {
  width: 100%; text-align: left; background: none; border: none; padding: 0; cursor: pointer;
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
}
.duo-card__insname { font-size: 16px; font-weight: 700; color: var(--text-strong); }
.duo-card__insrate { font-size: 14px; color: var(--accent-rating); font-weight: 600; }

/* 프로필 시트 — 등급 밴드는 여기에만 표시 (레벨 숫자는 어디에도 노출하지 않음) */
.profile__band {
  background: var(--hero-grad); border-radius: var(--r-hero);
  padding: 26px 20px; text-align: center; margin-bottom: 16px;
}
.profile__bandname { font-size: 30px; font-weight: 800; color: #FFFFFF; letter-spacing: -.5px; }
/* 로그인한 계정 이메일 — 상세 정보(성별) 아래 가운데, 예전 안내 문장 자리·스타일. 긴 주소는 줄을 바꿔 화면 안에 둔다 */
.profile__email { font-size: 12.5px; color: #8A8E96; line-height: 1.6; margin-top: 16px; text-align: center; word-break: keep-all; overflow-wrap: break-word; word-break: break-all; }
/* 안내 문장 — 박스 바로 아래 가운데(예전 인라인 스타일과 같은 크기·색) */
.profile__note { font-size: 12.5px; color: #8A8E96; line-height: 1.6; text-align: center; margin: -6px 0 10px; }
.profile__bandline { font-size: 15px; color: rgb(255 255 255 / 70%); line-height: 1.6; margin-top: 8px; }
.profile__row {
  display: flex; justify-content: space-between; gap: 12px;
  padding: 12px 0; border-bottom: 1px solid var(--line-08); font-size: 14.5px;
}
.profile__row:last-child { border-bottom: none; }
/* 프로필 정보 행 교차 배경(2026-09-29) — 1·3·5·7번째 행에 흰색 4%의 평평한 띠. 글자 위치·행 높이·구분선은 그대로 두고
   배경 층만 좌우로 10px 넓혀(시트 본문 여백 18px 안) 글자가 띠 가장자리에 붙지 않게 합니다. 둥근 모서리·테두리 없음. */
.profile__row--alt { position: relative; isolation: isolate; }
.profile__row--alt::before { content: ''; position: absolute; inset: 0 -10px; z-index: -1; background: #F4F5F7; pointer-events: none; }
.profile__k { color: var(--text-muted); }
.profile__v { color: var(--text-strong); font-weight: 600; text-align: right; }
/* 평균 세션 정체 안내("(최근 N개월 이상 기록없음)") — 값 자체보다 작고 볼드 없이, 옅은 회색으로 */
.profile__vnote { color: var(--text-dim); font-weight: 400; font-size: 12px; }

/* 해상특보 경고 아이콘 — 즐겨찾기 타일 우측 상단 (2026-09-09 §A-1 확장).
   도형·색·깜빡임은 예보 탭과 같은 .hero__alert 규칙을 그대로 씁니다. 여기서는
   위치만 잡습니다 — 두 화면이 서로 다르게 보이면 같은 경고로 안 읽힙니다.
   .fav-hero는 이미 position:relative라 그대로 얹히고, .fav-tile에만 새로 겁니다. */
.fav-tile { position: relative; }
/* .hero__alert가 padding:0을 갖고 있어 같은 자리에서 이깁니다(forecast.css가 뒤에 로드).
   두 클래스를 함께 걸어 우선순위를 올립니다 — !important를 쓰면 나중에 왜 안 먹는지
   추적하기 어려워집니다. */
.hero__alert.fav-alert {
  position: absolute; top: 6px; right: 6px; margin: 0;
  /* 터치 영역을 44px로 넓힙니다 — 타일 전체가 스팟으로 가는 버튼이라, 아이콘이 작으면
     경고를 누르려다 스팟으로 넘어갑니다. 아이콘 자체는 19px 그대로입니다. */
  padding: 13px; box-sizing: content-box;
}
.fav-hero > .hero__alert.fav-alert { top: 10px; right: 10px; }
/* 네이비 면 위에서는 더 밝은 코랄 면색 #F2545B(흰 원 테두리는 스트로크처럼 보여 제거, 2026-10-15). 명도 대비는 낮고 색상 차·깜빡임·모양으로 구분 */
.fav-hero .hero__alert.fav-alert { color: #F2545B; }

/* Measured home height budget: compress whitespace, preserve readable type. */
.home__body{--home-room:1;--home-card-gap:10px;gap:var(--home-card-gap);padding-top:var(--pad-screen);padding-bottom:0}
.home__body .home-grid{gap:var(--home-card-gap);align-items:stretch}
.home__body .fav-hero{min-height:calc(190px + 60px * var(--home-room));padding-top:calc(12px + 10px * var(--home-room));padding-bottom:calc(12px + 10px * var(--home-room))}
.home__body .fav-hero.is-wide{min-height:calc(180px + 40px * var(--home-room))}
.home__body .fav-tile{padding:calc(10px + 8px * var(--home-room))}
.home__body .duo-card{padding:calc(10px + 10px * var(--home-room))}
.home__body .duo-card__inslist{gap:calc(6px + 6px * var(--home-room));margin-top:calc(6px + 6px * var(--home-room))}

/* ── Widget-style content hierarchy: fixed heading, primary value, supporting status.
   Apple HIG Widgets / Layout informed the hierarchy, not the app-specific pixel sizes.
   Existing card colours, opacity and the 10px outer grid gaps are unchanged. */
.home__body .home-grid > [data-reorder-id] { min-height: 0; }.home__body .fav-hero, .home__body .fav-tile, .home__body .duo-card, .home__body .fav-empty {
  padding: 12px 14px; box-sizing: border-box;
}
/* Main spot: always two cells. */
.home__body .fav-hero { display: grid; gap: 8px 12px; }
.fav-hero__row, .fav-hero__row > div:first-child { display: contents; }
.fav-hero__name { grid-area: name;  line-height: 1.25; overflow-wrap: anywhere; }
.fav-hero__wave { grid-area: wave; line-height: 1.1; align-self: center; }
.fav-hero__per { grid-area: per; margin: 0; align-self: end;  line-height: 1.25; }
.fav-hero__dir { grid-area: dir; justify-self: end; align-self: end; }
.fav-hero.g-1x2 { grid-template-areas: 'name' 'wave' 'per' 'dir'; grid-template-columns: minmax(0,1fr); grid-template-rows: auto auto auto 1fr; row-gap: 12px; }
.fav-hero.g-1x2 .fav-hero__num {  line-height: 1; }
.fav-hero.g-1x2 .fav-hero__unit {  }
.fav-hero.g-1x2 .fav-hero__arrow {  }
.fav-hero.g-1x2 .fav-hero__dirlabel {  }
.fav-hero.g-2x1 { grid-template-areas: 'name per' 'wave dir'; grid-template-columns: minmax(0,1fr) auto; grid-template-rows: auto 1fr; }
.fav-hero.g-2x1 .fav-hero__name {  }
.fav-hero.g-2x1 .fav-hero__num {  line-height: 1; }
.fav-hero.g-2x1 .fav-hero__unit {  }
.fav-hero.g-2x1 .fav-hero__per { justify-self: end; align-self: start;  }
.fav-hero.g-2x1 .fav-hero__pers {  }
.fav-hero.g-2x1 .fav-hero__dir { flex-direction: row; gap: 7px; align-self: center; }
.fav-hero.g-2x1 .fav-hero__arrow {  }
.fav-hero.g-2x1 .fav-hero__dirlabel {  }
/* Sub spots: one cell, no direction indicator. */
.home__body .fav-tile { display: grid; grid-template-columns: minmax(0,1fr); grid-template-rows: auto 1fr; gap: 6px; }
.fav-hero__name, .fav-tile__name { position: relative; padding-right: 28px; }
.fav-hero__name > .fav-alert, .fav-tile__name > .fav-alert { top: -12px; right: -12px; }
.fav-tile__name {  line-height: 1.25; overflow-wrap: anywhere; }
.fav-tile__row { display: flex; width: 100%; flex-wrap: wrap; align-items: baseline; align-content: center; gap: 2px; }
.fav-tile__num {  line-height: 1.1; }
.fav-tile__unit {  }
.fav-tile__per { margin-left: auto;  line-height: 1.25; }
.home__body .fav-empty { flex-direction: column; gap: 10px;  cursor: pointer; }
.fav-empty__title {  }
.fav-empty__action {  }

/* Pool: title -> count -> explanation. Empty notifications use the same value slot. */
.home__body .duo-card--pool { display: grid; grid-template-areas: 'title' 'value' 'sub'; grid-template-rows: auto 1fr auto; gap: 6px; }
.duo-card__title {  line-height: 1.35; word-break: keep-all; }
.duo-card--pool .duo-card__title { grid-area: title; }
.duo-card--pool .duo-card__count, .duo-card--pool .duo-card__none { grid-area: value; align-self: center; margin: 0; }
.duo-card--pool .duo-card__count {  line-height: 1.1; }
.duo-card--pool .duo-card__none {  line-height: 1.4; }
.duo-card--pool .duo-card__sub { grid-area: sub; margin: 0;  line-height: 1.35; word-break: keep-all; }
.home__body .duo-card--pool.g-2x1 { grid-template-areas: 'title value' 'sub value'; grid-template-columns: minmax(0,1fr) auto; grid-template-rows: 1fr 1fr; gap: 8px 12px; }
.duo-card--pool.g-2x1 .duo-card__title { align-self: end;  }
.duo-card--pool.g-2x1 .duo-card__sub { align-self: start; }
.duo-card--pool.g-2x1 .duo-card__count {  }
.duo-card--pool.g-1x2 .duo-card__count {  }
.duo-card--pool.g-1x2 .duo-card__title {  }
/* Market: a heading and two consistently aligned name/rating rows. */
.home__body .duo-card--market { display: grid; grid-template-rows: auto 1fr; gap: 8px; }
.home__body .duo-card__inslist { margin: 0; display: flex; flex-direction: column; justify-content: center; gap: 6px; }
.duo-card__ins { min-height: 28px; gap: 6px; }
.duo-card__insname {  line-height: 1.3; word-break: keep-all; }
.duo-card__insrate {  line-height: 1.3; white-space: nowrap; }
.duo-card--market.g-2x1 { grid-template-columns: minmax(0,1fr) minmax(0,1fr); grid-template-rows: 1fr; gap: 16px; align-items: center; }
.duo-card--market.g-2x1 .duo-card__title, .duo-card--market.g-1x2 .duo-card__title {  }
.duo-card--market.g-1x2 .duo-card__inslist { gap: 16px; }
.duo-card--market.g-1x2 .duo-card__ins { min-height: 40px; }
/* Short displays keep the same eight cells by reducing inner whitespace first. */
@media (max-height: 700px) {.home__body .fav-hero, .home__body .fav-tile, .home__body .duo-card, .home__body .fav-empty { padding: 8px 12px; }
}

/* Give each card its own focal point, retaining the existing colour surfaces. */
.home__body .fav-hero.g-1x2 { padding: 18px 16px; }
.fav-hero.g-1x2 .fav-hero__name {  }
.fav-hero.g-1x2 .fav-hero__wave { margin-top: 4px; }
.fav-hero.g-1x2 .fav-hero__per {  align-self: start; }
@media (max-height:700px) {
 .home__body .fav-hero.g-1x2 { padding: 12px 14px; row-gap: 6px; }
 .fav-hero.g-1x2 .fav-hero__num {  }
 .fav-hero.g-1x2 .fav-hero__arrow {  }
 .fav-tile__num {  }
}

/* Variable proportions share the same outer frame. Reorder owns morph animation. */
.home__body .home-grid--fluid { display: block; position: relative; }
.home__body .home-grid--fluid > [data-reorder-id] { position: absolute; margin: 0; }

/* Typography baseline: 2026-10-08, commit 6f92d2b. Layout must not rescale type. */
.home__body .fav-tile { padding-top: 18px; gap: 8px; }
.fav-tile__row { display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto 1fr; align-content: normal; }
.fav-tile__per { grid-column: 1 / -1; align-self: end; justify-self: end; }
.home__body .fav-hero__dir { position: relative; left: -3px; top: -3px; }
.home__body .fav-hero.g-1x2 .fav-hero__dir { gap: 5px; }
.home__body .fav-hero.g-2x1 .fav-hero__dir { gap: 9px; }
.home__body .fav-hero__name { font-size:22px; font-weight:700; color: #FFFFFF; }
.home__body .fav-hero__num { font-size:56px; font-weight:800; color: #FFFFFF; letter-spacing:-1px; }
.home__body .fav-hero__unit { font-size:25px; font-weight:600; color: rgb(255 255 255 / 70%); }
.home__body .fav-hero__per { font-size:22px; color: rgb(255 255 255 / 70%); }
.home__body .fav-hero__pers { font-size:16px; color: rgb(255 255 255 / 70%); }
.home__body .fav-hero__arrow { font-size:46px; color: #FFFFFF; }
.home__body .fav-hero__dirlabel { font-size:14px; font-weight:700; color: rgb(255 255 255 / 70%); }
.home__body .fav-hero.g-2x1 .fav-hero__name { font-size:24px; }
.home__body .fav-hero.g-2x1 .fav-hero__num { font-size:58px; }
.home__body .fav-hero.g-2x1 .fav-hero__unit { font-size:28px; }
.home__body .fav-hero.g-2x1 .fav-hero__per { font-size:24px; }
.home__body .fav-hero.g-2x1 .fav-hero__dirlabel { font-size:16px; }
.home__body .fav-tile__name { font-size:15px; font-weight:700; color: #008574; }
.home__body .fav-tile__num { font-size:38px; font-weight:800; color:var(--text-strong); }
.home__body .fav-tile__unit { font-size:17px; font-weight:600; color:var(--text-sub); }
.home__body .fav-tile__per { font-size:15.5px; color:var(--text-sub); }
.home__body .fav-empty { font-size:15.5px; color:#5C6068; }
.home__body .duo-card__title { font-size:14.5px; font-weight:700; }
.home__body .duo-card__count { font-size:28px; font-weight:800; color:var(--text-strong); }
.home__body .duo-card__sub { font-size:15px; color:var(--text-sub); }
.home__body .duo-card__none { font-size:15.5px; color:var(--text-sub); }
.home__body .duo-card__insname { font-size:16px; font-weight:700; color:var(--text-strong); }
.home__body .duo-card__insrate { font-size:14px; font-weight:600; color:#111316; }

/* Reference image: Pool and Market content forms a compact group, not stretched rows. */
.home__body .duo-card.g-1x1 { padding: 20px; }
.home__body .duo-card--pool.g-1x1 { display: flex; flex-direction: column; align-items: stretch; justify-content: flex-start; gap: 0; }
.duo-card--pool.g-1x1 .duo-card__count { margin-top: 12px; line-height: normal; align-self: stretch; text-align: left; }
.duo-card--pool.g-1x1 .duo-card__sub { margin-top: 6px; line-height: normal; }
.duo-card--pool.g-1x1 .duo-card__none { margin-top: 12px; line-height: normal; align-self: stretch; text-align: left; }
.home__body .duo-card--market.g-1x1 { display: flex; flex-direction: column; gap: 0; }
.home__body .duo-card--market.g-1x1 .duo-card__inslist { flex: none; margin-top: 12px; gap: 12px; justify-content: flex-start; }
.duo-card--market.g-1x1 .duo-card__ins { min-height: 0; gap: 8px; }
.duo-card--market.g-1x1 .duo-card__insname,
.duo-card--market.g-1x1 .duo-card__insrate,
.duo-card.g-1x1 .duo-card__title { line-height: normal; }
@media (max-height:700px) {
 .home__body .duo-card.g-1x1 { padding: 12px; }
 .home__body .duo-card--market.g-1x1 .duo-card__inslist { gap: 8px; margin-top: 8px; }
}

/* Recent activity — single source of layout/type/photo rules, 2026-10-16. */
.home__body .recent {
  container-type: inline-size; position: relative; overflow: hidden;
  display: grid; padding: 0; gap: 0; box-sizing: border-box;
  border: none; border-radius: var(--r-hero); cursor: pointer;
  background: url('../assets/home-recent-soft.webp') center / cover no-repeat, #5C6068;
  grid-template-areas: 'title' 'body' 'footer' '.' 'status';
  grid-template-columns: minmax(0,1fr); grid-template-rows: auto auto auto 1fr auto;
}
.home__body .recent::before { display: none; }
.home__body .recent > * { position: relative; margin-left: 5.95cqw; margin-right: 5.95cqw; }
.home__body .recent > :last-child { margin-bottom: 5.95cqw; }
.home__body .recent .recent__head { grid-area: title; margin-top: 8.46cqw; line-height: 1; }
.home__body .recent__title, .home__body .recent__line, .home__body button.recent__sub {
  font-family: 'S-CoreDream-5Medium', var(--font-body); font-weight: 500;
  font-synthesis: none; text-shadow: none; letter-spacing: 0;
}
.home__body .recent .recent__title { display: block; margin: 0; font-size: 15px; line-height: 1; color: #474040; }
.home__body .recent .recent__btn {
  grid-area: body; margin-top: 2.83cqw; align-self: start;
  min-width: 0; text-align: left; background: none; border: none; padding: 0; cursor: pointer;
}
.home__body .recent .recent__line {
  margin-top: 0; font-size: 6.24cqw; line-height: 1.2; color: #FFFFFF;
  word-break: keep-all; overflow-wrap: break-word;
}
.recent__line-compact { display: none; }
.home__body .recent button.recent__sub {
  grid-area: footer; position: relative; justify-self: start; display: inline-flex; align-items: center;
  box-sizing: border-box; border: none; cursor: pointer;
  margin-top: 3.4cqw; margin-left: 6.53cqw; height: 6.8cqw; padding: 0 3.95cqw; border-radius: 999px;
  background: var(--nav-bg); color: #FFFFFF; font-size: 11px; line-height: 11px;
}
.home__body .recent button.recent__sub::after { content: ''; position: absolute; inset: -12px -4px; }

/* Fit only editable lower cards into the remaining viewport. Banner is unchanged. */
.home__body .home-grid > [data-reorder-id]:not(.recent) {
  padding: calc(12px * var(--home-density, 1));
  min-height: 0; row-gap: calc(6px * var(--home-density, 1));
}
.home__body .fav-hero__name { font-size: calc(22px * var(--home-density, 1)); }
.home__body .fav-hero__num { font-size: calc(56px * var(--home-density, 1)); }
.home__body .fav-hero__unit { font-size: calc(25px * var(--home-density, 1)); }
.home__body .fav-hero__per { font-size: calc(22px * var(--home-density, 1)); }
.home__body .fav-hero__pers { font-size: calc(16px * var(--home-density, 1)); }
.home__body .fav-hero__arrow { font-size: calc(46px * var(--home-density, 1)); }
.home__body .fav-hero__dirlabel { font-size: max(11px, calc(14px * var(--home-density, 1))); }
.home__body .fav-hero.g-2x1 .fav-hero__name { font-size: calc(24px * var(--home-density, 1)); }
.home__body .fav-hero.g-2x1 .fav-hero__num { font-size: calc(58px * var(--home-density, 1)); }
.home__body .fav-hero.g-2x1 .fav-hero__unit { font-size: calc(28px * var(--home-density, 1)); }
.home__body .fav-hero.g-2x1 .fav-hero__per { font-size: calc(24px * var(--home-density, 1)); }
.home__body .fav-hero.g-2x1 .fav-hero__dirlabel { font-size: max(11px, calc(16px * var(--home-density, 1))); }
.home__body .fav-tile__name { font-size: max(12px, calc(15px * var(--home-density, 1))); }
.home__body .fav-tile__num { font-size: calc(38px * var(--home-density, 1)); }
.home__body .fav-tile__unit { font-size: calc(17px * var(--home-density, 1)); }
.home__body .fav-tile__per { font-size: max(11px, calc(15.5px * var(--home-density, 1))); }
.home__body .duo-card__title { font-size: max(12px, calc(14.5px * var(--home-density, 1))); }
.home__body .duo-card__count { font-size: calc(28px * var(--home-density, 1)); }
.home__body .duo-card__sub, .home__body .duo-card__none { font-size: max(11px, calc(15px * var(--home-density, 1))); }
.home__body .duo-card__insname { font-size: max(12px, calc(16px * var(--home-density, 1))); }
.home__body .duo-card__insrate { font-size: max(11px, calc(14px * var(--home-density, 1))); }
/* Match the reference: equal insets and compact content groups, without the lower-grid row gap. */
.home__body .home-grid > .duo-card.g-1x1[data-reorder-id] {
  padding: calc(20px * var(--home-density, 1)); row-gap: 0;
}
.home__body .duo-card--market.g-1x1 .duo-card__inslist { margin-top: calc(12px * var(--home-density, 1)); gap: calc(12px * var(--home-density, 1)); }
.home__body .duo-card--pool.g-1x1 .duo-card__count { margin-top: calc(12px * var(--home-density, 1)); }
.home__body .duo-card--pool.g-1x1 .duo-card__sub { margin-top: calc(6px * var(--home-density, 1)); }

/* Home report: one saved market slot; fixed visual hierarchy with a protected status row. */
.home__body .home-grid > .home-report.g-1x1[data-reorder-id] {
  display:grid; grid-template-rows:auto minmax(0,1fr) auto; gap:0;
  padding:calc(20px * var(--home-density, 1)); background:#FFFFFF; border:1px solid #E6E8EB; overflow:hidden;
}
.home__body .home-report .duo-card__title { font-size:14.5px; font-weight:700; line-height:1.25; color:#5C6068; }
.home-report__content { container-type:size; container-name:report-copy; min-height:0; display:flex; align-items:center; margin:6px 0; overflow:hidden; }
.home-report__text { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; line-clamp:2; overflow:hidden;
  font-size:15px; font-weight:600; color:#111316; line-height:1.4; letter-spacing:-.1px; word-break:keep-all; overflow-wrap:anywhere; }
.home-report__status { display:flex; align-items:center; gap:5px; min-width:0; min-height:18px; white-space:nowrap; font-size:12.5px; font-weight:600; line-height:18px; color:#008574; }
.home-report__status > span:last-child { overflow:hidden; text-overflow:ellipsis; }
.home-report[data-report-state="progress"] .home-report__status,
.home-report[data-report-state="insufficient"] .home-report__status { color:#5C6068; font-weight:500; }
.home-report[data-report-state="received"] .home-report__status { color:#8A8E96; font-weight:500; }
.home-report[data-report-state="error"] .home-report__text,
.home-report[data-report-state="unknown"] .home-report__text { color:#5C6068; font-weight:500; }
.home-report__dot { width:7px; height:7px; border-radius:50%; background:#00C8B3; flex:none; }
.home-report__spinner { width:13px; height:13px; border:2px solid #E6E8EB; border-top-color:#008574; border-radius:50%; animation:spin 1s linear infinite; flex:none; }
.home-report__gauge { display:flex; gap:3px; min-width:0; }
.home-report__gauge i { display:block; width:10px; height:4px; border-radius:2px; background:#E6E8EB; }
.home-report__gauge i.is-filled { background:#00C8B3; }
.home-report__skeleton { display:block; width:100%; height:12px; border-radius:6px; background:#EEF0F2; }
.home-report__skeleton--status { width:56px; align-self:center; }
@container report-copy (max-height:41.99px) { .home-report__text { -webkit-line-clamp:1; line-clamp:1; } }
@media(max-height:640px) { .home-report__text { -webkit-line-clamp:1; line-clamp:1; } }
@media(prefers-reduced-motion:reduce) { .home-report__spinner { animation:none; } }
