/* 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-grad); border: none; border-radius: var(--r-hero);
  padding: 22px; display: flex; flex-direction: column; min-height: 250px;
  text-align: left; cursor: pointer; color: #fff; 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: rgba(255, 255, 255, .65); }
.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: #fff; letter-spacing: -1px; }
.fav-hero.is-wide .fav-hero__num { font-size: 58px; }
.fav-hero__unit { font-size: 25px; color: rgba(255, 255, 255, .55); 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: rgba(255, 255, 255, .75); 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: rgba(255, 255, 255, .5); }
.fav-hero__dir  { display: flex; flex-direction: column; align-items: center; gap: 3px; }
.fav-hero__arrow { display: inline-block; font-size: 46px; color: rgba(255, 255, 255, .85); line-height: 1; }
.fav-hero__dirlabel { font-size: 14px; font-weight: 700; color: rgba(255, 255, 255, .65); }
.fav-hero.is-wide .fav-hero__dirlabel { font-size: 16px; }

.fav-tile {
  background: rgba(56, 189, 248, .10); border: 1px solid rgba(56, 189, 248, .18);
  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: var(--accent-forecast-lt); }
.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: rgba(255, 255, 255, .05); border: 1px dashed rgba(255, 255, 255, .2);
  border-radius: var(--r-hero); padding: 24px;
  display: flex; align-items: center; justify-content: center; text-align: center;
  font-size: 15.5px; color: rgba(255, 255, 255, .6); line-height: 1.5;
}

/* 최근 활동 */
.recent {
  background: var(--accent-recent-bg); border: 1px solid var(--accent-recent-bd);
  border-radius: var(--r-hero); padding: 26px;
  cursor: pointer;   /* 카드 전체가 작성으로 가는 영역(2026-09-30) */
}
.recent__head  { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.recent__title { font-size: 15px; font-weight: 700; color: var(--accent-recent); }
/* 리포트 표시가 둘(완료 + 요청 가능)일 때 — 각각 따로 누르는 버튼, 좁으면 다음 줄로 */
.recent__ctas { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; }
.recent__cta {
  font-size: 13.5px; font-weight: 500; color: var(--accent-report);
  background: var(--accent-report-bg); border: none; border-radius: var(--r-pill);
  padding: 8px 12px; cursor: pointer; min-height: 36px;
}
.recent__btn { width: 100%; text-align: left; background: none; border: none; padding: 0; cursor: pointer; }
.recent__line { font-size: 24px; font-weight: 700; color: var(--text-strong); line-height: 1.4; margin-top: 14px; }
.recent__sub  { font-size: 15px; color: var(--text-sub); margin-top: 8px; }
/* 「로그 N개 쌓임」이 버튼이 되며(2026-09-30) 버튼 기본 모양만 지웁니다 — 글자·자리·카드 높이는 예전 div와 같게 */
button.recent__sub { display: block; width: 100%; text-align: left; background: none; border: none; padding: 0; font-family: inherit; font-weight: 400; line-height: normal; cursor: pointer; }

/* 반폭 카드(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-star); 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: #fff; letter-spacing: -.5px; }
/* 로그인한 계정 이메일 — 상세 정보(성별) 아래 가운데, 예전 안내 문장 자리·스타일. 긴 주소는 줄을 바꿔 화면 안에 둔다 */
.profile__email { font-size: 12.5px; color: #6a6a6e; 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: #6a6a6e; line-height: 1.6; text-align: center; margin: -6px 0 10px; }
.profile__bandline { font-size: 15px; color: rgba(255, 255, 255, .8); 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: rgba(255, 255, 255, .04); 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; }

/* 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 .recent{padding:calc(12px + 14px * var(--home-room))}
.home__body .recent__line{margin-top:calc(8px + 6px * 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 .recent, .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 {  }
/* Recent activity keeps a dedicated status slot even when there is no badge.
   One-cell controls are short labels; their full accessible names are preserved. */
.home__body .recent { display: grid; grid-template-areas: 'title' 'body' 'status' 'footer'; grid-template-rows: auto 1fr auto auto; gap: 5px; }
.recent__head { grid-area: title; display: block; }
.recent__title {  line-height: 1.3; }
.recent__btn { grid-area: body; align-self: start; }
.home__body .recent__line { margin: 0;  line-height: 1.35; word-break: keep-all; overflow-wrap: break-word; }
.home__body .recent__ctas { grid-area: status; display: flex; justify-content: flex-start; align-items: start; gap: 4px; min-height: 32px; }
.recent__cta { min-height: 32px; padding: 5px 7px;  line-height: 1.25; white-space: nowrap; }
.recent__cta-short, .recent__line-compact { display: none; }
.recent.g-1x1 .recent__cta-full, .recent.g-1x1 .recent__line-full { display: none; }
.recent.g-1x1 .recent__cta-short, .recent.g-1x1 .recent__line-compact { display: inline; }
.home__body .recent__sub { grid-area: footer; margin: 0;  line-height: 1.3; }
.recent.g-2x1 { grid-template-areas: 'title status' 'body body' 'footer footer'; grid-template-columns: auto minmax(0,1fr); grid-template-rows: auto 1fr auto; gap: 10px 8px; }
.recent.g-1x2 .recent__ctas { flex-direction: column; min-height: 68px; }
.recent.g-2x1 .recent__ctas { flex-direction: row; flex-wrap: nowrap; min-height: 32px; justify-content: flex-end; }
.recent.g-2x1:has(.recent__cta:nth-child(2)) .recent__cta-full { display: none; }
.recent.g-2x1:has(.recent__cta:nth-child(2)) .recent__cta-short { display: inline; }
.recent.g-2x1 .recent__line, .recent.g-1x2 .recent__line {  line-height: 1.4; }
.recent.g-1x2 .recent__btn { align-self: center; }
.recent.g-1x2 .recent__title, .recent.g-2x1 .recent__title {  }
.recent.g-1x2 .recent__cta, .recent.g-2x1 .recent__cta {  }
/* 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 .recent, .home__body .duo-card, .home__body .fav-empty { padding: 8px 12px; }
  .home__body .recent { gap: 4px 8px; }
  .recent.g-2x1 .recent__line {  }
}

/* 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; }
.home__body .recent.g-2x1 { padding: 16px 18px; }
.recent.g-2x1 .recent__btn { align-self: center; }
.recent.g-2x1 .recent__title {  }
.recent.g-2x1 .recent__sub {  }
@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 {  }
 .home__body .recent.g-2x1 { padding: 8px 12px; gap: 4px 8px; }
 .recent.g-2x1 .recent__line {  }
 .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; }
@media (max-height:700px) {
  .home__body .recent.g-1x1 { padding: 6px 12px; gap: 3px; }
}

/* 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:rgba(255,255,255,.65); }
.home__body .fav-hero__num { font-size:56px; font-weight:800; color:#fff; letter-spacing:-1px; }
.home__body .fav-hero__unit { font-size:25px; font-weight:600; color:rgba(255,255,255,.55); }
.home__body .fav-hero__per { font-size:22px; color:rgba(255,255,255,.75); }
.home__body .fav-hero__pers { font-size:16px; color:rgba(255,255,255,.5); }
.home__body .fav-hero__arrow { font-size:46px; color:rgba(255,255,255,.85); }
.home__body .fav-hero__dirlabel { font-size:14px; font-weight:700; color:rgba(255,255,255,.65); }
.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:var(--accent-forecast-lt); }
.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:rgba(255,255,255,.6); }
.home__body .recent__title { font-size:15px; font-weight:700; color:var(--accent-recent); }
.home__body .recent__cta { font-size:13.5px; font-weight:500; color:var(--accent-report); background:var(--accent-report-bg); }
.home__body .recent__line { font-size:24px; font-weight:700; color:var(--text-strong); line-height:1.4; }
.home__body .recent__sub { font-size:15px; font-weight:400; color:var(--text-sub); }
.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:var(--accent-star); }

/* 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; }
}

/* Keep recent activity together as in the reference, rather than pinning the count to the bottom. */
.home__body .recent.g-2x1 { padding: 20px 24px; grid-template-rows: auto auto auto; row-gap: 0; align-content: center; }
.recent.g-2x1 .recent__head { align-self: center; }
.home__body .recent__ctas:empty { min-height: 0; }
.recent.g-2x1 .recent__btn { margin-top: 14px; }
.home__body .recent.g-2x1 .recent__sub { margin-top: 8px; }
@media(max-height:700px) {
 .home__body .recent.g-2x1 { padding: 8px 12px; }
 .recent.g-2x1 .recent__btn { margin-top: 8px; }
 .home__body .recent.g-2x1 .recent__sub { margin-top: 6px; }
}
