
    :root {
      /* 겹침 층 스케일 (2026-07-31 택소노미 흡수 — 즉흥 z-index 금지, 새 층은 반드시 여기 등록)
         본문 장식 1~2 < 하단 내비 80 < 모달 배경막 100 < 배지 축하 1200 < 모달 1300 < 시트 1400 < 로딩 덮개 9999
         별도 파일 층: 오류신고 패널 9000/9001(feedback-panel — 의도적으로 모달 위. 도움요청 버튼은 2026-08-03 제거) */
      /* 간격 2단계 (2026-08-08 은코치 "붙어있고, 어떤 데는 넓어" — 레이아웃 사전 macro/micro 여백 흡수)
         같은 묶음 안 카드끼리 = --gap-block(12px) · 묶음(밴드·구역) 사이 = --gap-zone(14px — 시안 §1-B).
         새 카드·구역 간격은 임의값 말고 반드시 이 둘 중 하나를 쓴다. */
      --gap-block: 12px;
      --gap-zone: 14px; /* §1-B: 성격 다른 섹션 사이 14px (2026-08-16 정본 정렬 — 옛 24px 폐기) */
      --z-deco: 1;
      --z-deco-2: 2;
      --z-nav: 80;
      --z-backdrop: 100;
      --z-celebrate: 1200;
      --z-modal: 1300;
      --z-sheet: 1400;
      --z-veil: 9999;
      /* ★ 2026-08-11 전면 통일 — 색 정본은 /components/design-tokens.css (은코치 블루).
         변수 이름은 파일 전체가 쓰고 있어 그대로 두고 값만 토큰에 맞춘다.
         (--orange 라는 이름이지만 값은 행동색 블루다 — 다음 정리 때 이름 일괄 교체) */
      --cream: #F2F4F6;
      --ink: #191F28;
      --ink-2: #4E5968;
      --ink-3: #4E5968;
      --ink-4: #6B7684;
      --line: #E5E8EB;
      --line-soft: #F2F4F6;
      --card: #FFFFFF;
      --orange: #0B5BD3;
      --orange-soft: rgba(11, 91, 211, 0.08);
      --orange-tint: rgba(11, 91, 211, 0.04);
      --green: #065F46;
      --gold: #0A4FB8;
      --radius: 14px;
      --radius-lg: 16px;
      --ease-out: cubic-bezier(.23,1,.32,1);
    }
    * { box-sizing: border-box; }
    [hidden] { display: none !important; }
    html { scroll-behavior: smooth; }
    html, body { margin: 0; padding: 0; overflow-x: hidden; max-width: 100%; }
    body {
      font-family: 'Pretendard Variable', Pretendard, -apple-system, BlinkMacSystemFont, sans-serif;
      background: var(--cream);
      color: var(--ink);
      font-size: 15px;
      line-height: 1.6;
      -webkit-font-smoothing: antialiased;
      letter-spacing: 0;
      word-break: keep-all;
      font-variant-numeric: tabular-nums;
    }
    a { color: inherit; text-decoration: none; }
    em { font-style: normal; }
    .container { max-width: 648px; margin: 0 auto; padding: 0 24px; }

    header.topbar {
      max-width: 648px;
      margin: 0 auto;
      padding: 28px 24px 0;
      display: flex;
      align-items: center;
      justify-content: space-between;
    }
    .brand h1 {
      font-size: 22px;
      font-weight: 700;
      margin: 0;
      letter-spacing: -0.02em;
    }
    .brand .tag {
      font-size: 13px;
      color: var(--ink-3);
      margin-left: 8px;
    }
    .top-cta {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      padding: 8px 16px;
      font-size: 13px;
      font-weight: 600;
      color: var(--ink-2);
      border: 1px solid var(--line);
      border-radius: 999px;
      background: #fff;
      white-space: nowrap; /* 버튼 안 글자 줄바꿈 금지 */
      transition: color 0.15s, border-color 0.15s;
    }
    .top-cta:hover { color: var(--orange); border-color: var(--orange); }
    .top-actions { display: inline-flex; align-items: center; gap: 10px; }
    .auth-state { display: inline-flex; align-items: center; gap: 8px; }
    .auth-email { font-size: 12.5px; color: var(--ink-3); font-weight: 700; max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .top-cta.kakao { color: #191600; border: none; background: #FEE500; }
    .top-cta.kakao:hover { color: #191600; background: #ffe94d; }
    @media (max-width: 560px) {
      .auth-email { display: none; }
      /* 모바일 상단바 — 좁으면 버튼이 다음 줄로 줄바꿈(잘림 방지). 브랜드·버튼 축소. */
      header.topbar { padding: 16px 14px 0; gap: 8px; flex-wrap: wrap; row-gap: 10px; }
      .brand { min-width: 0; flex: 1 1 auto; }
      .brand h1 { font-size: 17px; display: flex; align-items: baseline; gap: 6px; flex-wrap: wrap; }
      .brand .tag { margin-left: 0; font-size: 11.5px; }
      .top-actions { gap: 6px; flex-shrink: 0; margin-left: auto; }
      .top-cta { padding: 7px 10px; font-size: 11.5px; gap: 4px; }
    }

    section.hero { padding: 64px 0 32px; }
    .hero-eyebrow {
      display: inline-block;
      font-size: 13px;
      font-weight: 600;
      color: var(--orange);
      letter-spacing: 0.02em;
      padding: 6px 14px;
      border: 1px solid var(--orange-soft);
      background: var(--orange-soft);
      border-radius: 999px;
      margin-bottom: 22px;
    }
    .hero-title {
      font-size: 36px;
      font-weight: 800;
      line-height: 1.25;
      letter-spacing: -0.025em;
      margin: 0 0 14px;
    }
    .hero-sub {
      font-size: 16px;
      color: var(--ink-2);
      margin: 0 0 28px;
      max-width: 640px;
    }
    .input-stack { max-width: 640px; }
    .input-row { display: flex; gap: 8px; margin-bottom: 10px; }
    .input-row input[type="text"] {
      flex: 1;
      padding: 14px 18px;
      font-size: 15px;
      font-family: inherit;
      border: 1px solid var(--line);
      border-radius: var(--radius-lg);
      background: #fff;
      outline: none;
      transition: border-color 0.15s;
    }
    .input-row input[type="text"]:focus { border-color: var(--orange); }
    .input-row .remove-kw {
      width: 44px; padding: 0; font-size: 18px;
      background: transparent; color: var(--ink-3); border: 1px solid var(--line);
      border-radius: var(--radius-lg); cursor: pointer;
      transition: border-color 0.15s, color 0.15s;
    }
    .input-row .remove-kw:hover { border-color: var(--orange); color: var(--orange); }
    .input-label {
      font-size: 12px; font-weight: 700; color: var(--ink-3);
      letter-spacing: 0.04em; text-transform: uppercase; margin: 18px 0 8px;
    }
    .input-label:first-child { margin-top: 0; }
    .add-kw {
      padding: 8px 14px; font-size: 13px; font-weight: 600;
      font-family: inherit; color: var(--ink-2);
      background: transparent; border: 1px dashed var(--line);
      border-radius: var(--radius-lg); cursor: pointer;
      transition: border-color 0.15s, color 0.15s;
    }
    .add-kw:hover { border-color: var(--orange); color: var(--orange); }
    .add-kw:disabled { opacity: 0.4; cursor: not-allowed; }
    .submit-btn {
      width: 100%; max-width: 640px;
      padding: 16px 24px; margin-top: 16px;
      font-size: 16px; font-weight: 700; font-family: inherit;
      color: #fff; background: var(--orange); border: 0;
      border-radius: var(--radius-lg); cursor: pointer;
      transition: background 0.15s;
    }
    .submit-btn:hover { background: #0A4FB8; }
    .submit-btn:disabled { background: var(--ink-4); cursor: not-allowed; }
    .hint { font-size: 13px; color: var(--ink-3); margin-top: 8px; }

    /* 키워드 순위 카드 (메인) */
    .rank-card {
      background: var(--card); border: 1px solid var(--line);
      border-radius: var(--radius-lg); padding: 22px 26px; margin-bottom: 14px;
      display: grid; grid-template-columns: 1fr; gap: 14px; align-items: start;
    }
    .rank-card .kw {
      font-size: 14px; color: var(--ink-3); margin: 0 0 6px;
      font-weight: 600; letter-spacing: -0.01em;
    }
    .rank-card .rank-big {
      font-size: 46px; font-weight: 900; letter-spacing: -0.045em; /* 시안 거점 순위 정본 (audit-I-2 ⓖ) */
      line-height: 1; color: var(--ink); margin: 0;
    }
    .rank-card .rank-big.best { color: var(--green); }
    .rank-card .rank-big.out { font-size: 18px; color: var(--ink-3); font-weight: 700; }
    .rank-card.low-result { grid-template-columns: minmax(0, 1fr); }
    .rank-card .rank-big.low-result {
      color: var(--ink); font-size: 22px; line-height: 1.35;
      white-space: normal; overflow-wrap: anywhere;
    }
    .rank-card .rank-language-title {
      margin: 0; color: var(--ink); font-size: 38px; font-weight: 850; line-height: 1.1;
      font-variant-numeric: tabular-nums;
      word-break: keep-all; overflow-wrap: break-word;
    }
    .rank-card .rank-language-title.is-status {
      color: #4E5968; font-size: 18px; line-height: 1.4;
    }
    .rank-card .rank-language-meta {
      display: block; margin-top: 5px; color: var(--ink-3); font-size: 13px;
      font-weight: 600; line-height: 1.5; font-variant-numeric: tabular-nums;
    }
    .rank-card .rank-language-title.tone-rank { color: var(--ink); }
    .rank-card .rank-language-title.tone-top,
    .rank-card .rank-language-title.tone-good { color: #065F46; }
    .rank-card .rank-language-title.tone-warn { color: #B54708; }
    .rank-card .rank-language-title.tone-far,
    .rank-card .rank-language-title.tone-pending { color: #4E5968; }
    .rank-card .rank-low-result-description {
      margin: 10px 0 0; color: var(--ink-3); font-size: 14px; line-height: 1.65;
      white-space: normal; overflow-wrap: anywhere;
    }
    .rank-card .rank-suffix { font-size: 18px; color: var(--ink-2); font-weight: 600; margin-left: 4px; }
    .rank-card .top5 {
      grid-column: 1 / -1;
      padding-top: 14px; border-top: 1px dashed var(--line);
      font-size: 12px; color: var(--ink-3); line-height: 1.7;
    }
    .rank-card .top5 strong { color: var(--ink-2); font-weight: 600; }
    .rank-card .top5 .me {
      display: inline-block; padding: 1px 6px; margin-left: 4px;
      font-size: 11.5px; font-weight: 700; color: var(--orange);
      background: var(--orange-soft); border-radius: 999px;
    }

    /* ─── Result ─────────────────────────────────────── */
    section.result { padding: 24px 0 80px; display: none; }
    section.result.show { display: block; }

    .place-card {
      background: var(--card);
      border: 1px solid var(--line);
      border-radius: var(--radius-lg);
      padding: 24px 28px;
      margin-bottom: 20px;
    }
    .place-card .name {
      font-size: 22px;
      font-weight: 800;
      letter-spacing: -0.02em;
      margin: 0 0 4px;
    }
    .place-card .meta {
      font-size: 13px;
      color: var(--ink-3);
      margin: 0 0 16px;
    }
    .place-stats {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
      gap: 14px;
      padding-top: 16px;
      border-top: 1px solid var(--line-soft);
    }
    .stat {
      display: flex;
      flex-direction: column;
      gap: 2px;
    }
    .stat .label { font-size: 12px; color: var(--ink-3); }
    .stat .value { font-size: 18px; font-weight: 700; color: var(--ink); }
    .stat .value.na { color: var(--faint); font-weight: 500; font-size: 14px; }

    /* 약점 카드 */
    .action-card {
      background: linear-gradient(180deg, #fff 0%, var(--orange-tint) 100%);
      border: 1px solid var(--orange-soft);
      border-radius: var(--radius-lg);
      padding: 28px;
      margin-bottom: 20px;
    }
    .action-eyebrow {
      display: inline-block;
      font-size: 12px;
      font-weight: 700;
      color: var(--orange);
      letter-spacing: 0.04em;
      padding: 4px 10px;
      background: var(--orange-soft);
      border-radius: 999px;
      margin-bottom: 14px;
    }
    .action-title {
      font-size: 22px;
      font-weight: 800;
      letter-spacing: -0.02em;
      margin: 0 0 8px;
      line-height: 1.35;
    }
    .action-target {
      font-size: 13px;
      color: var(--ink-3);
      margin-bottom: 14px;
    }
    .action-target strong { color: var(--ink-2); }
    .action-body {
      font-size: 16px;
      color: var(--ink-2);
      margin: 0 0 18px;
      white-space: pre-line;
    }
    .action-foot {
      font-size: 13px;
      color: var(--ink-3);
      padding-top: 16px;
      border-top: 1px dashed var(--line);
    }

    /* CTA */
    .cta-card {
      background: var(--ink);
      color: #fff;
      border-radius: var(--radius-lg);
      padding: 28px;
      text-align: center;
    }
    .cta-card .cta-title {
      font-size: 20px;
      font-weight: 800;
      letter-spacing: -0.02em;
      margin: 0 0 8px;
    }
    .cta-card .cta-sub {
      font-size: 14px;
      color: rgba(255,255,255,0.75);
      margin: 0 0 20px;
    }
    .cta-card a {
      display: inline-block;
      padding: 12px 28px;
      background: var(--orange);
      color: #fff;
      font-weight: 700;
      border-radius: 999px;
      transition: background 0.15s;
    }
    .cta-card a:hover { background: #0A4FB8; }
    /* 동네 순위 히트맵 (멤버십) */
    .cta-card .cta-foot {
      font-size: 12px;
      color: rgba(255,255,255,0.55);
      margin-top: 14px;
    }

    .deep-link {
      display: inline-block;
      font-size: 13px;
      color: var(--ink-3);
      text-decoration: underline;
      text-underline-offset: 4px;
      margin-top: 18px;
    }
    .deep-link:hover { color: var(--orange); }

    /* 한눈요약 라이벌 스코어 칩 — 클릭하면 라이벌 대결 패널로 점프 */
    .sum-rival { display: inline-flex; align-items: center; gap: 7px; margin-top: 14px; padding: 9px 15px; border-radius: 999px; font-size: 13px; font-weight: 700; text-decoration: none; border: 1px solid var(--line); color: var(--ink-2); background: #fff; cursor: pointer; }
    .sum-rival b { font-size: 15px; letter-spacing: 0.5px; }
    .sum-rival.lead { background: #F4FBF6; border-color: #CDEAD7; color: #157A3F; }
    .sum-rival.behind { background: #FDECEC; border-color: #F2C4C8; color: #9B1C22; }
    .sum-rival .go { color: var(--orange); font-weight: 800; }
    #rival-panel.flash { animation: rival-flash 1.4s ease; }
    @keyframes rival-flash { 0%, 100% { box-shadow: none; } 30% { box-shadow: 0 0 0 4px rgba(11,91,211,.35); } }

    /* 키워드별 순위 · 라이벌 통합 카드 */
    .kw-rival-shell { max-width: 760px; margin: 0 auto; background: transparent; }
    #rank-panel-title { letter-spacing: 0; }
    #rival-panel { margin: 0; }
    #rival-panel > summary { list-style: none; }
    #rival-panel > summary::-webkit-details-marker { display: none; }
    #rival-score-box { min-height: 0; padding: 12px 16px; display: grid; gap: 7px; cursor: pointer; border: 1px solid #F3D8CE; border-radius: 12px; background: #F5F9FF; box-shadow: none; }
    #rival-score-box.behind { background: #FDECEC; border-color: #F2C4C8; }
    #rival-score-box.tie { background: #FBFAF7; border-color: #E7E0D5; }
    #rival-score-box .rs-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-width: 0; }
    #rival-score-box .rs-label { flex: 0 0 auto; color: var(--ink-2); font-size: 12px; font-weight: 900; }
    #rival-score-box .rs-score { display: inline-flex; align-items: baseline; gap: 4px; color: #6B7684; font-size: 22px; font-weight: 900; line-height: 1; font-variant-numeric: tabular-nums; letter-spacing: 0; }
    #rival-score-box .rs-score .rs-me { color: #065F46; }
    #rival-score-box .rs-score .rs-rival { color: #6B7684; }
    #rival-score-box .rs-state { flex: 0 1 auto; min-width: 0; color: #065F46; font-size: 12.5px; font-weight: 900; text-align: right; white-space: normal; word-break: keep-all; }
    #rival-score-box .rs-state.behind { color: #9B1C22; }
    #rival-score-box .rs-state.tie { color: var(--ink-3); }
    #rival-score-box .rs-bottom { display: flex; align-items: center; justify-content: space-between; gap: 10px; color: var(--ink-3); font-size: 12px; font-weight: 800; line-height: 1.35; }
    #rival-score-box .rs-more { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 4px; color: var(--ink-2); font-size: 12px; font-weight: 900; }
    #rival-score-box .rs-more .chev { display: inline-block; transition: transform .16s ease; }
    #rival-panel[open] #rival-score-box .rs-more .chev { transform: rotate(180deg); }
    #rival-body { padding: 12px 16px 16px; background: #fbfcfd; border: 1px solid #F3D8CE; border-radius: 12px; }
    #rival-body.standalone { border-top: 1px solid #F3D8CE; border-radius: 12px; }
    #rival-defense { max-width: 760px; margin: 0 auto; border: 1px solid #f4f6f8; border-radius: 12px; padding: 11px 16px; background: #fff; }
    @media (max-width: 480px) {
      #rival-score-box .rs-top { align-items: flex-start; }
      #rival-score-box .rs-bottom { align-items: flex-start; flex-direction: column; gap: 12px; }
    }

    /* 검색결과 밖 키워드 — 교체 권유 멘트 */
    .kw-hint { background: #FDECEC; border: 1px solid #F2C4C8; color: #9A3B20; font-size: 12.5px; line-height: 1.55; border-radius: 10px; padding: 9px 11px; margin-bottom: 8px; }
    .kw-hint b { color: #9B1C22; }

    /* 데모 모드 (?demo=1) — 예시 가게 대시보드 구경 */
    #demo-banner {
      background: linear-gradient(135deg, #EAF2FE, #DBE9FD); border: 1.5px solid rgba(11,91,211,.4);
      border-radius: var(--radius-lg); padding: 13px 16px; margin-bottom: 16px;
      font-size: 14px; line-height: 1.6;
    }
    #demo-banner a { position: relative; color: var(--orange); font-weight: 800; text-decoration: none; } /* 문장 끝 인라인 링크 — 큰 글씨에서 두 줄로 흐르게 nowrap 없음(클로드디자인 라운드 9 회신 P3-4) */
    #demo-banner a::after { content: ''; position: absolute; left: 50%; top: 50%; width: 44px; height: 44px; transform: translate(-50%, -50%); } /* 전환 CTA라 보이지 않는 44px 터치 확장은 유지(적대 검수 P3 · quick-log와 같은 수법) */
    .kw-demo-caption { display: none; margin: -4px 0 12px; color: var(--ink-3); font-size: 12.5px; font-weight: 700; }
    body.demo .kw-demo-caption { display: block; }
    .kw-demo-remaining { margin-top: -8px; color: var(--orange); font-variant-numeric: tabular-nums; }

    /* 예시 미리보기 카드 — 등록 전 히어로의 가치 데모 */
    .hero-demo {
      margin-top: 28px; background: var(--card); border: 1px solid var(--line);
      border-radius: var(--radius-lg); padding: 18px 20px 16px;
    }
    .hero-demo-head { display: flex; align-items: center; gap: 9px; margin-bottom: 12px; flex-wrap: wrap; }
    .hero-demo-head b { font-size: 14.5px; letter-spacing: -0.01em; }
    .hero-demo-badge { background: var(--orange-soft); color: var(--orange); border: 1px solid rgba(11,91,211,.3); font-size: 11.5px; font-weight: 800; border-radius: 999px; padding: 3px 10px; }
    .hero-demo-chart { display: block; width: 100%; height: auto; }
    .hero-demo-legend { display: flex; gap: 16px; margin-top: 8px; font-size: 12px; color: var(--ink-3); font-weight: 600; }
    .hero-demo-legend .hd-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 5px; vertical-align: 0; }
    .hero-demo-note { margin-top: 10px; font-size: 12.5px; color: var(--ink-3); line-height: 1.6; border-top: 1px solid var(--line-soft); padding-top: 10px; }
    .hero-demo-more { display: inline-block; margin-top: 10px; font-size: 13.5px; font-weight: 800; color: var(--orange); text-decoration: none; }
    /* 선이 왼쪽→오른쪽으로 그려지는 연출 (쌓이는 느낌) */
    .hd-line { stroke-dasharray: 620; stroke-dashoffset: 620; animation: hd-draw 1.8s ease-out 0.3s forwards; }
    .hd-line-b { animation-delay: 0.55s; }
    .hd-line-c { animation-delay: 0.8s; }   /* 3개 선이 시차를 두고 그려지게 (동시출발 방지) */
    .hd-line-a { animation-delay: 1.05s; }  /* 주황(내 가게) 선이 마지막에 강조되며 등장 */
    @keyframes hd-draw { to { stroke-dashoffset: 0; } }
    @media (prefers-reduced-motion: reduce) { .hd-line { animation: none; stroke-dashoffset: 0; } }

    /* 멤버 진입 로딩 — 실제로 하는 일 세 가지가 끝나는 대로 하나씩 초록 체크로 바뀐다.
       (2026-08-02 은코치 "실제 작업하고 있는 걸 완성해가는 흐름으로, 진단 서비스처럼")
       2026-08-16 audit-I-4 ⓜ: 시안 6종에 없는 구현 고유 화면(등록부 14행) — 연출(오브·순위 카운트다운)은 유지하되
       값은 전부 시안 로딩 문법으로 정렬. 상세(#6B7684)는 흰 카드 위 4.9:1로 AA 통과. */
    #tracker-loading {
      position: fixed; inset: 0; z-index: var(--z-veil); background: var(--cream);
      display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 18px;
      padding: 20px;
    }
    #tracker-loading[hidden] { display: none; }
    #tracker-loading .tl-brand { font-weight: 900; font-size: 18px; letter-spacing: -0.02em; }
    #tracker-loading .tl-brand small { font-weight: 600; color: var(--ink-3); font-size: 12px; margin-left: 6px; }

    #tracker-loading .tl-card {
      width: 100%; max-width: 340px; padding: 22px 24px; text-align: left;
      background: #fff; border: 1px solid var(--line); border-radius: 20px;
      box-shadow: 0 4px 20px rgba(0,0,0,.04);
    }
    #tracker-loading .tl-card[hidden] { display: none; }
    #tracker-loading .tl-head { display: flex; align-items: center; gap: 11px; margin-bottom: 15px; }
    #tracker-loading .tl-orb {
      width: 32px; height: 32px; border-radius: 50%; flex-shrink: 0;
      background: conic-gradient(from 0deg, #0B5BD3, #1D4F9C, #0B5BD3);
      animation: tl-orb 2.4s linear infinite;
    }
    /* ★ 시안 Parts 0818 진입 로딩 — 첫 줄 「보통 5초쯤」 · 제목 21px · 막대 6px + n/3 (2026-08-18) */
    #tracker-loading .tl-eta { font-size: 13px; font-weight: 800; color: var(--ink-3); margin-bottom: 4px; }
    #tracker-loading .tl-title { font-size: 21px; font-weight: 800; letter-spacing: -0.02em; color: var(--ink); line-height: 1.35; word-break: keep-all; }
    #tracker-loading .tl-sub { display: none; } /* 「네이버 플레이스 실시간 조회」 부제 제거 — 조회·크롤링은 사장님 말이 아니다 */
    #tracker-loading .tl-progress { display: flex; align-items: center; gap: 10px; margin: 0 0 14px; }
    #tracker-loading .tl-bar { flex: 1; min-width: 0; height: 6px; border-radius: 999px; background: #E5E8EB; overflow: hidden; display: block; }
    #tracker-loading .tl-bar-fill { display: block; height: 100%; border-radius: 999px; background: #0B5BD3; transition: width .5s ease; }
    #tracker-loading .tl-count { font-size: 12.5px; font-weight: 800; color: #1D4F9C; font-variant-numeric: tabular-nums; }
    #tracker-loading .tl-slow { margin: 10px 0 0; font-size: 13px; font-weight: 700; color: #93400B; background: #FFF3E8; border-radius: 10px; padding: 8px 12px; word-break: keep-all; }
    #tracker-loading .tl-slow[hidden] { display: none; }
    #tracker-loading .tl-foot { margin: 12px 0 0; font-size: 12.5px; color: var(--ink-3); text-align: center; word-break: keep-all; }

    #tracker-loading .tl-steps { display: flex; flex-direction: column; gap: 12px; background: #F2F4F6; border-radius: 16px; padding: 26px 22px; } /* 시안 로딩: 회색 상자 층 */
    #tracker-loading .tl-step {
      display: flex; align-items: flex-start; gap: 11px;
      transition: opacity .3s ease; /* 시안 로딩 스텝엔 배경 없음 (audit-I-4 ⓜ) */
    }
    /* ★ 2026-08-02 코덱스 검수 #6 — opacity 가 자식 글자에도 합성돼 실제 대비가 3.35:1 이었다
       (내 계산은 원색 5.35:1 만 봤다). 투명도를 빼고 색으로만 눌러 대비를 지킨다. */
    #tracker-loading .tl-step.done { background: transparent; }
    #tracker-loading .tl-step.done .tl-label { color: var(--ink-2); }
    /* 시안 Parts 0818: 한 번에 한 칸만 돈다 — 끝난 칸 체크(#E7F5EE/#065F46) · 지금 칸 스피너 · 남은 칸 회색 점 8px */
    #tracker-loading .tl-ico {
      width: 26px; height: 26px; margin-top: 0; flex-shrink: 0; border-radius: 50%; box-sizing: border-box;
      display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 900;
    }
    #tracker-loading .tl-step.now .tl-ico { border: 2.5px solid #E5E8EB; border-top-color: #0B5BD3; animation: tl-spin .8s linear infinite; }
    #tracker-loading .tl-step.wait .tl-ico::before { content: ''; width: 8px; height: 8px; border-radius: 50%; background: var(--ink-4); }
    #tracker-loading .tl-step.wait .tl-label { color: var(--ink-4); font-weight: 600; }
    #tracker-loading .tl-step.done .tl-ico { background: #E7F5EE; color: #065F46; animation: none; }
    #tracker-loading .tl-step.done .tl-ico::before { content: '✓'; }
    /* 자식 min-width 기본값이 auto라 긴 가게 이름이 칸을 밀어낸다 (web-ui-anti-slop ⑥-1) */
    #tracker-loading .tl-body { flex: 1; min-width: 0; }
    #tracker-loading .tl-label { font-size: 14.5px; font-weight: 700; color: var(--ink); line-height: 1.42; }
    /* 말줄임 금지 — 우리가 쓴 라벨이 잘리면 FAIL. 길면 줄바꿈으로 담는다 (web-ui-anti-slop ⑤-①) */
    #tracker-loading .tl-detail {
      margin-top: 2px; min-height: 15px; font-size: 12.5px; font-weight: 700; color: #6B7684;
      font-variant-numeric: tabular-nums; overflow-wrap: anywhere; transition: color .3s ease;
    }
    #tracker-loading .tl-step.done .tl-detail { color: var(--ok); }

    #tracker-loading .tl-finale { display: flex; flex-direction: column; align-items: center; gap: 14px; }
    #tracker-loading .tl-finale[hidden] { display: none; }
    #tracker-loading .tl-rank { font-size: 48px; font-weight: 900; letter-spacing: -0.045em; color: var(--brand-deep); font-variant-numeric: tabular-nums; line-height: 1; }
    #tracker-loading .tl-rank small { font-size: 22px; color: var(--ink); font-weight: 800; }
    #tracker-loading .tl-msg { font-size: 15px; font-weight: 700; color: var(--ink-2); }
    #tracker-loading .tl-pop { animation: tl-pop 0.45s ease; }
    @keyframes tl-orb { to { transform: rotate(360deg); } }
    @keyframes tl-spin { to { transform: rotate(360deg); } }
    @keyframes tl-pop { 0% { transform: scale(0.7); } 60% { transform: scale(1.15); } 100% { transform: scale(1); } }
    /* 상단 배너 슬롯: 모달이 아닌 본문 흐름 안의 안내다. */
    /* ★ 잠김 화면 (시안 EunCoach Tracker Locked · 2026-08-18) — guest / free / book 한 벌. lk- 접두 */
    .lk-screen { text-align: left; margin-top: 6px; }
    .lk-head { margin: 6px 0 20px; max-width: 680px; }
    .lk-head h1 { margin: 0; font-size: 26px; font-weight: 900; letter-spacing: -0.03em; line-height: 1.3; word-break: keep-all; }
    .lk-head p { margin: 8px 0 0; font-size: 15px; color: #4E5968; line-height: 1.6; word-break: keep-all; }
    .lk-stage { display: grid; border: 1px solid #E5E8EB; border-radius: 20px; overflow: hidden; background: #FFFFFF; box-shadow: 0 4px 20px rgba(0,0,0,.04); margin-bottom: 22px; }
    .lk-preview { grid-area: 1/1; padding: 26px 24px 30px; filter: blur(2.5px); opacity: .5; pointer-events: none; user-select: none; }
    .lk-pv-kw { font-size: 13px; font-weight: 800; color: #6B7684; }
    .lk-pv-rank { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 8px; }
    .lk-pv-num { font-size: 48px; font-weight: 900; letter-spacing: -0.045em; line-height: 1.1; }
    .lk-pv-delta { background: #E7F5EE; color: #065F46; font-size: 13.5px; font-weight: 800; border-radius: 999px; padding: 4px 12px; }
    .lk-pv-graph { width: 100%; height: 90px; display: block; margin-top: 12px; }
    .lk-pv-dates { display: flex; justify-content: space-between; font-size: 12.5px; color: #6B7684; font-weight: 700; margin-top: 2px; }
    .lk-pv-task { background: #EAF2FE; border-radius: 12px; padding: 14px; margin-top: 16px; display: flex; flex-direction: column; gap: 6px; }
    .lk-pv-task-cap { font-size: 12.5px; font-weight: 800; color: #1D4F9C; }
    .lk-pv-task-body { font-size: 15px; font-weight: 700; color: #191F28; }
    .lk-pv-reports { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr)); gap: 10px; margin-top: 12px; }
    .lk-pv-reports div { border: 1px solid #E5E8EB; border-radius: 14px; padding: 14px; font-size: 14px; font-weight: 700; color: #4E5968; }
    .lk-stage::before { content: ''; grid-area: 1/1; background: linear-gradient(180deg, rgba(242,244,246,.62), rgba(242,244,246,.94)); }
    .lk-preview-note { grid-area: 1/1; align-self: start; justify-self: center; margin-top: 16px; z-index: var(--z-deco-2); background: #FFFFFF; border: 1px solid #E5E8EB; border-radius: 999px; padding: 5px 12px; font-size: 12.5px; font-weight: 800; color: #4E5968; }
    .lk-card { grid-area: 1/1; z-index: var(--z-nav); align-self: center; justify-self: center; margin: 64px 20px 24px; width: min(100%, 440px); box-sizing: border-box; background: #FFFFFF; border: 1px solid #E5E8EB; border-radius: 20px; box-shadow: 0 8px 28px rgba(0,0,0,.12); padding: 28px 24px; display: flex; flex-direction: column; align-items: center; gap: 12px; text-align: center; word-break: keep-all; }
    .lk-lock-ico { width: 52px; height: 52px; border-radius: 14px; background: #EAF2FE; color: #0B5BD3; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
    .lk-card h2 { margin: 0; font-size: 19px; font-weight: 800; }
    .lk-card p { margin: 0; font-size: 14.5px; color: #4E5968; line-height: 1.6; }
    .lk-btn { width: 100%; box-sizing: border-box; display: flex; align-items: center; justify-content: center; min-height: 52px; border-radius: 14px; font-size: 16px; font-weight: 800; text-decoration: none; margin-top: 4px; }
    .lk-btn-kakao { background: #FEE500; color: #191F28; }
    .lk-btn-primary { background: #0B5BD3; color: #FFFFFF; }
    .lk-btn-primary:hover { background: #1D4F9C; color: #FFFFFF; }
    .lk-links { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 18px; }
    .lk-links a { font-size: 14px; font-weight: 700; color: #4E5968; text-decoration: none; display:inline-flex; align-items:center; min-height:44px; } /* 화살표 링크 = 세로 44px (deliver-0819 2) */
    .lk-links a:hover { color: #191F28; }
    .lk-benefits { margin-bottom: 22px; }
    .lk-benefits h2 { margin: 0 0 12px; font-size: 17px; font-weight: 800; }
    .lk-benefit-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: 12px; }
    .lk-benefit { background: #FFFFFF; border: 1px solid #E5E8EB; border-radius: 20px; padding: 20px; box-shadow: 0 4px 20px rgba(0,0,0,.04); display: flex; flex-direction: column; gap: 8px; word-break: keep-all; }
    .lk-benefit b { font-size: 15.5px; font-weight: 800; }
    .lk-benefit p { margin: 0; font-size: 14px; color: #4E5968; line-height: 1.6; }
    @media (max-width: 520px) { .lk-head h1 { font-size: 23px; } .lk-card { margin: 56px 12px 20px; padding: 24px 18px; } }
    #tracker-banner-slot { margin: 0 0 14px; min-width: 0; min-height: 0; }
    #tracker-banner-slot[hidden] { display: none; }
    /* ★ D안 — 클로드디자인 「공지 배너 확정」(Banners 0818, 2026-08-18) · 은코치 「d로 써」
       옅은 바탕 + 가운데 한 줄만 색. 테두리·그림자 없음 — 그게 아래 흰 카드(내 데이터)와 성격을 가르는 유일한 장치.
       「소식」만 흰 바탕 + 1px 테두리 — 급하지 않은 알림이라 가장 조용한 껍데기(파는 것이라서가 아니다). hover는 배경을 바꾸지 않고 그림자만. */
    .tracker-banner {
      position: relative; display: flex; align-items: center; gap: 12px;
      min-width: 0; border: 0; border-radius: 18px; box-shadow: none;
      background: #EAF2FE; color: #191F28; --banner-ink: #0B5BD3;
      transition: box-shadow .18s ease;
    }
    .tracker-banner:hover { box-shadow: 0 4px 20px rgba(0,0,0,.04); }
    .tracker-banner-tone-must { background: #FFF3E8; --banner-ink: #93400B; }
    .tracker-banner-tone-report, .tracker-banner-tone-ask, .tracker-banner-tone-notice { background: #EAF2FE; --banner-ink: #0B5BD3; }
    .tracker-banner-tone-news { background: #FFFFFF; border: 1px solid #E5E8EB; --banner-ink: #191F28; }
    .tracker-banner-tone-congrats { background: #E7F5EE; --banner-ink: #065F46; }
    .tracker-banner-body { flex: 1 1 auto; min-width: 0; display: flex; align-items: center; gap: 11px; color: inherit; text-decoration: none; }
    .tracker-banner-body:hover, .tracker-banner-body:focus-visible { color: inherit; text-decoration: none; }
    /* 세 줄형 (104px) — 위 13.5 · 가운데 21/900 종류색 · 아래 12.5. 색은 가운데 한 줄에만 */
    .tracker-banner-layout-three { padding: 17px 52px 17px 20px; }
    .tracker-banner-layout-three .tracker-banner-body { flex-direction: column; align-items: flex-start; gap: 3px; }
    .tracker-banner-above { font-size: 13.5px; line-height: 1.5; color: #4E5968; overflow-wrap: anywhere; word-break: keep-all; }
    .tracker-banner-layout-three .tracker-banner-center { font-size: 21px; font-weight: 900; line-height: 1.35; letter-spacing: -0.03em; color: var(--banner-ink); overflow-wrap: anywhere; word-break: keep-all; }
    .tracker-banner-source { font-size: 12.5px; line-height: 1.5; color: #6B7684; overflow-wrap: anywhere; word-break: keep-all; }
    /* 한 줄형 (56px) — 라벨 알약(흰 배경) + 본문 14.5/700 종류색. 20자 넘으면 두 줄로 흐르되 자르지 않는다 */
    .tracker-banner-layout-one { padding: 8px 52px 8px 18px; min-height: 56px; }
    .tracker-banner-label { flex: 0 0 auto; align-self: flex-start; margin-top: 2px; padding: 3px 8px; border-radius: 7px; background: #FFFFFF; color: #4E5968; font-size: 11.5px; font-weight: 800; line-height: 1.4; }
    .tracker-banner-tone-news .tracker-banner-label { background: #F2F4F6; }
    .tracker-banner-layout-one .tracker-banner-center { font-size: 14.5px; font-weight: 700; line-height: 1.5; color: var(--banner-ink); overflow-wrap: anywhere; word-break: keep-all; }
    .tracker-banner-layout-custom { padding: 14px 52px 14px 16px; }
    /* 「한 문항」 — × 대신 흰 배경 버튼 두 개. 바탕이 #EAF2FE라 버튼도 같은 색이면 눌 것처럼 안 보인다 */
    .tracker-banner-askable { flex-wrap: wrap; padding-right: 20px; }
    .tracker-banner-layout-one.tracker-banner-askable { padding-right: 18px; }
    .tracker-banner-ask { flex: 1 0 100%; display: flex; gap: 8px; margin-top: 11px; }
    .tracker-banner-layout-one .tracker-banner-ask { flex: 0 0 auto; margin-top: 0; margin-left: auto; }
    .tracker-banner-answer { flex: 1 1 0; min-width: 0; min-height: 44px; padding: 0 14px; border: 0; border-radius: 11px; background: #FFFFFF; color: #1D4F9C; font: inherit; font-size: 13.5px; font-weight: 800; cursor: pointer; }
    .tracker-banner-answer:hover { background: #0B5BD3; color: #FFFFFF; }
    .tracker-banner-answer-no { color: #4E5968; }
    .tracker-banner-answer-no:hover { background: #F2F4F6; color: #4E5968; }
    .tracker-banner-answer:focus-visible { outline: 3px solid rgba(11,91,211,.45); outline-offset: 3px; }
    .tracker-banner-close {
      /* D안 — 테두리·배경 없는 × 20px. 세로 중앙 */
      position: absolute; top: 50%; right: 12px; transform: translateY(-50%);
      min-width: 44px; min-height: 44px; /* 44px 칩 룰 (클로드디자인 0818-9) */
      border: 0; border-radius: 10px; background: transparent; color: #4E5968;
      font: inherit; font-size: 20px; line-height: 1; cursor: pointer;
    }
    .tracker-banner-layout-one .tracker-banner-close { font-size: 19px; }
    .tracker-banner-close:focus-visible,
    .tracker-banner-body:focus-visible { outline: 3px solid rgba(11,91,211,.45); outline-offset: 3px; }
    .tracker-banner-custom { min-width: 0; width: 100%; }
    .tracker-banner-custom .saction.celebrate {
      min-width: 0; background: transparent; border: 0; padding: 0; color: #191F28;
    }
    .tracker-banner-custom .saction.celebrate .ey,
    .tracker-banner-custom .saction.celebrate .tx,
    .tracker-banner-custom .saction.celebrate .celebrate-observation { overflow-wrap: anywhere; }
    .record-peer-total { min-width: 0; margin: 0 0 9px; color: #4E5968; font-size: 13px; font-weight: 750; line-height: 1.5; overflow-wrap: anywhere; }
    .record-peer-total:empty { display: none; }
    /* 동료 총량 한 줄 — 「오늘 기록」 카드 안, 기록 버튼 아래 (시안 Parts 0818). 12.5px 회색, 숫자만 굵게 */
    .quicklog-peer-total { margin: 8px 0 0; font-size: 12.5px; line-height: 1.55; color: var(--ink-4); min-width: 0; word-break: keep-all; }
    .quicklog-peer-total b { font-weight: 800; color: var(--ink-2); }
    .quicklog-peer-total:empty { display: none; }
    @media (max-width: 520px) {
      .tracker-banner-layout-three { padding: 15px 48px 15px 17px; }
      .tracker-banner-layout-three .tracker-banner-center { font-size: 19px; }
      .tracker-banner-layout-one { padding-left: 15px; }
    }

    @media (prefers-reduced-motion: reduce) {
      #tracker-loading .tl-orb, #tracker-loading .tl-ico, #tracker-loading .tl-pop { animation: none; }
      #tracker-loading .tl-ico { border-top-color: var(--brand-deep); }
    }

    /* 로딩 */
    .loading {
      padding: 48px 0;
      text-align: center;
      color: var(--ink-3);
      font-size: 14px;
    }
    .spinner {
      display: inline-block;
      width: 18px;
      height: 18px;
      border: 2px solid var(--line);
      border-top-color: var(--orange);
      border-radius: 50%;
      animation: spin 0.7s linear infinite;
      vertical-align: middle;
      margin-right: 8px;
    }
    @keyframes spin { to { transform: rotate(360deg); } }

    .err-card {
      background: #fff;
      border: 1px solid var(--line);
      border-radius: var(--radius-lg);
      padding: 18px 22px;
      color: var(--ink-2);
      font-size: 14px;
    }

    /* ─── Register modal ─────────────────────────────── */
    .modal-backdrop {
      position: fixed; inset: 0; background: rgba(0,0,0,0.45);
      display: none; align-items: center; justify-content: center; z-index: var(--z-backdrop);
    }
    .modal-backdrop.show { display: flex; }
    .modal {
      background: #fff; border-radius: var(--radius-lg);
      padding: 32px; max-width: 480px; width: calc(100% - 48px);
      max-height: 86vh; overflow-y: auto;
    }
    .modal h3 { margin: 0 0 8px; font-size: 22px; font-weight: 800; letter-spacing: -0.02em; }
    .modal p.lead { margin: 0 0 20px; color: var(--ink-2); font-size: 14px; }
    .modal label { display: block; font-size: 13px; font-weight: 600; margin: 14px 0 6px; color: var(--ink-2); }
    .modal input[type="email"], .modal input[type="text"] {
      width: 100%; padding: 12px 14px; font-size: 14px; font-family: inherit;
      border: 1px solid var(--line); border-radius: var(--radius); background: #fff; outline: none;
    }
    .modal input:focus { border-color: var(--orange); }
    .persona-options { display: grid; grid-template-columns: 1fr; gap: 8px; margin-top: 6px; }
    .persona-options label.opt {
      display: flex; gap: 12px; padding: 12px 14px; border: 1px solid var(--line);
      border-radius: var(--radius); cursor: pointer; font-weight: 500; font-size: 14px;
      transition: border-color 0.15s, background 0.15s; margin: 0; align-items: flex-start;
    }
    .persona-options label.opt:hover { border-color: var(--orange); }
    .persona-options input[type="radio"] { margin-top: 2px; accent-color: var(--orange); }
    .persona-options label.opt small { display: block; color: var(--ink-3); font-size: 12px; margin-top: 2px; }
    .modal-actions { display: flex; gap: 8px; margin-top: 22px; }
    .modal-actions button {
      flex: 1; padding: 13px; font-size: 14px; font-weight: 700; font-family: inherit;
      border: 0; border-radius: var(--radius); cursor: pointer; transition: background 0.15s, color 0.15s;
    }
    .btn-primary { background: var(--orange); color: #fff; }
    .btn-primary:hover { background: #0A4FB8; }
    .btn-primary:disabled { background: var(--ink-4); cursor: not-allowed; }
    .btn-secondary { background: transparent; color: var(--ink-2); border: 1px solid var(--line) !important; }

    /* ─── Dashboard ─────────────────────────────────── */
    /* 복원 대기 중엔 옛 첫 화면(hero)이 한순간도 비치지 않게 가린다 (2026-08-03 잔상 실신고) */
    html.tracker-restore-pending section.hero { visibility: hidden; }
    section.dashboard { padding: 40px 0 80px; display: none; }
    section.dashboard.show { display: block; }
    .dash-head { margin-bottom: 24px; }
    .dash-head h2 { margin: 0 0 4px; font-size: 22px; font-weight: 800; letter-spacing: -0.02em; }
    .dash-head .sub { color: var(--ink-3); font-size: 14px; }
    .dash-flow-badge {
      margin-top: 3px; font-size: 12px; font-weight: 800; padding: 5px 12px; border-radius: 999px;
      white-space: normal; overflow-wrap: anywhere; background: var(--line-soft); color: var(--ink-2);
    }
    .dash-flow-badge.flat { color: var(--ink-3); }
    .dash-flow-badge[hidden] { display: none; }
    .dash-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
    .panel {
      background: var(--card); border: 1px solid var(--line);
      border-radius: var(--radius-lg); padding: 16px;
    }
    .panel h4 { margin: 0 0 14px; font-size: 16px; font-weight: 700; letter-spacing: -0.01em; }
    .panel .panel-sub { font-size: 13px; color: var(--ink-3); margin: -6px 0 12px; line-height: 1.65; }
    /* 접이식 패널은 제목(h4)이 margin:0이라 별도 윗간격 필요 — 제목·설명 붙음 방지 */
    .panel-collapsible .collapsible-body > .panel-sub:first-child { margin-top: 8px; }
    /* ＋ 더 보기 — 정보 6패널 접기(토스식 위계). 핵심 3(한눈요약·라이벌·오늘 한 가지)만 위로. 동네지도·순위흐름그래프는 시세판 대체로 제거(2026-07-05 은코치) */
    .more-wrap { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg); }
    .more-wrap > summary { list-style: none; cursor: pointer; padding: 18px 22px; }
    .more-wrap > summary::-webkit-details-marker { display: none; }
    .more-wrap .more-top { display: flex; align-items: center; justify-content: space-between; }
    .more-wrap .more-t { font-size: 16px; font-weight: 800; letter-spacing: -0.01em; }
    .more-wrap .more-cnt { color: var(--orange); }
    .more-wrap .more-chev { display: inline-block; font-size: 14px; color: var(--ink-3); transition: transform .2s; }
    .more-wrap[open] .more-chev { transform: rotate(180deg); color: var(--orange); }
    .more-wrap .more-sub { font-size: 12px; color: var(--ink-3); margin-top: 9px; line-height: 1.6; }
    .more-wrap[open] .more-sub { display: none; }
    .more-wrap .more-body { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; padding: 2px 12px 14px; }

    .kw-list { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0; }
    .kw-chip {
      display: inline-flex; align-items: center; flex-wrap: wrap; gap: 6px;
      max-width: 100%;
      padding: 6px 10px 6px 14px; background: var(--orange-soft);
      border-radius: 999px; font-size: 13px; font-weight: 500; color: var(--ink);
    }
    .kw-chip-label { min-width: 0; white-space: normal; overflow-wrap: anywhere; }
    .kw-primary-badge {
      flex: none; padding: 2px 7px; border-radius: 999px;
      background: #fff; color: var(--orange-text); font-size: 11.5px; font-weight: 800;
    }
    .kw-chip button {
      background: transparent; border: 0; padding: 0; cursor: pointer;
      color: var(--ink-3); font-size: 14px; line-height: 1; width: 18px; height: 18px;
      border-radius: 50%; transition: background 0.15s, color 0.15s; position: relative;
    }
    .kw-chip button::after { content: ''; position: absolute; inset: -13px; }
    .kw-chip button:hover { background: var(--ink-4); color: #fff; }
    .kw-chip .kw-primary-toggle {
      flex: none; width: 24px; height: 24px; font-size: 19px; color: var(--orange-text);
    }
    .kw-chip .kw-primary-toggle::after { inset: -10px; }
    .kw-chip .kw-primary-toggle:hover { background: #fff; color: var(--orange-text); }
    .kw-chip .kw-primary-toggle.kw-primary-nudge {
      background: #fff; box-shadow: 0 0 0 0 rgba(11, 91, 211, 0.28);
      animation: kw-primary-pulse 1.8s ease-out infinite;
    }
    .kw-chip .kw-primary-toggle.kw-primary-nudge::before {
      content: '→'; position: absolute; right: calc(100% + 3px); top: 50%;
      color: var(--orange-text); font-size: 13px; font-weight: 800;
      transform: translateY(-50%); pointer-events: none;
      animation: kw-primary-arrow 1.8s ease-in-out infinite;
    }
    .kw-chip .kw-delete { flex: none; margin-left: 2px; }
    .kw-chip.kw-chip-crowded {
      width: 100%; padding: 12px; border: 1px solid #E5E8EB; border-radius: 14px;
      background: #FFF3E8; align-items: flex-start;
    }
    .kw-chip.kw-chip-crowded .kw-chip-label { flex: 1 1 180px; line-height: 1.5; }
    .kw-quality-tag {
      display: flex; flex-wrap: wrap; align-items: baseline; gap: 3px 9px;
      margin-top: 8px; padding: 8px 10px; border: 1px solid #E5E8EB; border-radius: 10px;
      background: #FFF3E8; color: #93400B; line-height: 1.5;
    }
    .kw-quality-tag strong { color: #93400B; font-size: 13px; overflow-wrap: anywhere; word-break: keep-all; }
    .kw-quality-tag small { color: #93400B; font-size: 12px; overflow-wrap: anywhere; word-break: keep-all; }
    .kw-quality-notice {
      display: flex; flex: 0 0 100%; flex-wrap: wrap; align-items: center; gap: 10px 12px;
      min-width: 0; padding-top: 10px; border-top: 1px solid rgba(122, 79, 0, .2);
      color: #93400B; line-height: 1.55;
    }
    .kw-quality-copy { display: flex; flex: 1 1 220px; min-width: 0; flex-direction: column; gap: 2px; }
    .kw-quality-copy strong { color: #93400B; font-size: 13.5px; overflow-wrap: anywhere; word-break: keep-all; }
    .kw-quality-copy small { color: #93400B; font-size: 12px; overflow-wrap: anywhere; word-break: keep-all; }
    .kw-quality-split-toggle,
    .kw-quality-split-buttons button {
      width: auto; height: auto; min-height: 44px; padding: 9px 13px;
      border: 1px solid #E5E8EB; border-radius: 10px; background: #fff; color: #93400B;
      font: inherit; font-size: 13px; font-weight: 800; line-height: 1.45;
      text-align: center; white-space: normal; overflow-wrap: anywhere; word-break: keep-all;
      cursor: pointer;
    }
    .kw-chip .kw-quality-split-toggle,
    .kw-chip .kw-quality-split-buttons button {
      width: auto; height: auto; min-height: 44px; padding: 9px 13px;
      border: 1px solid #E5E8EB; border-radius: 10px; background: #fff; color: #93400B;
      font-size: 13px; line-height: 1.45;
    }
    .kw-chip .kw-quality-split-toggle::after,
    .kw-chip .kw-quality-split-buttons button::after { display: none; }
    .kw-quality-split-toggle:hover,
    .kw-quality-split-buttons button:hover { background: #FFF3E8; color: #93400B; }
    .kw-quality-split-buttons button:disabled {
      border-color: #C9BFAF; background: #F4F1EC; color: #625A4E; cursor: not-allowed;
    }
    .kw-quality-split-options {
      display: block; flex: 0 0 100%; min-width: 0; padding: 11px;
      border: 1px solid rgba(122, 79, 0, .22); border-radius: 10px; background: #fff;
    }
    .kw-quality-split-options[hidden] { display: none; }
    .kw-quality-split-options > p,
    .kw-quality-split-fallback { margin: 0; color: #93400B; font-size: 12.5px; line-height: 1.6; }
    .kw-quality-split-buttons { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 9px; }
    .kw-quality-split-fallback { flex: 0 0 100%; }
    .kw-quality-registration-result {
      display: block; margin-bottom: 9px; color: #294F82; font-weight: 800;
      overflow-wrap: anywhere; word-break: keep-all;
    }
    #kw-err.kw-quality-registration-notice {
      padding: 13px; border-color: #E5E8EB; background: #FFF3E8; color: #93400B;
    }
    #kw-err.kw-quality-registration-notice .kw-quality-notice { padding-top: 0; border-top: 0; }
    .kw-primary-guide { margin: 2px 0 10px; color: var(--ink-2); font-size: 13px; line-height: 1.65; }
    .kw-primary-guide.is-nudging {
      margin-top: 6px; padding: 9px 11px; border-radius: var(--radius);
      background: var(--orange-soft); color: var(--ink); font-weight: 600;
    }
    .kw-primary-guide.is-nudging strong { color: var(--orange-text); font-weight: 850; }
    @keyframes kw-primary-pulse {
      0%, 100% { box-shadow: 0 0 0 0 rgba(11, 91, 211, 0.28); transform: scale(1); }
      50% { box-shadow: 0 0 0 7px rgba(11, 91, 211, 0); transform: scale(1.06); }
    }
    @keyframes kw-primary-arrow {
      0%, 100% { opacity: 0.55; transform: translate(-2px, -50%); }
      50% { opacity: 1; transform: translate(1px, -50%); }
    }
    /* ★ 키워드 카드(시안 이식 2026-07-31) */
    .keyword-rank-card {
      padding: 20px; border: 1px solid var(--line); border-radius: var(--radius-lg);
      background: #fff; box-shadow: 0 4px 20px rgba(0,0,0,.04); /* 옛 --shadow-sm은 정의 없는 죽은 토큰이었다 (audit-I-3 관문 적발) */
    }
    .keyword-card-label {
      display: block; color: var(--ink); font-size: 14px; font-weight: 850;
      line-height: 1.5; overflow-wrap: anywhere; word-break: keep-all;
    }
    .keyword-tap-hint { margin: 4px 0 2px; font-size: 12px; color: var(--sub, #4E5968); line-height: 1.5; word-break: keep-all; }
    .keyword-tap-hint b { color: var(--brand-deep, #0B5BD3); font-weight: 900; }
    .rank-lanes { margin: 6px 0 4px; }
    /* 줄 아래 인라인 상세 (2026-07-31 은코치 "합쳐봐") — 줄이 요약 역할이므로 옮겨온 상세의 자체 요약은 숨긴다 */
    .rank-lane-detail { border-bottom: 1px solid var(--line); }
    .rank-lane-detail:last-child { border-bottom: 0; }
    .rank-lane-detail .kw-market-row { border: 1px solid var(--line); border-radius: 14px; margin: 2px 0 14px; background: #fff; overflow: hidden; }
    .rank-lane-detail .kw-market-row > summary { display: none; }
    .rank-detail-store { display: none !important; }
    /* 2026-08-02 은코치 "클릭이 된다는 표시가 없어서 아무도 클릭을 안 해"
       룰 [[feedback_ui_affordance_discoverability_2026jul06]] — 클릭 가능한 행은 우측 › 명시. */
    .rank-lane { display: flex; align-items: center; gap: 12px; padding: 13px 2px 13px 2px; border-bottom: 1px solid var(--line); cursor: pointer;
                 border-radius: 10px; transition: background .13s; }
    .rank-lane:last-child { border-bottom: 0; }
    .rank-lane::after { content: '›'; flex: none; font-size: 20px; font-weight: 800; color: #C3BBB0; margin-left: 2px; padding-right: 4px; line-height: 1; }
    .rank-lane:hover { background: #FAF8F4; }
    .rank-lane:hover::after { color: var(--brand-deep, #0B5BD3); }
    .rank-lane:focus-visible { outline: 2px solid rgba(11,91,211,.42); outline-offset: 2px; }

    /* 2026-08-02 은코치 "거점키워드는 더 돋보이게" — 아침 카톡이 이 검색어로 하루를 연다.
       ★ 색만으로는 안 보여서, 왼쪽 띠 + 옅은 배경 + '아침 카톡 기준' 꼬리표를 함께 준다. */
    .rank-lane.is-primary { background: #F5F9FF; box-shadow: inset 3px 0 0 var(--brand, #0B5BD3); padding-left: 10px; }
    .rank-lane.is-primary .rl-kw { color: var(--brand-deep, #0B5BD3); }
    .rank-lane .rl-primary-tag { flex: none; margin-left: 7px; max-width: 100%; font-size: 11.5px; font-weight: 900; letter-spacing: -.2px;
                                 color: var(--brand-deep, #0B5BD3); background: #DBE9FD; border-radius: 999px; padding: 3px 8px; white-space: normal; overflow-wrap: anywhere; }
    .rank-lane .rl-rank { flex: none; width:auto; min-width:62px; max-width:108px; text-align: center; font-size: 24px; font-weight: 850; color: var(--ink); font-variant-numeric: tabular-nums; line-height: 1.15; white-space:normal; overflow-wrap:anywhere; }
    .rank-lane .rl-rank small { font-size: 13px; font-weight: 800; color: var(--sub); margin-left: 1px; }
    .rank-lane .rl-rank.tone-far, .rank-lane .rl-rank.tone-pending { font-size: 12.5px; font-weight: 800; color: var(--sub); line-height: 1.3; word-break: keep-all; }
    .rank-lane.good .rl-rank { color: var(--green); }
    .rank-lane .rl-main { flex: 1; min-width: 0; }
    /* ★ 2026-08-02 은코치 "추적키워드 거점키워드 글자가 겹쳐있어" — '아침 카톡 기준' 꼬리표가
       오른쪽 검색량 위로 올라타 있었다. 원인은 min-width 기본값 auto (web-ui-anti-slop ⑥-1):
       칸이 좁아도 안 줄어들어 옆 칸을 밀어냈다. 좁으면 꼬리표가 아랫줄로 내려가게 한다. */
    .rank-lane .rl-kw { display: flex; align-items: center; flex-wrap: wrap; row-gap: 3px; min-width: 0; font-size: 15px; font-weight: 800; color: var(--ink); word-break: keep-all; }
    .rank-lane .rl-star { flex: none; font: inherit; font-size: 17px; line-height: 1; border: 0; background: none; padding: 12px 8px; margin: -12px 2px -12px -8px; cursor: pointer; color: var(--ink-3); }
    .rank-lane .rl-star.on { color: var(--brand-deep); font-size: 19px; }
    .rank-lane .rl-note { display: block; font-size: 11.5px; color: var(--faint); margin-top: 2px; }
    .rank-lane .rl-vol { flex: none; font-size: 12.5px; font-weight: 800; color: var(--ink-2); font-variant-numeric: tabular-nums; text-align: right; }
    .rank-measurement-note {
      margin: 6px 0 0; padding: 0; border-radius: 0;
      background: transparent; color: var(--ink-2); font-size: 12.5px; line-height: 1.65;
      overflow-wrap: anywhere;
    }
    .rank-measurement-note span, .rank-measurement-note small { display: block; }
    .rank-measurement-note small { color: var(--ink-2); font-size: 12px; }

    .keyword-discovery {
      margin-top: 14px; padding: 14px 15px 4px; border-radius: 12px;
      background: var(--line-soft);
    }
    .keyword-discovery[hidden] { display: none; }
    .keyword-discovery .keyword-card-label { font-size: 13px; }
    .kw-suggested { margin: 0; }
    .kw-discovery-row {
      display: flex; align-items: center; gap: 12px; padding: 12px 0;
    }
    .kw-discovery-copy { flex: 1; min-width: 0; }
    .kw-discovery-copy b {
      display: block; color: var(--ink); font-size: 16.5px; line-height: 1.45;
      overflow-wrap: anywhere; word-break: keep-all;
    }
    .kw-discovery-copy span {
      display: block; margin-top: 2px; color: var(--ink-2); font-size: 12.5px; line-height: 1.5;
    }
    .kw-suggested button {
      flex: none; min-height: 44px; padding: 9px 13px; border: 0; border-radius: 10px;
      background: #FFF3E8; color: #93400B; cursor: pointer; font-family: inherit;
      font-size: 13.5px; font-weight: 850; line-height: 1.45; white-space: normal;
      transition: background 0.15s, color 0.15s;
    }
    .kw-suggested button:hover { background: #FFE7CF; color: #6F2918; }
    .kw-suggested button:disabled { opacity: 0.4; cursor: not-allowed; }

    .kw-add-row { display: flex; gap: 8px; margin-top: 16px; }
    .kw-add-row input {
      flex: 1; min-width: 0; min-height: 48px; padding: 12px 14px; font-size: 15px; font-family: inherit;
      border: 1.5px solid var(--line); border-radius: 12px; background: #fff; outline: none;
    }
    .kw-add-row input:focus { border-color: var(--orange); }
    .kw-add-row button { /* 주 행동 = 은코치 블루 (2026-08-11 색 통일) */
      min-height: 48px; padding: 10px 18px; font-size: 15px; font-weight: 850; font-family: inherit;
      background: #0B5BD3; color: #fff; border: 0; border-radius: 12px; cursor: pointer;
    }
    .kw-add-row button:hover { background: #A33708; }
    .kw-add-row button:disabled { background: var(--ink-4); cursor: not-allowed; }
    @media (max-width: 520px) {
      .kw-quality-split-toggle { width: 100%; }
      .kw-quality-split-buttons { flex-direction: column; }
      .kw-quality-split-buttons button { width: 100%; }
      .keyword-rank-card { padding: 18px 16px; }
      .kw-discovery-row { align-items: flex-start; }
    }
    /* ⚙️ 내 시즌 설정 (2026-06-30) */
    .sp-panel summary.sp-sum { cursor: pointer; font-weight: 800; font-size: 15px; list-style: none; }
    .sp-panel summary.sp-sum::-webkit-details-marker { display: none; }
    .sp-panel summary.sp-sum .micro { font-weight: 600; }
    #sp-body { margin-top: 10px; }
    #sp-body .sp-label { font-size: 12px; font-weight: 800; color: var(--ink-3, #6B7684); margin: 13px 0 5px; }
    #sp-body .sp-select { width: 100%; padding: 9px 10px; border: 1px solid var(--line, #E5E8EB); border-radius: 9px; font-size: 14px; background: #fff; }
    #sp-body .sp-season { display: flex; align-items: center; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid #F1F0EC; font-size: 13.5px; }
    #sp-body .sp-season:last-child { border-bottom: none; }
    #sp-body .sp-tog { width: 40px; height: 23px; border-radius: 99px; position: relative; border: none; cursor: pointer; flex: none; padding: 0; }
    #sp-body .sp-tog.on { background: #1DAA6E; } #sp-body .sp-tog.off { background: #CBD2D9; }
    #sp-body .sp-tog::after { content: ""; position: absolute; top: 2px; width: 19px; height: 19px; border-radius: 50%; background: #fff; transition: left 150ms var(--ease-out), right 150ms var(--ease-out); }
    #sp-body .sp-tog.on::after { right: 2px; } #sp-body .sp-tog.off::after { left: 2px; }
    #sp-body .sp-custom { display: flex; gap: 6px; margin-top: 8px; }
    #sp-body .sp-custom input { border: 1px solid var(--line, #E5E8EB); border-radius: 8px; padding: 8px; font-size: 13px; }
    #sp-body .sp-custom .nm { flex: 1; } #sp-body .sp-custom .md { width: 84px; }
    #sp-body .sp-custom button, #sp-body .sp-save { background: var(--orange, #0B5BD3); color: #fff; border: none; border-radius: 8px; padding: 8px 12px; font-weight: 700; font-size: 13px; cursor: pointer; }
    #sp-body .sp-citem { display: flex; align-items: center; justify-content: space-between; font-size: 13px; padding: 5px 0; }
    #sp-body .sp-citem button { background: none; border: none; color: #E5484D; cursor: pointer; font-size: 13px; }
    #sp-body .sp-save { width: 100%; margin-top: 14px; padding: 11px; }
    #sp-body .sp-ok { font-size: 12.5px; margin-top: 8px; color: #1DAA6E; }

    .chart-wrap { position: relative; height: 280px; max-width: 100%; overflow: hidden; }
    .chart-wrap canvas { max-width: 100% !important; }
    .ranking-table {
      width: 100%; border-collapse: collapse; margin-top: 10px;
    }
    .ranking-table th, .ranking-table td {
      padding: 10px 8px; font-size: 13px; text-align: left;
      border-bottom: 1px solid var(--line-soft);
    }
    .ranking-table th { color: var(--ink-3); font-weight: 600; font-size: 12px; }
    .ranking-table .rank-out { color: var(--faint); }
    .ranking-table .rank-best { color: var(--green); font-weight: 700; }
    .rank-out { color: var(--faint); }
    .rank-best { color: var(--green); font-weight: 700; }
    /* 키워드 시세판 — 주식 시세창 문법 */
    .kw-market { max-width: 760px; margin: 0 auto; }
    .kw-market-board { background: #fff; border: 1px solid var(--line-soft); border-radius: 20px; box-shadow: 0 4px 20px rgba(0,0,0,.04); overflow: hidden; }
    .kw-market-head { padding: 16px; border-bottom: 1px solid #eef1f4; display: flex; justify-content: space-between; align-items: center; gap: 10px; }
    .kw-market-head h5 { font-size: 16px; font-weight: 800; margin: 0; color: #191f28; }
    .kw-market-head .small { font-size: 12.5px; color: #6B7684; text-align: right; }
    .kw-market-empty { padding: 14px 20px; font-size: 13px; color: var(--ink-3); }
    .kw-market .up { color: #065F46; }
    .kw-market .down { color: #9B1C22; }
    .kw-market .flat { color: #6B7684; }
    .kw-market-row { border-bottom: 1px solid #f4f6f8; }
    .kw-market-row:last-child { border-bottom: none; }
    .kw-market-row[open] { background: #fbfcfd; }
    .kw-market-row > summary { list-style: none; cursor: pointer; min-height: 66px; padding: 16px; }
    .kw-market-row > summary::-webkit-details-marker { display: none; }
    .kw-row-top { display: grid; grid-template-columns: minmax(0, 1fr) minmax(96px, auto) 64px 14px; align-items: center; column-gap: 8px; }
    .kw-name {
      min-width: 0; color: #191f28; font-size: 16px; font-weight: 700;
      overflow: visible; text-overflow: clip; white-space: normal;
      overflow-wrap: anywhere; word-break: keep-all;
    }
    .kw-name .cat { font-size: 11.5px; color: #6B7684; font-weight: 400; margin-left: 6px; }
    .kw-me-cell { display: flex; align-items: center; justify-content: flex-end; gap: 5px; min-width: 0; white-space: normal; }
    .kw-rank-language { display: block; min-width: 0; text-align: right; word-break: keep-all; }
    .kw-rank-language strong {
      display: block; color: #191F28; font-size: 18px; font-weight: 900; line-height: 1.2;
      font-variant-numeric: tabular-nums;
    }
    .kw-rank-language small {
      display: block; margin-top: 3px; color: #6B7684; font-size: 11.5px; font-weight: 650;
      line-height: 1.45; font-variant-numeric: tabular-nums; white-space: normal;
    }
    .kw-rank-language.tone-rank strong { color: #191F28; }
    .kw-rank-language.tone-top strong,
    .kw-rank-language.tone-good strong { color: #065F46; }
    .kw-rank-language.tone-warn strong { color: #B54708; }
    .kw-rank-language.tone-far strong,
    .kw-rank-language.tone-pending strong { color: #4E5968; }
    .rank-page-explanation {
      margin: 0; padding: 13px 16px 15px; border-top: 1px solid #EEF1F4;
      color: #4E5968; font-size: 13px; line-height: 1.65; word-break: keep-all;
    }
    .kw-market .kw-rank-now { font-size: 15px; font-weight: 900; color: #191F28; line-height: 1.15; text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
    .kw-market .kw-rank-now.out { font-size: 12px; line-height: 1.15; white-space: normal; color: #6B7684; }
    .kw-market .kw-rank-now.pending { font-size: 12px; line-height: 1.15; white-space: normal; color: #6B7684; }
    .kw-delta { font-size: 12px; font-weight: 900; text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
    .kw-rival-rank { font-size: 11.5px; font-weight: 800; color: #6B7684; text-align: right; white-space: normal; overflow-wrap: anywhere; }
    .kw-rival-rank.lead { color: #065F46; }
    .kw-rival-rank.behind { color: #9B1C22; }
    .kw-rival-rank.tie, .kw-rival-rank.pending { color: #6B7684; }
    .kw-row-sub { display: flex; flex-wrap: wrap; gap: 0; margin-top: 5px; font-size: 12.5px; color: #6B7684; overflow: visible; }
    .kw-row-sub span { flex: 0 0 auto; }
    .kw-row-sub span + span { margin-left: 14px; padding-left: 14px; border-left: 1px solid #eef1f4; }
    .kw-row-sub b { color: #4e5968; font-variant-numeric: tabular-nums; }
    .kw-detail { background: #fbfcfd; border-top: 1px solid #eef1f4; padding: 16px; }
    .kw-detail-head { display: flex; justify-content: space-between; align-items: flex-end; margin-bottom: 8px; flex-wrap: wrap; gap: 8px 12px; }
    /* 「100위 밖」 읽어주는 줄 — 목록 맨 아래 한 번만 (시안 EunCoach Keywords).
       줄마다 반복하면 밖인 검색어가 넷일 때 같은 말이 네 번 나온다. */
    .kw-outside-reading { margin: 10px 2px 0; font-size: 13px; line-height: 1.65; color: var(--ink-3, #6B7684); word-break: keep-all; }
    .kw-big-rank { font-size: 34px; font-weight: 800; color: #191f28; line-height: 1; font-variant-numeric: tabular-nums; }
    .kw-big-rank.up { color: #e03131; }
    .kw-big-rank.down { color: #1c6fdc; }
    .kw-big-rank.out { color: #4E5968; font-size: 24px; }
    .kw-big-rank .d { font-size: 15px; margin-left: 8px; white-space: normal; overflow-wrap: anywhere; }
    .kw-stats { display: flex; gap: 16px; font-size: 13px; color: #6b7684; flex-wrap: wrap; align-items: baseline; }
    .kw-stats b { color: #191f28; font-size: 14px; font-variant-numeric: tabular-nums; }
    .kw-detail-actions { display: flex; justify-content: space-between; gap: 8px; align-items: center; margin: 10px 0; flex-wrap: wrap; }
    .kw-tabs { display: flex; flex-wrap: wrap; gap: 6px; }
    .kw-tab {
      min-height: 44px; padding: 8px 12px; border: 1px solid #cbd0d6; border-radius: 8px;
      background: #fff; color: #4E5968; cursor: pointer; font-family: inherit;
      font-size: 12px; font-weight: 800; white-space: normal;
    }
    .kw-tab.on { background: #191f28; color: #fff; border-color: #191f28; }
    .kw-chart-box { position: relative; }
    .kw-chart-box svg { width: 100%; height: 190px; display: block; overflow: visible; }
    .rank-chart-label-layer { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }
    .rank-chart-extrema { position: absolute; top: 2px; left: 8px; right: 8px; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
    .rank-chart-marker-label { min-width: 0; padding: 2px 4px; border-radius: 5px; background: rgba(255,255,255,.88); font-size: 11.5px; font-weight: 800; line-height: 1.2; white-space: nowrap; }
    .rank-chart-marker-label.best { color: #e03131; }
    .rank-chart-marker-label.worst { color: #1c6fdc; text-align: right; }
    .rank-chart-axis-label { position: absolute; left: 8px; color: #6B7684; font-size: 10px; line-height: 1; }
    .rank-chart-axis-label.top { top: 30px; }
    .rank-chart-axis-label.bottom { bottom: 2px; }
    .rank-chart-empty { position: absolute; top: 50%; left: 20px; right: 20px; transform: translateY(-50%); color: #6B7684; font-size: 13px; }
    .kw-vol-sec { margin-top: 14px; }
    .kw-vol-head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; margin-bottom: 6px; flex-wrap: wrap; }
    .kw-vol-head h5 { font-size: 13.5px; font-weight: 800; color: #4e5968; margin: 0; }
    .kw-vol-head .v { font-size: 13px; color: #6b7684; }
    .kw-vol-head .v b { color: #191f28; font-variant-numeric: tabular-nums; }
    .kw-vol-bars { display: flex; align-items: flex-end; gap: 4px; height: 64px; }
    .kw-vb { flex: 1; min-width: 0; background: #d9dee3; border-radius: 3px 3px 0 0; position: relative; }
    .kw-vb.peak { background: #0B5BD3; }
    .kw-vb.now { outline: 2px solid #191f28; outline-offset: -2px; }
    .kw-vol-months { display: flex; gap: 4px; margin-top: 4px; }
    .kw-vol-months span { flex: 1; min-width: 0; text-align: center; font-size: 11.5px; color: #6B7684; font-variant-numeric: tabular-nums; }
    .kw-vol-months span.pk { color: #D63B1A; font-weight: 800; }
    .kw-badges { margin-top: 12px; display: flex; flex-direction: column; gap: 7px; }
    .kw-badge-row { display: flex; gap: 9px; align-items: flex-start; font-size: 13.5px; color: #4e5968; line-height: 1.55; }
    .kw-badge-row .tag { flex-shrink: 0; font-size: 11.5px; font-weight: 800; border-radius: 7px; padding: 2px 8px; margin-top: 1px; }
    .kw-badge-row .tag.good { background: #fdeeee; color: #e03131; }
    .kw-badge-row .tag.info { background: #e8f7f0; color: #0a7a4b; }
    .kw-rx { margin-top: 12px; background: #fff7f4; border: 1px solid #ffd9cc; border-radius: 10px; padding: 11px 14px; font-size: 13.5px; line-height: 1.55; color: #4e5968; }
    .kw-rx b { color: #D63B1A; }
    .kw-share-preview { margin-top: 12px; background: #fff; border: 1px solid #e5e8eb; border-radius: 10px; padding: 12px; }
    .kw-share-preview img { width: 100%; max-width: 360px; display: block; border-radius: 10px; border: 1px solid #eef1f4; }
    .kw-share-preview p { margin: 8px 0 0; font-size: 12.5px; color: #6b7684; }
    @media (max-width: 480px) {
      .kw-market-head { padding: 14px 14px; align-items: flex-start; flex-direction: column; }
      .kw-market-head .small { text-align: left; }
      .kw-market-row > summary { padding: 15px 14px; }
      .kw-detail { padding: 16px 14px 18px; }
      .kw-row-top { grid-template-columns: minmax(0, 1fr) minmax(112px, auto); column-gap: 8px; row-gap: 8px; }
      .kw-name { grid-column: 1; grid-row: 1; }
      .kw-me-cell { grid-column: 2; grid-row: 1; }
      .kw-delta { grid-column: 1; grid-row: 2; justify-self: start; }
      .kw-chev { display: none; }
      .kw-name { font-size: 15px; }
      .kw-name .cat { display: none; }
      .kw-rank-now { font-size: 14px; }
      .kw-delta { font-size: 11.5px; }
      .kw-rival-rank { font-size: 11.5px; }
      .kw-row-sub { font-size: 11.5px; }
      .kw-row-sub span + span { margin-left: 9px; padding-left: 9px; }
      .kw-big-rank { font-size: 31px; }
      .kw-stats { gap: 8px 12px; font-size: 12px; }
      .kw-tabs { gap: 4px; }
      .kw-tab { padding: 3px 8px; }
      .kw-chart-box svg { height: 178px; }
      .kw-badge-row { font-size: 12.8px; }
    }
    @media (max-width: 340px) {
      .kw-row-top { grid-template-columns: minmax(0, 1fr) minmax(106px, auto); }
      .kw-market-row > summary, .kw-detail, .kw-market-head { padding-left: 12px; padding-right: 12px; }
      .kw-rank-now { font-size: 13px; }
      .kw-delta { font-size: 11.5px; }
      .kw-row-sub span + span { margin-left: 7px; padding-left: 7px; }
    }
    /* 지표 추이 — 탭·수치 카드 */
    .metric-range { display: inline-flex; flex-wrap: wrap; gap: 6px; background: transparent; margin: 8px 8px 12px 0; }
    .metric-range button { border: 1px solid var(--line); border-radius: 999px; background: #fff; padding: 8px 14px; font-size: 12.5px; font-weight: 700; color: var(--ink-3); cursor: pointer; font-family: inherit; white-space: normal; overflow-wrap: anywhere; }
    .metric-range button.active { background: var(--orange); color: #fff; }
    .metric-tabs { display: inline-flex; flex-wrap: wrap; gap: 6px; background: transparent; margin: 8px 0 12px; }
    .metric-tabs button { border: 1px solid var(--line); border-radius: 999px; background: #fff; padding: 8px 18px; font-size: 13px; font-weight: 700; color: var(--ink-3); cursor: pointer; font-family: inherit; white-space: normal; overflow-wrap: anywhere; }
    .metric-tabs button.active { background: var(--ink); color: #fff; }
    .metric-stats { display: flex; gap: 10px; flex-wrap: wrap; margin: 0 0 14px; }
    .metric-stat { flex: 1; min-width: 150px; border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; background: #fff; }
    .metric-stat .lbl { font-size: 12px; color: var(--ink-3); display: flex; align-items: center; gap: 6px; }
    .metric-stat .lbl .dot { width: 9px; height: 9px; border-radius: 50%; display: inline-block; }
    .metric-stat .val { font-size: 23px; font-weight: 800; margin-top: 4px; line-height: 1.2; }
    .metric-stat .val .unit { font-size: 13px; font-weight: 600; color: var(--ink-3); margin-left: 2px; }
    .metric-observation-basis { margin-top: 7px; color: var(--ink-3); font-size: 12px; font-weight: 700; line-height: 1.55; word-break: keep-all; overflow-wrap: anywhere; }
    .metric-stat .chg { font-size: 12px; font-weight: 700; margin-left: 8px; }
    .metric-stat .up { color: var(--green); }
    .metric-stat .down { color: #C0392B; }
    .metric-stat .flat { color: var(--ink-3); }
    .metric-markers { display: flex; flex-wrap: wrap; gap: 7px; margin: 10px 0 4px; }
    .metric-marker { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px; padding: 7px 10px; border-radius: 999px; background: #EAF2FE; border: 1px solid rgba(11,91,211,0.25); color: #1D4F9C; font-size: 12px; font-weight: 800; overflow-wrap: anywhere; }
    .metric-marker .d { color: var(--ink-3); font-weight: 700; }

    .today-card {
      padding: 18px 20px; border-radius: var(--radius-lg);
      background: linear-gradient(180deg, #fff 0%, var(--orange-tint) 100%);
      border: 1px solid var(--orange-soft);
    }
    .today-card .badge {
      display: inline-block; font-size: 11.5px; font-weight: 700;
      color: var(--orange); letter-spacing: 0.04em; padding: 3px 10px;
      background: var(--orange-soft); border-radius: 999px; margin-bottom: 10px;
    }
    .today-card .body { font-size: 16px; font-weight: 600; color: var(--ink); line-height: 1.45; margin: 0 0 4px; }
    .today-card .meta { font-size: 12px; color: var(--ink-3); margin-top: 8px; }

    /* 한눈 요약 카드 (대시보드 최상단) */
    .summary { background: var(--card); border: 1px solid var(--line); border-radius: 20px; padding: 22px 24px; }
    #summary-season { box-shadow: 0 4px 20px rgba(0,0,0,.04); }
    .summary:empty { display: none; }
    .summary .summary-cap { font-size: 11.5px; font-weight: 900; color: var(--ink-3); letter-spacing: 0.04em; margin-bottom: 7px; }
    .summary .summary-headline { font-size: 14.5px; font-weight: 800; margin: 0; line-height: 1.48; }
    .summary .summary-headline b { color: var(--ink); }
    .summary .summary-board { display: grid; grid-template-columns: 92px minmax(0, 260px); gap: 14px; align-items: center; margin-top: 11px; padding: 12px 0; border-top: 1px dashed var(--line); border-bottom: 1px dashed var(--line); }
    /* 오늘의 순위 변화 대시보드 — 기존 값 재배치 */
    .summary .summary-hero { text-align: center; background: transparent; border: 0; border-radius: 0; padding: 0; margin: 0; min-width: 0; }
    .summary .summary-hero .sh-cap { font-size: 11.5px; color: var(--ink-3); font-weight: 800; line-height: 1.25; }
    .summary .summary-hero .sh-big { font-size: 44px; font-weight: 900; line-height: .96; font-variant-numeric: tabular-nums; letter-spacing: 0; color: var(--ink); }
    .summary .summary-hero .sh-big .sh-u { font-size: 17px; color: var(--ink); font-weight: 900; }
    .summary .summary-hero .sh-big.best { color: var(--ink); }
    .summary .summary-hero .sh-md { font-size: 19px; font-weight: 900; line-height: 1.12; color: var(--ink); letter-spacing: 0; }
    .summary .summary-hero .sh-md + .sh-cap,
    .summary .summary-hero .sh-big + .sh-cap { margin-top: 4px; }
    .summary .summary-facts { display: grid; gap: 6px; align-self: center; justify-self: start; width: min(100%, 260px); max-width: 260px; min-width: 0; }
    .summary .summary-fact { display: flex; justify-content: flex-start; gap: 10px; align-items: baseline; min-height: 18px; padding: 0; border: 0; border-radius: 0; background: transparent; font-size: 12px; line-height: 1.35; }
    .summary .summary-fact .fk { flex: 0 0 64px; color: var(--ink-3); font-weight: 800; white-space: nowrap; }
    .summary .summary-fact .fv { flex: 1 1 auto; min-width: 0; color: var(--ink); font-weight: 900; text-align: left; line-height: 1.35; font-variant-numeric: tabular-nums; }
    .summary .summary-fact .fv small { color: var(--ink-3); font-size: 12px; font-weight: 700; }
    .summary .summary-fact .d { margin-left: 4px; }
    .summary .skpis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-top: 14px; }
    .summary .skpi { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 13px 15px; }
    .summary .skpi .k { font-size: 12px; color: var(--ink-3); }
    .summary .skpi .v { font-size: 21px; font-weight: 800; margin-top: 4px; line-height: 1.15; }
    .summary .skpi .v small { font-size: 13px; font-weight: 700; color: var(--ink-3); }
    .summary .skpi .d { font-size: 12px; font-weight: 800; margin-left: 5px; }
    .summary .skpi .sub { font-size: 11.5px; color: var(--ink-3); margin-top: 2px; line-height: 1.35; }
    .summary .up { color: #065F46; } .summary .down { color: #C0392B; } .summary .flat { color: var(--ink-3); }
    .summary .smetrics { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; margin-top: 10px; }
    .summary .smetric { min-width: 0; background: #fff; border: 1px solid var(--line); border-radius: 8px; padding: 8px 7px; text-align: center; }
    .summary .smetric .k { font-size: 11.5px; color: var(--ink-3); font-weight: 800; line-height: 1.25; margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .summary .smetric .v { font-size: 14.5px; font-weight: 900; color: var(--ink); line-height: 1.15; font-variant-numeric: tabular-nums; white-space: nowrap; }
    .summary .smetric .v .u { font-size: 11.5px; font-weight: 800; color: var(--ink-3); }
    .summary .smetric .d { font-size: 11.5px; font-weight: 900; margin-left: 2px; }
    .summary .summary-spark { margin-top: 10px; color: var(--ink-3); font-size: 11.5px; font-weight: 700; line-height: 1.35; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    #summary-celebrate,
    #summary-badge,
    #summary-action,
    #summary-weekly { padding: 0; background: transparent; border: 0; border-radius: 0; }
    #summary-celebrate .saction,
    #summary-badge .saction,
    #summary-action .saction,
    #summary-weekly .weekly-card { border-radius: 20px; }
    .season-preview-line { padding: 12px 4px; color: var(--sub); font-size: 13.5px; line-height: 1.6; word-break: keep-all; }
    .season-festival-line { min-width: 0; margin-top: 12px; padding: 14px 16px; border: 1px solid #E6B77D;
                            border-radius: 12px; background: #FFF3E8; color: #93400B; word-break: keep-all; overflow-wrap: anywhere; }
    .season-festival-line .festival-title { font-size: 14.5px; font-weight: 800; line-height: 1.55; }
    .season-festival-line .festival-date { color: #4E5968; font-weight: 700; }
    .season-festival-line .festival-guide { margin-top: 5px; color: #4E5968; font-size: 12.5px; line-height: 1.6; }
    /* 다가오는 시즌 카드 — 시즌 준비 타임라인 (2026-07-04) */
    /* 이번 주 우리 가게(주간 진단) — 무채 톤 (2026-07-05) */
    .summary .weekly-card { border: 1px solid var(--line); padding: 14px 16px; background: #fff; }
    .summary .weekly-card .wk-ey { font-size: 11.5px; font-weight: 800; color: var(--ink-2); letter-spacing: 0.04em; }
    .summary .weekly-card .wk-hl { font-size: 14px; font-weight: 700; margin-top: 5px; line-height: 1.55; }
    .summary .weekly-card .wk-hero { text-align: center; padding: 8px 0 13px; margin-top: 3px; border-bottom: 1px dashed var(--line); }
    .summary .weekly-card .wk-hero.wk-hero-note { margin-top: 10px; padding: 12px 10px 13px; border: 1px solid var(--line); border-radius: 10px; background: #FAF9F6; }
    .summary .weekly-card .wk-hero-num { font-size: 52px; font-weight: 900; line-height: 1; color: #191F28; font-variant-numeric: tabular-nums; }
    .summary .weekly-card .wk-hero-label { font-size: 12px; color: var(--ink-3); font-weight: 800; margin-top: 4px; }
    .summary .weekly-card .wk-hero-headline { font-size: 16px; font-weight: 900; margin-top: 8px; line-height: 1.35; color: var(--ink); }
    .summary .weekly-card .wk-hero-sub { font-size: 12.5px; color: var(--ink-2); margin-top: 5px; line-height: 1.45; }
    .summary .weekly-card .wk-hero-facts { display: flex; justify-content: center; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
    .summary .weekly-card .wk-fact { display: inline-flex; align-items: center; min-height: 24px; padding: 3px 8px; border-radius: 999px; background: #fff; border: 1px solid var(--line); font-size: 11.5px; font-weight: 800; color: var(--ink-2); }
    .summary .weekly-card .wk-day-dots { display: flex; justify-content: center; gap: 7px; margin: 10px 0 3px; }
    .summary .weekly-card .wk-day-wrap { width: 26px; display: inline-flex; flex-direction: column; align-items: center; gap: 3px; }
    .summary .weekly-card .wk-day { width: 26px; height: 26px; box-sizing: border-box; border-radius: 999px; border: 1px solid transparent; background: #F1EDE5; color: #B8AA99; display: inline-flex; align-items: center; justify-content: center; font-size: 14px; font-weight: 900; line-height: 1; }
    .summary .weekly-card .wk-day.done { background: #191F28; border-color: #191F28; color: #fff; font-size: 12px; }
    .summary .weekly-card .wk-day.today { border: 2px solid var(--orange); }
    .summary .weekly-card .wk-day.done.today { border-color: var(--orange); }
    .summary .weekly-card .wk-day-label { font-size: 11.5px; line-height: 1; color: var(--ink-3); font-weight: 800; }
    .summary .weekly-card .wk-log { margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--line); }
    .summary .weekly-card .wk-log-title { font-size: 12px; font-weight: 900; color: var(--ink); margin-bottom: 7px; }
    .summary .weekly-card .wk-log-ask { font-size: 12.5px; font-weight: 900; color: var(--ink); margin-bottom: 4px; }
    .summary .weekly-card .wk-log-sub { font-size: 11.5px; color: #6B7684; margin: 0 0 9px; line-height: 1.45; }
    .summary .weekly-card .wk-empty-nudge { font-size: 12.5px; font-weight: 800; color: var(--ink-2); text-align: center; background: #F1EDE5; border-radius: 8px; padding: 9px; margin-bottom: 10px; }
    .summary .weekly-card .wk-done-list { list-style: none; margin: 0 0 10px; padding: 0; display: grid; gap: 6px; }
    .summary .weekly-card .wk-done-list li { display: flex; gap: 7px; align-items: flex-start; font-size: 12.5px; line-height: 1.45; color: var(--ink-2); }
    .summary .weekly-card .wk-done-list li::before { content: '✓'; flex: 0 0 auto; color: #191F28; font-weight: 900; }
    .summary .weekly-card .wk-log-form { display: flex; gap: 7px; align-items: center; }
    .summary .weekly-card .wk-log-input { flex: 1; min-width: 0; height: 36px; border: 1px solid var(--line); border-radius: 9px; background: #fff; padding: 0 11px; font: inherit; font-size: 13px; color: var(--ink); }
    .summary .weekly-card .wk-log-input:focus { outline: 2px solid rgba(26,26,26,.12); border-color: #191F28; }
    .summary .weekly-card .wk-log-btn { flex: 0 0 auto; height: 36px; border: 0; border-radius: 9px; background: #0B5BD3; color: #fff; padding: 0 12px; font: inherit; font-size: 12.5px; font-weight: 900; cursor: pointer; }
    .summary .weekly-card .wk-log-btn:disabled { opacity: .62; cursor: default; }
    .summary .weekly-card .wk-items { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 11px; }
    .summary .weekly-card .witem { background: #fff; border: 1px solid var(--line); border-radius: 9px; padding: 6px 10px; font-size: 12px; }
    .summary .weekly-card .witem .wl { color: var(--ink-3); margin-right: 6px; }
    .summary .weekly-card .witem .wv { font-weight: 800; }
    .summary .weekly-card .witem .wd { font-weight: 800; margin-left: 3px; }
    .summary .weekly-card .witem .wd.up { color: #065F46; }
    .summary .weekly-card .witem .wd.down { color: #E5484D; }
    .summary .weekly-card .witem-basis { display: block; margin-top: 4px; color: var(--ink-3); font-size: 11.5px; font-weight: 700; line-height: 1.5; white-space: normal; overflow-wrap: anywhere; word-break: keep-all; }
    /* audit-tracker-body 1 (2026-08-16) — 시즌 카드를 시안 v3 문법으로 교체.
       카드 셸(흰 배경·radius 20·정본 그림자)은 바깥 .summary가 담당하므로 안쪽은 투명. */
    .summary .season-card { border: 0; background: none; padding: 0; }
    .summary .season-card .sc-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-bottom: 8px; }
    .summary .season-card .sc-title { margin: 0; font-size: 16px; font-weight: 800; }
    .summary .season-card .sc-pill { background: #EAF2FE; color: #1D4F9C; font-size: 12.5px; font-weight: 800; border-radius: 999px; padding: 3px 10px; white-space: nowrap; }
    .summary .season-card .sc-line { margin: 0 0 12px; font-size: 15px; color: #4E5968; line-height: 1.55; word-break: keep-all; }
    .summary .season-card .sc-progress-row { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
    .summary .season-card .sc-progress { flex: 1; height: 8px; border-radius: 999px; background: #F2F4F6; overflow: hidden; }
    .summary .season-card .sc-progress > span { display: block; width: 0; height: 100%; background: #0B5BD3; border-radius: inherit; transition: width .3s; }
    .summary .season-card .sc-progress-num { font-size: 12.5px; font-weight: 800; color: #0B5BD3; white-space: nowrap; }
    .summary .season-card .sc-todo,
    .summary .season-card .sc-alldone { border-radius: 12px; padding: 14px 16px; display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; }
    .summary .season-card .sc-todo { background: #F2F4F6; }
    .summary .season-card .sc-todo-name { min-width: 0; font-size: 14.5px; font-weight: 700; word-break: keep-all; }
    .summary .season-card .sc-alldone { background: #E7F5EE; }
    .summary .season-card .sc-alldone > span { min-width: 0; font-size: 14.5px; font-weight: 800; color: #065F46; word-break: keep-all; }
    .summary .season-card .sc-do { border: 1.5px solid #0B5BD3; background: #fff; color: #0B5BD3; border-radius: 10px; padding: 8px 14px; font: inherit; font-size: 13.5px; font-weight: 800; line-height: 1.2; cursor: pointer; min-height: 44px; white-space: nowrap; flex-shrink: 0; }
    .summary .season-card .sc-do:hover { background: #EAF2FE; }
    .summary .season-card .sc-do.sm { padding: 7px 12px; font-size: 13px; min-height: 44px; }
    .summary .season-card .sc-do:disabled { border-color: #E5E8EB; background: #F2F4F6; color: #6B7684; cursor: not-allowed; }
    .summary .season-card .sc-do:focus-visible,
    .summary .season-card .sc-undo-text:focus-visible,
    .summary .season-card .sc-list-toggle:focus-visible { outline: 3px solid rgba(11,91,211,.34); outline-offset: 2px; }
    .summary .season-card .sc-undo-text { border: 0; background: none; cursor: pointer; font: inherit; font-size: 12.5px; font-weight: 700; color: #6B7684; padding: 4px; white-space: nowrap; flex-shrink: 0; }
    .summary .season-card .sc-undo-text:disabled { cursor: not-allowed; opacity: .55; }
    .summary .season-card .sc-list-toggle { width: 100%; border: 0; background: none; cursor: pointer; font: inherit; display: flex; justify-content: space-between; align-items: center; gap: 10px; border-top: 1px solid #E5E8EB; margin-top: 12px; padding: 13px 0 2px; min-height: 46px; text-align: left; }
    .summary .season-card .sc-list-toggle .lt { font-size: 14px; font-weight: 700; color: #4E5968; }
    .summary .season-card .sc-list-toggle .lv { font-size: 13.5px; font-weight: 800; color: #0B5BD3; flex-shrink: 0; }
    .summary .season-card .sc-list { display: flex; flex-direction: column; gap: 6px; margin-top: 10px; }
    .summary .season-card .sc-list[hidden] { display: none; }
    .summary .season-card .sc-row { display: flex; justify-content: space-between; align-items: center; gap: 10px; background: #F9FAFB; border-radius: 12px; padding: 12px 14px; }
    .summary .season-card .sc-row-main { min-width: 0; display: flex; align-items: flex-start; gap: 8px; }
    .summary .season-card .sc-mark { font-size: 13px; font-weight: 900; color: #6B7684; flex-shrink: 0; width: 14px; }
    .summary .season-card .sc-row.checked .sc-mark { color: #065F46; }
    .summary .season-card .sc-row.current .sc-mark { color: #0B5BD3; }
    .summary .season-card .sc-row-text { min-width: 0; }
    .summary .season-card .sc-row-title { display: block; font-size: 14px; font-weight: 700; color: #191F28; word-break: keep-all; overflow-wrap: anywhere; }
    .summary .season-card .sc-row.checked .sc-row-title { color: #6B7684; }
    .summary .season-card .sc-row.current .sc-row-title { font-weight: 800; }
    .summary .season-card .sc-row-when { display: block; font-size: 12.5px; color: #6B7684; }
    .summary .season-card .sc-next { margin-top: 10px; font-size: 12.5px; color: #6B7684; line-height: 1.55; word-break: keep-all; }
    .summary .season-card .sc-next b { color: #191F28; font-weight: 800; }
    .summary .season-card .sc-save-message { min-height: 20px; margin-top: 9px; color: #4E5968; font-size: 12px; font-weight: 750; line-height: 1.5; }
    .summary .saction { border-radius: 12px; padding: 15px 16px; }
    .summary .saction .ey { font-size: 11.5px; font-weight: 800; letter-spacing: 0.04em; }
    .summary .saction .tx { font-size: 14px; font-weight: 600; margin-top: 5px; line-height: 1.6; }
    .summary .saction .tx b { color: var(--ink); }
    /* 오늘 한 가지(코치) — 항상 고정, 주황 강조 (2026-06-12) */
    .summary .saction.coach { background: var(--card); border: 1px solid var(--line); box-shadow: none; }  /* 2026-08-11 테두리 통일 */
    .summary .saction.coach .ey { color: var(--orange); }
    .summary .coach-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
    .summary .coach-streak { flex: 0 0 auto; max-width: 48%; border: 1px solid #ffd9cc; background: #fff; color: #D63B1A; border-radius: 999px; padding: 3px 8px; font-size: 11.5px; line-height: 1.2; font-weight: 900; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .summary .coach-path { font-size: 12px; color: var(--ink-2); background: #FBF4E8; border-radius: 8px; padding: 7px 10px; margin-top: 9px; }
    .summary .coach-action-row { display: flex; gap: 8px; align-items: stretch; margin-top: 12px; }
    .summary .coach-go { flex: 1 1 0; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; background: #fff; color: var(--ink); border: 1px solid var(--line); border-radius: 9px; padding: 8px 12px; font-size: 12.5px; font-weight: 900; text-align: center; text-decoration: none; }
    .summary .action-done-btn { flex: 1.35 1 0; min-height: 44px; margin-top: 0; background: #0B5BD3; color: #fff; border: 0; border-radius: 9px; padding: 9px 14px; font: inherit; font-size: 13px; font-weight: 900; cursor: pointer; position: relative; }
    .summary .action-done-btn::before { content:""; position:absolute; inset:-3px; }
    .summary .action-done-btn:disabled { opacity: .72; cursor: default; }
    .summary .coach-action-hint { font-size: 12.5px; color: var(--ink-3); margin-top: 10px; line-height: 1.5; text-align: center; }
    .summary .coach-action-hint b { color: var(--ink); }
    .summary .action-done-btn.coach-pulse { animation: coach-pulse 1.8s ease-out 3; }
    @keyframes coach-pulse { 0%{box-shadow:0 0 0 0 rgba(11,91,211,.34);} 55%{box-shadow:0 0 0 8px rgba(11,91,211,0);} 100%{box-shadow:0 0 0 0 rgba(11,91,211,0);} }
    @media (prefers-reduced-motion: reduce){ .summary .action-done-btn.coach-pulse{ animation:none; } }
    .summary .action-yesterday-note { color: var(--ink-3); font-size: 12px; font-weight: 700; margin: 0 0 8px; }
    /* 좋은 소식(축하) — 초록 */
    .summary .saction.celebrate { background: linear-gradient(180deg, #fff, #EAF6EE); border: 1px solid #BFE6CD; }
    .summary .saction.celebrate .ey { color: #065F46; }
    .summary .saction.celebrate .coach-streak { border-color: #BFE6CD; color: #065F46; }
    .summary .saction.celebrate .celebrate-observation { margin-top: 7px; color: var(--ink-3); font-size: 12px; font-weight: 750; line-height: 1.5; white-space: normal; overflow-wrap: anywhere; word-break: keep-all; }
    @media (max-width: 640px) { .summary { padding: 16px; } .summary .summary-board { grid-template-columns: 86px minmax(0, 260px); gap: 14px; } .summary .smetrics { gap: 6px; } .summary .smetric { padding: 7px 4px; } .summary .skpis { grid-template-columns: repeat(3, minmax(0, 1fr)); } .summary .skpi { padding: 11px 9px; } .summary .skpi .v { font-size: 18px; } .summary .summary-hero .sh-big { font-size: 44px; } .summary .coach-action-row { flex-wrap: wrap; } .summary .coach-go, .summary .action-done-btn { flex-basis: 100%; } }
    @media (max-width: 420px) { .summary .smetric .v { font-size: 13.5px; } .summary .smetric .k { font-size: 11.5px; } .summary .summary-fact { font-size: 12px; } }


    /* 모드 토글 (대시보드 상단) */
    .mode-toggle {
      display: inline-flex; gap: 4px; padding: 3px;
      background: #fff; border: 1px solid var(--line); border-radius: 999px;
      font-size: 12px;
    }
    .mode-toggle button {
      padding: 5px 14px; border: 0; background: transparent;
      font-family: inherit; font-weight: 600; color: var(--ink-3);
      cursor: pointer; border-radius: 999px;
      transition: background 0.15s, color 0.15s;
    }
    .mode-toggle button.active { background: var(--ink); color: #fff; }
    .dash-head-row {
      display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap;
    }
    /* 변화 일지 */
    .journal-area textarea {
      width: 100%; min-height: 80px; padding: 12px 14px; font-size: 14px;
      font-family: inherit; border: 1px solid var(--line); border-radius: var(--radius);
      background: #fff; outline: none; resize: vertical; line-height: 1.5;
    }
    .journal-area textarea:focus { border-color: var(--orange); }
    .journal-presets { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 8px; margin-bottom: 12px; }
    .journal-presets label {
      display: flex; gap: 8px; padding: 10px 12px; border: 1px solid var(--line);
      border-radius: var(--radius); cursor: pointer; font-size: 13px;
      background: #fff; transition: border-color 0.15s, background 0.15s;
    }
    .journal-presets label:hover { border-color: var(--orange); }
    .journal-presets input[type="checkbox"] { accent-color: var(--orange); }
    .journal-submit {
      padding: 10px 18px; font-size: 13px; font-weight: 700; font-family: inherit;
      background: #0B5BD3; color: #fff; border: 0; border-radius: var(--radius); cursor: pointer; margin-top: 10px;
    }
    .journal-submit:hover { background: #2a2a2a; }
    .journal-submit:disabled { background: var(--ink-4); cursor: not-allowed; }
    .journal-list {
      margin-top: 16px; padding-top: 14px; border-top: 1px dashed var(--line);
    }
    .journal-entry {
      padding: 10px 0; border-bottom: 1px solid var(--line-soft); font-size: 14px;
    }
    .journal-entry:last-child { border-bottom: 0; }
    .journal-entry .date { font-size: 12px; color: var(--ink-3); margin-right: 8px; }
    .journal-entry .preset-pill {
      display: inline-block; font-size: 11.5px; padding: 2px 8px;
      background: var(--orange-soft); color: var(--orange); border-radius: 999px; margin-right: 4px;
    }

    /* A·C 모드: 상세 패널은 details/summary로 접기 */
    .panel-collapsible > summary {
      list-style: none; cursor: pointer;
      display: flex; align-items: center; justify-content: space-between;
    }
    .panel-collapsible > summary::-webkit-details-marker { display: none; }
    .panel-collapsible > summary::after {
      content: '▾'; color: var(--ink-2); font-size: 18px; font-weight: 700; line-height: 1;
      width: 32px; height: 32px; border-radius: 50%; flex: none;
      background: var(--line-soft); border: 1px solid var(--line);
      display: flex; align-items: center; justify-content: center;
      transition: transform 0.2s;
    }
    .panel-collapsible > summary:hover::after { background: var(--orange-soft); color: var(--orange); border-color: rgba(11,91,211,.35); }
    .panel-collapsible[open] > summary::after { transform: rotate(180deg); }
    body.ac-mode .panel-collapsible { padding-bottom: 14px; }
    body.ac-mode .panel-collapsible:not([open]) > .collapsible-body { display: none; }

    .empty-note {
      padding: 18px; background: var(--orange-tint); border: 1px dashed var(--orange-soft);
      border-radius: var(--radius); font-size: 13px; color: var(--ink-2); margin: 8px 0;
    }
    .micro {
      font-size: 12px; color: var(--ink-3); margin-top: 6px;
    }

    .err-msg {
      padding: 10px 12px; background: #fff8f6; border: 1px solid var(--orange-soft);
      border-radius: var(--radius); font-size: 13px; color: var(--orange); margin: 8px 0;
    }
    .err-msg.notice {
      background: #f3f7ff; border-color: #cbdcfb; color: #315f9f;
    }
    .err-msg.low-result {
      white-space: pre-line; overflow-wrap: anywhere; word-break: keep-all; line-height: 1.55;
    }

    @media (max-width: 640px) {
      .hero-title { font-size: 28px; }
      .input-row { flex-direction: column; }
      .input-row button { width: 100%; }
      .modal { padding: 24px; }
    }
    /* ── 라이벌 대결 ── */
    #rival-defense.slim #rival-defense-body { font-size: 13px; }
    #rival-defense-body { font-size: 13px; line-height: 1.55; color: var(--ink-2, #4E5968); }
    #rival-defense-body b { color: var(--orange, #0B5BD3); }
    .rival-empty { font-size: 13px; color: var(--faint, #6B7684); padding: 8px 0; }
    .rival-register p { font-size: 14px; color: var(--ink-2, #4E5968); margin: 0 0 10px; }
    .rival-register input { width: 100%; padding: 12px 14px; font: inherit; font-size: 15px; border: 1px solid var(--line, #E5E8EB); border-radius: 9px; margin-bottom: 10px; box-sizing: border-box; }
    .rival-register button { background: var(--orange, #0B5BD3); color: #fff; border: none; border-radius: 9px; padding: 12px 18px; font-weight: 800; font-size: 14px; cursor: pointer; }
    .rival-err { color: #D6442E; font-size: 12.5px; margin: 8px 0 0; min-height: 14px; }
    .rival-match { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; font-size: 14px; font-weight: 800; margin-bottom: 12px; color: var(--ink); }
    .rival-match-copy { flex: 1 1 190px; min-width: 0; overflow-wrap: anywhere; }
    .rival-change-btn { flex: 0 0 auto; min-height: 44px; padding: 7px 13px; font-family: inherit; font-size: 12.5px; font-weight: 800; }
    .rival-score-sub { font-size: 13px; color: var(--ink-2); margin: 4px 0 10px; }
    .rival-drama { border-radius: 10px; padding: 10px 12px; font-size: 13px; font-weight: 800; margin-bottom: 8px; line-height: 1.45; }
    .rival-drama.lose { background: rgba(155,28,34,.07); border: 1px solid rgba(155,28,34,.22); color: #9A3B20; }
    .rival-drama.win { background: rgba(30,142,74,.08); border: 1px solid rgba(30,142,74,.22); color: #15693A; }
    .rival-kw { background: #fff; border: 1px solid #e5e8eb; border-radius: 10px; padding: 12px 14px; margin-bottom: 8px; cursor: pointer; }
    .rival-kw.lead { border-left: 4px solid #065F46; }
    .rival-kw.behind { border-left: 4px solid #9B1C22; }
    .rival-kw.tie { border-left: 4px solid #B9B0A0; }
    .rk-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
    .rk-name { font-size: 14px; font-weight: 900; color: var(--ink); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .rk-badge { font-size: 11.5px; font-weight: 900; padding: 4px 9px; border-radius: 999px; white-space: nowrap; }
    .rk-badge.lead { background: rgba(30,142,74,.10); color: #065F46; }
    .rk-badge.behind { background: rgba(155,28,34,.09); color: #9B1C22; }
    .rk-badge.tie { background: #f1f3f5; color: #6b7684; }
    .rk-vs { display: grid; gap: 7px; margin-top: 11px; }
    .rk-bar-row { display: grid; grid-template-columns: 42px minmax(0, 1fr) 58px; align-items: center; gap: 8px; font-size: 12px; color: var(--ink-3); }
    .rk-bar-label { font-weight: 900; color: var(--ink-2); }
    .rk-bar-track { height: 14px; border-radius: 999px; background: #F1EDE5; overflow: hidden; }
    .rk-bar-fill { display: block; height: 100%; min-width: 8%; border-radius: inherit; background: #CFC9BD; }
    .rk-bar-fill.me { background: #191F28; }
    .rk-bar-rank { text-align: right; font-weight: 900; color: var(--ink); font-variant-numeric: tabular-nums; }
    .rk-gap { margin-top: 8px; font-size: 12.5px; font-weight: 900; color: var(--ink-2); }
    .rk-gap.lead { color: #065F46; }
    .rk-gap.behind { color: #9B1C22; }
    .rival-low-result { margin-top: 11px; padding: 10px 12px; border-radius: 9px; background: #F5F9FF; color: var(--ink-2); line-height: 1.55; white-space: normal; overflow-wrap: anywhere; word-break: keep-all; }
    .rival-low-result-title { display: block; color: var(--ink); font-size: 13px; font-weight: 900; }
    .rival-low-result-description { display: block; margin-top: 4px; font-size: 12px; font-weight: 650; }
    .rk-metric { display: none; margin-top: 10px; background: #fff; border: 1px solid var(--line,#E5E8EB); border-radius: 9px; padding: 10px 12px; color: var(--ink-2,#4E5968); font-size: 13px; line-height: 1.6; }
    .rk-metric-hint { color: var(--ink-3); margin-top: 6px; }
    @media (max-width: 480px) {
      .rk-bar-row { grid-template-columns: 38px minmax(0, 1fr) 52px; gap: 6px; }
      .rival-kw { padding: 11px 12px; }
    }
    /* 동네 순위표 (탭 펼침, 키워드별 TOP5) */
    #hood-host .hd-item{border:1px solid var(--line,#ECE5D8);border-radius:10px;margin-bottom:6px;overflow:hidden}
    #hood-host .hd-bar{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;background:#fff}
    #hood-host .hd-bar .nm{font-weight:800;font-size:13px;flex:1}
    #hood-host .hd-bar .pos{font-size:11.5px;font-weight:800;padding:3px 9px;border-radius:999px}
    #hood-host .hd-bar .pos.in{background:#E8F6EE;color:#1A9D4B}
    #hood-host .hd-bar .pos.out{background:#FBF1D6;color:#6B7684}
    #hood-host .hd-bar .arr{color:var(--ink-3,#9A938A);font-size:12px;transition:transform .2s}
    #hood-host .hd-item.open .arr{transform:rotate(180deg)}
    #hood-host .hd-panel{max-height:0;overflow:hidden;transition:max-height 250ms var(--ease-out);background:#FBF8F2}
    #hood-host .hd-item.open .hd-panel{max-height:420px;border-top:1px solid var(--line,#ECE5D8)}
    #hood-host .hd-pin{padding:8px 12px 10px}
    #hood-host .hd-row{display:flex;align-items:center;gap:9px;padding:5px 0;border-top:1px solid #ECE5D8;font-size:12.5px}
    #hood-host .hd-row:first-child{border-top:0}
    #hood-host .hd-row .rk{width:22px;height:22px;border-radius:6px;background:#F0E7DB;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:12px;color:var(--ink-2,#4E5968);flex:none}
    #hood-host .hd-row.top3 .rk{background:#FFE08A;color:#7a5b00}
    #hood-host .hd-row.me{background:#EAF2FE;margin:0 -6px;padding:5px 6px;border-radius:7px;border-top:0}
    #hood-host .hd-row.me .rk{background:var(--orange,#0B5BD3);color:#fff}
    #hood-host .hd-row .nm{flex:1}
    #hood-host .hd-row.me .nm{font-weight:800}
    #hood-host .hd-out{display:flex;align-items:center;gap:9px;padding:6px;margin:5px -6px 0;background:#EAF2FE;border-radius:7px;font-size:12.5px;font-weight:800}
    #hood-host .hd-out .rk{min-width:26px;padding:0 5px;height:22px;border-radius:6px;background:var(--orange,#0B5BD3);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;flex:none}
    /* 회원 성장 피드 */
    .feed-card{border:1px solid var(--line,#ECE5D8);border-left:4px solid var(--orange,#0B5BD3);border-radius:14px;padding:14px 15px;background:#fff}
    .feed-toggle{border:0;background:transparent;color:var(--ink-3,#9A938A);font-size:11.5px;font-weight:900;padding:4px 0;cursor:pointer;white-space:nowrap}
    .feed-toggle:hover{color:var(--orange,#0B5BD3)}
    .feed-total{font-size:13.5px;font-weight:800;color:var(--ink,#191F28);line-height:1.45;margin:0 0 10px}
    .feed-list{display:flex;flex-direction:column;gap:8px}
    .feed-ticker{--feed-row-h:32px;height:calc(var(--feed-row-h) * 2);overflow:hidden;position:relative;cursor:pointer}
    .feed-ticker-track{display:flex;flex-direction:column;gap:0;will-change:transform}
    .feed-ticker:hover .feed-ticker-track,.feed-ticker.is-paused .feed-ticker-track{animation-play-state:paused!important}
    .feed-ticker:focus-visible{outline:2px solid rgba(11,91,211,.42);outline-offset:3px;border-radius:8px}
    @keyframes feed-roll{to{transform:translateY(calc(var(--feed-count) * var(--feed-row-h) * -1))}}
    .feed-item{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:9px;align-items:center;min-height:32px;font-size:13px;line-height:1.45;color:var(--ink-2,#4E5968)}
    .feed-ticker .feed-item{height:var(--feed-row-h);min-height:var(--feed-row-h)}
    .feed-emoji{width:28px;height:28px;border-radius:50%;background:#FFF1E9;display:flex;align-items:center;justify-content:center;font-size:15px}
    .feed-card.feed-strip .feed-emoji{width:22px;height:22px;font-size:12px}
    .feed-card.feed-strip .feed-item{grid-template-columns:22px minmax(0,1fr) auto;gap:8px}
    .feed-text{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .feed-nick{font-weight:900;color:var(--ink,#191F28)}
    .feed-when{font-size:11.5px;color:var(--ink-3,#9A938A);white-space:nowrap}
    .feed-list-expanded{display:none}
    .feed-card.feed-expanded .feed-ticker,.feed-card.feed-expanded .feed-list-collapsed{display:none}
    /* ★ 2026-08-02 코덱스 검수 #5 — 띠를 한 줄로 만들면서 펼침 상태까지 26px 에 갇혔다.
       펼치면 높이·잘림을 모두 푼다(우리가 쓴 안내 문구도 그때 온전히 보인다). */
    .feed-card.feed-strip.feed-expanded .feed-item,
    .feed-card.feed-strip.feed-expanded .feed-text {
      height: auto; min-height: 0; max-height: none; overflow: visible;
      display: block; -webkit-line-clamp: none;
    }
    .feed-card.feed-strip.feed-expanded .feed-total,
    .feed-card.feed-strip.feed-expanded .feed-foot { display: block; }
    /* 맨 위 한 줄 스트립 모드(2026-07-31): 접혀 있을 땐 티커 한 줄만 — 요약·안심은 순환 항목으로 */
    .feed-card .feed-foot{margin-top:6px;font-size:11.5px;color:var(--faint);font-weight:650}
    .feed-card.feed-strip .feed-foot{margin-top:4px;font-size:11.5px}
    .feed-card.feed-strip:not(.feed-expanded) .feed-total,
    .feed-card.feed-strip:not(.feed-expanded) .feed-foot{display:none}
    /* 행 44px 통일 + 줄바꿈 허용 — 우리가 쓴 라벨 말줄임 금지(큰 글씨 룰). 12px 두 줄까지 잘림 없이 들어감 */
    .feed-card.feed-strip{padding:6px 13px}
    /* 2026-08-02 은코치 "너무 두꺼워, 얇게" — 띠 44px→30px, 카드 여백 14px→9px.
       두 줄 넘는 글자는 안 보여줘도 된다고 하셔서 두 줄에서 자른다(은코치 명시 승인).
       ⚠️ 회사 룰은 원래 우리가 쓴 라벨의 말줄임을 금지한다 — 이 자리만 예외다. */
    /* 2026-08-02 은코치 "한줄만 나오게 더 얇게" — 실측에서 통 높이가 44px로 나와 둘째 줄이 14px 보였다.
   height 만으론 눌리지 않아(어디서 온 min-height 인지 CSS 규칙에서 못 찾음) min-height 를 함께 못 박는다. */
    .feed-card.feed-strip .feed-ticker{--feed-row-h:26px;height:var(--feed-row-h);min-height:var(--feed-row-h);max-height:var(--feed-row-h)}
    .feed-card.feed-strip .feed-item{height:var(--feed-row-h);min-height:var(--feed-row-h);max-height:var(--feed-row-h);align-items:center;overflow:hidden}
    /* 띠 높이가 한 줄(30px)인데 글자를 2줄까지 허용해 둘째 줄이 잘린 채 삐져나왔다
       (2026-08-02 은코치 "이건 한줄만 나오게"). 한 줄로 맞춘다.
       ※ 회사 룰의 말줄임 금지는 '우리가 쓴 라벨'이 대상이고, 여기는 가게 이름이 들어간
          가변 길이 문장이라 허용 범위다 (web-ui-anti-slop ⑤-① 예외). */
    .feed-card.feed-strip .feed-text{white-space:normal;overflow:hidden;word-break:keep-all;font-size:12px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}
    .feed-card.feed-expanded .feed-list-expanded{display:flex}
    .feed-card.feed-expanded .feed-text{white-space:normal;overflow:visible;text-overflow:clip}
    /* 배지 시스템 + 출석 */
    .badge-hall-card{border:1px solid var(--line,#ECE5D8);border-left:4px solid var(--orange,#0B5BD3);border-radius:14px;padding:14px 15px;background:#fff}
    #badge-host .badge-cap{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px;font-weight:900;color:#B7541F;margin-bottom:8px}
    #badge-host .badge-cap b{font-size:14px;color:var(--ink,#191F28)}
    #badge-host .badge-cap em{font-style:normal;flex:none;font-size:11.5px;font-weight:900;color:var(--ink-3,#9A938A);background:#F7F3EC;border:1px solid var(--line,#ECE5D8);border-radius:999px;padding:3px 8px}
    #badge-host .streak-row{font-size:13px;color:var(--ink-2,#4E5968);margin-bottom:8px}
    #badge-host .streak-row b{color:var(--orange,#0B5BD3);font-size:16px}
    #badge-host .badge-next{background:#F2F4F6;border:1px solid #E5E8EB;color:#4E5968;border-radius:10px;padding:9px 11px;font-size:12.5px;font-weight:800;line-height:1.45;margin-bottom:10px}
    #badge-host .badge-toast{background:#F1FAF4;border:1px solid #BFE7CD;color:#1a6b3a;border-radius:9px;padding:8px 11px;font-size:12.5px;font-weight:700;margin-bottom:9px}
    :is(#badge-host,#hall-host) .hall-board{margin-top:10px;background:#fff;border:1px solid var(--line,#ECE5D8);border-radius:14px;padding:14px 15px}
    :is(#badge-host,#hall-host) .hall-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
    :is(#badge-host,#hall-host) .hall-head b{font-size:14.5px;font-weight:900;color:var(--ink,#191F28)}
    :is(#badge-host,#hall-host) .hall-head span{font-size:11.5px;font-weight:900;color:#9A6A20;background:#FFF4E0;border:1px solid #F5DFA0;border-radius:999px;padding:4px 9px;white-space:nowrap}
    :is(#badge-host,#hall-host) .hall-list{display:grid;gap:0;border-top:1px solid var(--line,#ECE5D8);border-bottom:1px solid var(--line,#ECE5D8)}
    :is(#badge-host,#hall-host) .hall-row{display:flex;align-items:center;gap:10px;padding:11px 4px;border-bottom:1px solid var(--line,#ECE5D8);font-size:13px;line-height:1.4}
    :is(#badge-host,#hall-host) .hall-row:last-child{border-bottom:0}
    :is(#badge-host,#hall-host) .hall-row.me{background:#EAF2FE;border:1px solid #FFD7B8;border-radius:10px;margin:8px 0;border-bottom:1px solid #FFD7B8;padding:11px 8px}
    :is(#badge-host,#hall-host) .hall-no{width:26px;height:26px;border-radius:8px;background:#F0E7DB;color:#7A5C2E;display:flex;align-items:center;justify-content:center;font-weight:900;font-variant-numeric:tabular-nums;flex:0 0 auto}
    :is(#badge-host,#hall-host) .hall-row.top3 .hall-no{background:#FFE08A;color:#6C4D00}
    :is(#badge-host,#hall-host) .hall-row.me .hall-no{background:var(--orange,#0B5BD3);color:#fff}
    :is(#badge-host,#hall-host) .hall-name{flex:1;min-width:0;font-weight:900;color:var(--ink,#191F28)}
    :is(#badge-host,#hall-host) .hall-name span{display:block;margin-top:2px;font-size:11.5px;font-weight:700;color:var(--ink-3,#9A938A);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    :is(#badge-host,#hall-host) .hall-count{font-size:12px;font-weight:900;color:#065F46;font-variant-numeric:tabular-nums;white-space:nowrap}
    :is(#badge-host,#hall-host) .hall-row.me .hall-count{color:#0B5BD3}
    :is(#badge-host,#hall-host) .hall-reward{margin-top:10px;background:#FFF4E0;border:1px solid #F5DFA0;border-radius:12px;padding:11px 12px;color:#7A5C2E;font-size:12.5px;font-weight:700;line-height:1.65}
    :is(#badge-host,#hall-host) .hall-reward b{font-weight:900}
    :is(#badge-host,#hall-host) .hall-note{margin-top:9px;font-size:11.3px;color:var(--ink-3,#9A938A);line-height:1.65}
    :is(#badge-host,#hall-host) .hall-empty{border:1px dashed #E2D2B8;border-radius:12px;background:#FFF9F1;padding:14px 12px;color:#6B4F24;font-size:13px;font-weight:800;line-height:1.65}
    #badge-host .badge-summary{margin-top:10px;padding:15px 16px}
    #badge-host .bs-head{display:flex;align-items:center;gap:8px;margin-bottom:9px}
    #badge-host .bs-head b{font-size:14px;font-weight:900}
    #badge-host .bs-head span{font-size:11.5px;font-weight:700;color:var(--faint,#6B7684);font-variant-numeric:tabular-nums}
    #badge-host .bs-toggle{margin-left:auto;border:1px solid var(--line,#ECE5D8);background:#fff;color:var(--ink,#191F28);font-family:inherit;font-size:12px;font-weight:800;border-radius:999px;padding:7px 13px;cursor:pointer}
    #badge-host .bs-line{font-size:12.5px;color:#4A4139;line-height:1.7;padding:3px 0;font-variant-numeric:tabular-nums}
    #badge-host .bs-line em{font-style:normal;font-weight:900;font-size:11.5px;margin-right:7px;color:#6E6053}
    #badge-host .bs-line b{font-weight:800;color:#B45309}
    #badge-host .badge-drawer-close{display:block;width:100%;margin-top:11px;text-align:center;padding:11px}
    #badge-host .badge-drawer{margin-top:10px;background:#F8F4ED;border:1px solid var(--line,#ECE5D8);border-radius:14px;padding:13px 12px}
    #badge-host .badge-drawer-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:11px}
    #badge-host .badge-drawer-head b{font-size:14px;font-weight:900;color:var(--ink,#191F28)}
    #badge-host .badge-drawer-head span{font-size:11.5px;font-weight:900;color:#B45309;background:#FFF4E0;border:1px solid #F5DFA0;border-radius:999px;padding:4px 9px;white-space:nowrap}
    #badge-host .badge-grid{display:grid;gap:10px}
    #badge-host .badge-tree-card{background:#fff;border:1px solid var(--line,#ECE5D8);border-radius:13px;padding:12px 11px}
    #badge-host .badge-tree-cat{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}
    #badge-host .badge-tree-cat b{font-size:13.5px;font-weight:900;color:var(--ink,#191F28)}
    #badge-host .badge-tree-cat span{font-size:11.5px;color:var(--ink-3,#9A938A);font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}
    #badge-host .badge-row{display:flex;gap:8px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-bottom:2px}
    #badge-host .badge-row::-webkit-scrollbar{display:none}
    #badge-host .badge-step{flex:1 0 76px;min-width:76px;max-width:104px;min-height:96px;text-align:center;border-radius:12px;padding:10px 6px 9px;border:1px solid var(--line,#ECE5D8);background:#fff;scroll-snap-align:start;box-sizing:border-box}
    #badge-host .badge-step.got{border-color:#F5DFA0;background:#FFF4E0;color:#4E5968}
    #badge-host .badge-step.now{border:1.5px solid var(--orange,#0B5BD3);background:#EAF2FE;color:#4E5968}
    #badge-host .badge-step.lock{opacity:.45;background:#F8F8F7;color:#6F675E}
    #badge-host .badge-step .be{font-size:22px;display:block;line-height:1}
    #badge-host .badge-step .bt{font-size:11.5px;font-weight:900;display:block;line-height:1.25;min-height:28px;margin-top:6px;overflow-wrap:anywhere}
    #badge-host .badge-step .bs{font-size:11.5px;line-height:1.25;color:var(--ink-3,#9A938A);display:block;margin-top:3px;font-variant-numeric:tabular-nums}
    #badge-host .badge-step .bar{height:5px;border-radius:999px;background:#F0E4CE;margin-top:7px;overflow:hidden}
    #badge-host .badge-step .bar i{display:block;height:100%;background:var(--orange,#0B5BD3);border-radius:999px}
    /* 배지 팝업 — 클로드디자인 First Day.dc badgeOpen 껍데기 (2026-08-18 (가)): 알약·그림·제목 21/900·본문 14.5·파란 상자·「배지함에서 보기」 52px·「닫기」 */
    .badge-pop-backdrop{position:fixed;inset:0;z-index:var(--z-celebrate);display:none;align-items:center;justify-content:center;background:rgba(25,31,40,.5);padding:24px}
    .badge-pop-backdrop.show{display:flex}
    .badge-pop{width:min(92vw,340px);box-sizing:border-box;background:#fff;border-radius:22px;padding:32px 26px 26px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:14px;box-shadow:0 18px 44px rgba(33,27,21,.35);opacity:0;transform:scale(.9);transition:opacity 350ms var(--ease-out,ease),transform 350ms var(--ease-out,ease);word-break:keep-all}
    .badge-pop-backdrop.show .badge-pop{opacity:1;transform:scale(1)}
    @starting-style{.badge-pop-backdrop.show .badge-pop{opacity:0;transform:scale(.9)}}
    .badge-pop .bp-pill{background:#E7F5EE;color:#065F46;font-size:12.5px;font-weight:900;border-radius:999px;padding:4px 12px}
    .badge-pop .medal{font-size:64px;line-height:1.1}
    .badge-pop .bp-copy{display:flex;flex-direction:column;gap:6px}
    .badge-pop h2.t{margin:0;font-size:21px;font-weight:900;letter-spacing:-.02em;color:#191F28}
    .badge-pop .s{margin:0;font-size:14.5px;color:#4E5968;line-height:1.6}
    .badge-pop .next{width:100%;box-sizing:border-box;background:#EAF2FE;border-radius:14px;padding:14px 16px}
    .badge-pop .next[hidden]{display:none}
    .badge-pop .next p{margin:0;font-size:13.5px;font-weight:800;color:#1D4F9C}
    .badge-pop .bp-actions{display:flex;flex-direction:column;gap:8px;width:100%}
    .badge-pop .ok{display:flex;align-items:center;justify-content:center;width:100%;min-height:52px;border-radius:14px;background:#0B5BD3;color:#fff;font-size:16px;font-weight:800;text-decoration:none;box-sizing:border-box}
    .badge-pop .ok:hover{background:#1D4F9C;color:#fff}
    .badge-pop .bp-close{border:0;background:none;cursor:pointer;font:inherit;font-size:14px;font-weight:700;color:#4E5968;padding:6px;min-height:44px}
    /* 매일 알림 설정 */
    #alert-prefs-host .ap-input{width:100%;padding:10px 12px;border:1px solid var(--line,#ECE5D8);border-radius:9px;font:inherit;font-size:14px;margin-bottom:8px;box-sizing:border-box}
    #alert-prefs-host .ap-agree{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--ink-2,#4E5968);margin-bottom:9px;cursor:pointer}
    #alert-prefs-host .ap-btn{background:var(--orange,#0B5BD3);color:#fff;border:0;border-radius:9px;padding:10px 18px;font-weight:800;font-size:13px;cursor:pointer}
    #alert-prefs-host .ap-err{color:#d23;font-size:12px;margin:6px 0 0;min-height:1em}
    #alert-prefs-host .ap-note{font-size:11.5px;color:var(--ink-3,#9A938A);margin:8px 0 0;line-height:1.5}
    #alert-prefs-host .ap-on,#alert-prefs-host .ap-off{font-size:13.5px;color:var(--ink-2,#4E5968)}
    #alert-prefs-host .ap-on b,#alert-prefs-host .ap-off b{color:var(--ink,#2A2622)}
    /* 켜짐/꺼짐 알약 (2026-08-19 클로드디자인 최종검수) — 정본 상태쌍 #E7F5EE/#065F46. 「받는 중」 서술형 폐기. */
    #alert-prefs-host .ap-pill{display:inline-block;border-radius:999px;padding:2px 8px;font-size:12px;font-weight:800;white-space:nowrap;vertical-align:1px}
    #alert-prefs-host .ap-pill.on{background:#E7F5EE;color:#065F46}
    #alert-prefs-host .ap-pill.off{background:#F2F4F6;color:#4E5968}
    #alert-prefs-host .ap-act{margin-top:6px;font-size:12px}
    #alert-prefs-host .ap-act a{color:var(--orange,#0B5BD3);text-decoration:none;font-weight:700}
    /* ── 매일 알림 온보딩 모달(A안) + 상단 배너(C안) ── */
    #alert-onboard-modal .modal{ text-align:center; max-width:420px; }
    .onb-steps{ font-size:12px; font-weight:800; color:var(--ink-3,#9A938A); margin-bottom:8px; }
    .onb-steps b{ color:var(--orange,#0B5BD3); }
    .onb-emoji{ font-size:40px; line-height:1; margin-bottom:6px; }
    #alert-onboard-modal h3{ margin:0 0 6px; }
    #alert-onboard-modal .lead{ margin:0 0 16px; }
    #alert-onboard-modal label[for="onb-phone"]{ text-align:left; }
    #alert-onboard-modal #onb-phone{ width:100%; padding:13px 14px; border:1.5px solid var(--line,#ECE5D8); border-radius:10px; font:inherit; font-size:15px; box-sizing:border-box; }
    #alert-onboard-modal #onb-phone:focus{ border-color:var(--orange,#0B5BD3); outline:none; }
    .onb-agree{ display:flex; align-items:flex-start; gap:8px; font-size:12.5px; color:var(--ink-2,#4E5968); text-align:left; margin:13px 0 4px; cursor:pointer; line-height:1.5; }
    .onb-agree input{ margin-top:2px; flex-shrink:0; }
    .onb-note{ font-size:11.5px; color:var(--ink-3,#9A938A); margin:14px 0 0; }
    #alert-banner{ display:none; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:14px; background:#F9FAFB; border:1px solid #E5E8EB; border-radius:20px; padding:22px 24px; margin-bottom:14px; color:var(--ink-2,#4E5968); }
    #alert-banner .ab-copy{ min-width:0; }
    #alert-banner .ab-copy strong{ display:block; color:var(--ink,#191F28); font-size:16px; font-weight:900; line-height:1.4; }
    #alert-banner .ab-copy > span{ display:block; margin-top:3px; font-size:13px; font-weight:750; line-height:1.5; }
    #alert-banner .ab-preview{ margin-top:10px; padding:9px 11px; border-radius:10px; background:#fff; color:#4E5968; font-size:12px; font-weight:750; line-height:1.55; word-break:keep-all; }
    #alert-banner button{ min-height:44px; background:var(--orange,#0B5BD3); color:#fff; border:0; border-radius:10px; padding:10px 15px; font-weight:850; font-size:12.5px; cursor:pointer; white-space:normal; word-break:keep-all; font-family:inherit; }
    #alert-banner button:hover{ background:#0A4FB8; }
    #alert-banner button:focus-visible{ outline:3px solid rgba(11,91,211,.32); outline-offset:2px; }
    @media (max-width:560px){
      #alert-banner{ grid-template-columns:minmax(0,1fr); }
      #alert-banner button{ width:100%; }
    }

    /* ── Dashboard v5: 구역·정렬·기록 퀘스트 ───────────────────── */
    :root {
      /* ★ 2026-08-11 전면 통일 — 값은 design-tokens.css 기준 (이름은 다음 정리 때 교체) */
      --paper: #F2F4F6;
      --cream: #F2F4F6;
      --panel2: #F9FAFB;
      --sub: #4E5968;
      --faint: #6B7684; /* 글자 전용 회색 — #6B7684은 글자 금지 (2026-08-16 최종 검수 2번) */
      --brand: #0B5BD3;
      --brand-deep: #0A4FB8;
      --orange: #0B5BD3;
      --line: #E5E8EB;
      --ok: #065F46;
      --ok-tint: #E7F5EE;             /* 정본 pos-soft (옛 값은 팔레트 밖 초록의 rgba 표기였다 · 2026-08-18) */
      --ok-line: rgba(6,95,70,.25);   /* #065F46 계열 */
      --gold-tint: #EAF2FE;
      --gold-line: #C9DDF8;
      --r-card: 20px /* 시안 §1-B: 카드·섹션 20 (audit-I-2 ⓔ) */;
      --r-inner: 12px;
    }
    section.dashboard { padding: 26px 0 80px; }
    section.dashboard, section.dashboard * { letter-spacing: 0; word-break: keep-all; }
    section.dashboard .container { max-width: 648px; padding: 0 24px; }
    .tracker-rank-strip {
      width: 100%; min-height: 58px; display: grid; grid-template-columns: auto minmax(0,1fr) auto;
      align-items: center; gap: 10px; margin: 0 0 16px; padding: 9px 11px 9px 14px;
      border: 1px solid #E8E2D5; border-radius: 14px; background: #fff; color: var(--ink);
      box-shadow: 0 4px 20px rgba(0,0,0,.04); font: inherit; text-align: left; cursor: pointer;
    }
    .tracker-rank-strip[hidden] { display: none; }
    .tracker-rank-strip-title { color: var(--brand-deep); font-size: 11.5px; font-weight: 850; white-space: normal; }
    .tracker-rank-strip-items {
      min-width: 0; display: flex; align-items: center; gap: 8px; padding: 2px 1px 4px;
      overflow-x: auto; overscroll-behavior-inline: contain; scrollbar-width: none;
    }
    .tracker-rank-strip-items::-webkit-scrollbar { display: none; }
    .tracker-rank-strip-item {
      flex: 0 0 auto; display: inline-flex; align-items: center; gap: 5px; min-height: 34px;
      padding: 7px 10px; border-radius: 999px; background: var(--panel2);
      color: var(--ink); font-size: 12.5px; font-weight: 750; white-space: normal; overflow-wrap: anywhere;
    }
    .tracker-rank-strip-item.is-low-result {
      flex: 0 0 min(430px, calc(100vw - 150px)); align-items: flex-start; flex-wrap: wrap;
      border-radius: 12px; line-height: 1.45;
    }
    .tracker-rank-strip-item.is-low-result .tracker-rank-strip-rank { color: var(--ink); }
    .tracker-rank-strip-language { display: block; min-width: 0; line-height: 1.3; word-break: keep-all; }
    .tracker-rank-strip-language strong {
      display: block; color: var(--ink); font-size: 15px; font-weight: 900;
      font-variant-numeric: tabular-nums;
    }
    .tracker-rank-strip-language small {
      display: block; margin-top: 2px; color: #6B7684; font-size: 11.5px;
      font-weight: 650; line-height: 1.4; font-variant-numeric: tabular-nums;
    }
    .tracker-rank-strip-language.tone-rank strong { color: var(--ink); }
    .tracker-rank-strip-language.tone-top strong,
    .tracker-rank-strip-language.tone-good strong { color: #065F46; }
    .tracker-rank-strip-language.tone-warn strong { color: #B54708; }
    .tracker-rank-strip-language.tone-far strong,
    .tracker-rank-strip-language.tone-pending strong { color: #4E5968; }
    .tracker-rank-strip-description {
      flex-basis: 100%; color: var(--sub); font-size: 12px; font-weight: 650;
      white-space: normal; overflow-wrap: anywhere;
    }
    .tracker-rank-strip-item.is-primary { background: #EAF2FE; color: #4E5968; }
    .tracker-rank-strip-primary { font-weight: 900; }
    .tracker-rank-strip-badge { padding: 2px 5px; border-radius: 999px; background: #fff; color: #0A4FB8; font-size: 11.5px; font-weight: 900; }
    .tracker-rank-strip-rank { font-variant-numeric: tabular-nums; font-weight: 900; }
    .tracker-rank-strip-change { color: var(--faint); font-variant-numeric: tabular-nums; font-size: 11.5px; font-weight: 850; }
    .tracker-rank-strip-change.up { color: var(--ok); }
    .tracker-rank-strip-change.down { color: #B83220; }
    .tracker-rank-strip-arrow { color: var(--faint); font-size: 20px; line-height: 1; }
    .tracker-rank-strip:focus-visible { outline: 3px solid rgba(11,91,211,.3); outline-offset: 2px; }
    section.dashboard .dash-head { margin-bottom: 20px; padding: 2px 2px 0; }
    section.dashboard .dash-head-row { display: block; }
    /* ★ 2026-08-02 코덱스 검수 #9 — 위 display:block 이 더 구체적이라 C안 flex 배치가 통째로 무시됐다.
       (내가 "확인했다"고 보고했지만 띠의 부모만 봤고 실제 위치는 안 봤다. 실측: 피드가 오른쪽이 아니라 아래)
       같은 구체성 이상으로 다시 켠다. */
    @media (min-width: 900px) {
      section.dashboard .dash-head-row {
        display: flex; align-items: center; justify-content: space-between;
        gap: 16px; flex-wrap: wrap;
      }
      section.dashboard .dash-head-row > .dash-shop-row,
      section.dashboard .dash-head-row > .sub { flex: 0 0 auto; }
    }
    section.dashboard .dash-head h2 { margin: 0; color: var(--ink); font-size: 24px; line-height: 1.25; font-weight: 800; letter-spacing: -0.02em; }
    section.dashboard .dash-shop-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
    section.dashboard .dash-shop-row h2 { margin: 0; font-size: 26px; font-weight: 900; letter-spacing: -0.03em; line-height: 1.3; }
    .tracker-datebar { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-top: 9px; }
    .tracker-datebar-date { color: var(--ink); font-size: 13px; font-weight: 800; }
    .tracker-datebar-next { color: var(--sub); font-size: 12px; font-weight: 700; }
    .tracker-datebar-next[hidden] { display: none; }
    section.dashboard .dash-head .sub { margin-top: 7px; color: var(--sub); font-size: 13px; line-height: 1.5; font-variant-numeric: tabular-nums; }
    #dash-place-meta .meta-streak { color: #0B5BD3; font-weight: 800; font-variant-numeric: tabular-nums; }
    section.dashboard .dash-flow-badge { margin-top: 0; color: var(--ok); background: var(--ok-tint); border: 1px solid var(--ok-line); }
    section.dashboard .dash-flow-badge.down { color: #9B1C22; background: #FDECEC; border-color: #F2C4C8; }
    section.dashboard .dash-grid { gap: 0; }
    .dash-zone { margin-bottom: var(--gap-zone); }
    .zone-label { display: flex; align-items: baseline; gap: 8px; padding: 0 4px 12px; }
    .zone-label::before { content: ''; width: 4px; height: 14px; border-radius: 2px; background: var(--brand); align-self: center; flex: 0 0 auto; }
    .zone-label b { font-size: 15px; font-weight: 800; letter-spacing: -0.01em; }
    .zone-label span { font-size: 11.5px; color: var(--faint); font-weight: 600; font-variant-numeric: tabular-nums; }
    .v5-card, .summary.v5-hero, .summary .v5-card { background: var(--card); border: 1px solid var(--line); border-radius: var(--r-card); padding: 22px 24px; margin-bottom: 12px; box-shadow: 0 4px 20px rgba(0,0,0,.04); }
    #summary-card { display: none; }
    #summary-card.v5-hero { display: block; }
    .summary.v5-hero { background: var(--card); }
    .v5-hero .toplabel { font-size: 13px; font-weight: 600; color: var(--sub); }
    .v5-hero .rank-row { display: flex; align-items: baseline; gap: 10px; margin-top: 6px; flex-wrap: wrap; }
    .v5-hero .rank { font-size: 52px; font-weight: 800; letter-spacing: 0; line-height: 1; font-variant-numeric: tabular-nums; }
    .v5-hero .delta { font-size: 14px; font-weight: 800; color: var(--ok); background: var(--ok-tint); border-radius: 999px; padding: 5px 10px; font-variant-numeric: tabular-nums; }
    .v5-hero .delta.down { color: #9B1C22; background: #FDECEC; }
    .v5-hero .delta.flat { color: var(--sub); background: var(--panel2); }
    .hero-tiles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-top: 16px; }
    .hero-tile { min-height: 66px; display: flex; flex-direction: column; justify-content: center; background: var(--panel2); border-radius: var(--r-inner); padding: 12px; min-width: 0; }
    .hero-tile b { font-size: 15.5px; font-weight: 800; font-variant-numeric: tabular-nums; letter-spacing: 0; line-height: 1.3; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .hero-tile b em { font-style: normal; color: var(--ok); font-size: 12px; font-weight: 800; margin-left: 3px; }
    .hero-tile b em.down { color: #9B1C22; }
    .hero-tile span { font-size: 11.5px; color: var(--faint); font-weight: 600; margin-top: 3px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .hero-note { display: flex; gap: 8px; align-items: flex-start; background: var(--panel2); border-radius: 10px; padding: 11px 13px; margin-top: 12px; font-size: 12.5px; color: var(--sub); line-height: 1.65; }
    .hero-note b { color: var(--ink); }
    #summary-action, #summary-quicklog, #summary-celebrate, #summary-badge, #summary-weekly, #summary-feed { padding: 0; background: transparent; border: 0; border-radius: 0; }
    #summary-quicklog .quicklog { margin-top: 0; }
    .quest-card { border: 1px solid var(--line); background: var(--card); }  /* 2026-08-11 카드 선·배경 통일 */
    .quest-card.quest-priority { border-color: var(--line); box-shadow: 0 4px 20px rgba(0,0,0,.04); }  /* 강조는 라벨로만 — 테두리 통일 */
    .quest-card .qhead { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 14px; }
    .quest-card .qtitle { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; min-width: 0; }
    .quest-card .qhead b { font-size: 15px; font-weight: 800; }
    .quest-card .qpriority { font-size: 11.5px; font-weight: 800; color: var(--brand-deep); background: #EAF2FE; border: 1px solid #C9DDF8; border-radius: 999px; padding: 4px 9px; white-space: nowrap; }
    .quest-card .qreward { font-size: 11.5px; font-weight: 800; color: var(--brand-deep); background: var(--gold-tint); border: 1px solid var(--gold-line); border-radius: 999px; padding: 5px 11px; font-variant-numeric: tabular-nums; white-space: nowrap; }
        .quest-card .mission { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-inner); padding: 14px; }
    .quest-card .mission .emoji { width: 40px; height: 40px; border-radius: 10px; flex: 0 0 auto; background: #EAF2FE; display: flex; align-items: center; justify-content: center; font-size: 18px; }
    .quest-card .mission .txt { flex: 1; min-width: 0; }
    .quest-card .mission b { display: block; font-size: 14px; font-weight: 700; line-height: 1.45; }
    .quest-card .mission span { font-size: 11.5px; color: var(--sub); }
    .quest-card .mission .where { font-size: 11.5px; color: var(--faint); margin-top: 3px; }
    /* 오늘의 미션: 짧은 핵심 제목을 먼저 크게, 자세한 설명은 아래로 (2026-07-18 은코치 피드백) */
    .quest-card .mission .m-title { display: block; font-size: 15.5px; font-weight: 800; line-height: 1.35; margin-bottom: 5px; color: var(--ink); word-break: keep-all; }
    .quest-card .mission .m-detail { display: block; font-size: 12.5px; font-weight: 500; line-height: 1.62; color: var(--ink-2); margin-bottom: 7px; word-break: keep-all; }
    .quest-card .mission-label { display: inline-block; align-self: flex-start; background: #EAF2FE; color: #1D4F9C; border-radius: 999px; padding: 4px 12px; font-size: 12.5px; font-weight: 850; }
    .quest-card .mission-hero { margin-top: 8px; }
    .quest-card .mission-bignum { display: flex; align-items: baseline; gap: 5px; margin-bottom: 2px; }
    .quest-card .mission-bignum b { color: var(--ink); font-size: clamp(54px, 15vw, 76px); font-weight: 850; letter-spacing: -.05em; line-height: .98; font-variant-numeric: tabular-nums; }
    .quest-card .mission-bignum span { color: var(--ink-2); font-size: 25px; font-weight: 850; }
    .quest-card .mission-observation-basis { margin-top: 8px; color: var(--ink-3); font-size: 12px; font-weight: 750; line-height: 1.55; white-space: normal; overflow-wrap: anywhere; word-break: keep-all; }
    .quest-card .mission-title { margin: 0; color: var(--ink); font-size: clamp(20px, 5vw, 22px); font-weight: 800;  /* 2026-08-11 제목 크기 통일(22px 상한) */ letter-spacing: -.025em; line-height: 1.25; word-break: keep-all; }
    .quest-card .mission-lead { margin: 12px 0 0; color: var(--ink-2); font-size: 15px; font-weight: 650; line-height: 1.7; word-break: keep-all; }
/* 정기 카드 근거 앞부분 — 은코치 2026-08-17 「A안」: 배우는 글이 접기 안에만 있으면 안 읽힌다.
   앞 한두 문장만 카드에 내놓고 나머지는 「근거 보기」 안으로. */
.mission-why-peek { margin: 8px 0 0; font-size: 14px; line-height: 1.7; color: var(--ink-2, #4E5968); word-break: keep-all; }
    .quest-card .mission-lead b { color: var(--ink); }
    .quest-card .mission-detail-fold { margin-top: 16px; }
    .quest-card .mission-detail-copy { margin: 0; color: var(--ink-2); font-size: 13.5px; line-height: 1.7; }
    .quest-card .mission-detail-copy + .mission-detail-copy { margin-top: 9px; }
    .quest-card .mission-detail-copy b { color: var(--ink); }
    .quest-card .mission-source { margin-top: 12px; padding-top: 11px; border-top: 1px solid var(--line); color: var(--faint); font-size: 11.5px; line-height: 1.55; }
    .quest-card .mbtns { display: grid; grid-template-columns: 1fr; gap: 8px; flex: 1 0 100%; } /* 시안 세로 2단 (audit-tracker-body 2) */
    .quest-card .btn-go, .quest-card .btn-tool, .quest-card .btn-done, .quest-card .btn-skip, .quest-card .btn-mark-done { min-height: 44px; border-radius: 11px; padding: 12px; font: inherit; font-size: 13px; font-weight: 800; line-height: 1.4; cursor: pointer; text-align: center; word-break: keep-all; }
    /* 2026-08-02 은코치 "직접하러가기를 중간배열로 해" — 옆 AI 버튼이 두 줄(58px)이라
       칸 높이가 늘었는데, 이 버튼 글자는 위쪽에 붙어 있었다. 세로·가로 모두 가운데로. */
    .quest-card .btn-go { display: flex; align-items: center; justify-content: center; border: 1.5px solid var(--line); background: var(--card); color: var(--ink); }
    /* 2026-08-02 은코치 "정렬이 안맞아" — 왼쪽 버튼은 글자가 왼끝, 오른쪽은 가운데라 나란히 두면 어긋나 보였다.
       둘 다 가운데로 맞춘다. */
    .quest-card .btn-mark-done { display: flex; align-items: center; justify-content: center; min-height: 48px; border: 1.5px solid var(--line); background: var(--card); color: var(--ink); cursor: pointer; font: inherit; font-size: 14px; font-weight: 800; border-radius: 12px; }
    .quest-card .btn-mark-done:active { transform: scale(.98); }
    /* 목적지 없는 미션의 주버튼 승격 — 파란 주버튼 값(btn-tool과 동일 톤) */
    .quest-card .btn-mark-done.btn-mark-done-primary { min-height: 52px; border: 1px solid #0B5BD3; background: #0B5BD3; color: #fff; }
    .quest-card .btn-tool { display: flex; min-height: 52px; align-items: center; justify-content: center; border: 1px solid #0B5BD3; background: #0B5BD3; color: #fff; text-align: center; text-decoration: none; }
    .quest-card .btn-tool .m { display: block; color: #fff; font-size: 14px; font-weight: 850; line-height: 1.4; }
    .quest-card .btn-tool .s { display: block; margin-top: 3px; color: #EAF2FE; font-size: 11.5px; font-weight: 650; line-height: 1.4; }
    .quest-card .btn-done { border: 0; background: var(--ok); color: #fff; box-shadow: 0 4px 10px rgba(30,122,70,0.25); }
    /* 넘길게요 출구 = 버튼 아니라 작은 링크 (2026-07-30 은코치 "줄여" · 44px 터치 크기는 유지) */
    .quest-card .btn-skip { border: 0; background: none; color: var(--sub); font-weight: 650; text-decoration: underline; text-underline-offset: 3px; display: block; margin: 2px auto 0; }
    .tracker-detail-body .where-go { display: inline-block; padding: 13px 5px; margin: -9px -3px; color: var(--brand-deep); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
    .quest-card .btn-done:disabled, .quest-card .qchip:disabled { opacity: .65; cursor: default; }
    .quest-card .tool-perk { flex: 1 0 100%; margin-top: -2px; font-size: 11.5px; color: var(--faint); line-height: 1.6; }
    /* 칭찬형 재설계 (2026-07-31): 구체 행동 칭찬 + 유지 팁(초록) + 기록 유도 버튼 */
    .mission-praise .praise-facts { margin: 10px 2px 0; font-size: 13px; font-weight: 750; color: var(--green); word-break: keep-all; line-height: 1.55; }
    .mission-praise .praise-tip { margin-top: 10px; padding: 12px 14px; border-radius: 10px; background: rgba(8, 122, 85, .07); font-size: 13.5px; line-height: 1.65; color: var(--ink-2); word-break: keep-all; }
    .mission-praise .mbtns { margin-top: 12px; }
    /* 시크릿노트는 실행 CTA가 아니라 "방법" 참고 링크라 완료·도구 버튼보다 한 단계 낮춘다. */
    .quest-card .mission-howlink { flex: 1 0 100%; display: block; margin-top: 1px; text-align: center; color: var(--faint); font-size: 11.5px; line-height: 1.65; text-decoration: none; }
    .quest-card .mission-howlink b { display: inline; color: var(--sub); font-size: inherit; text-decoration: underline; text-underline-offset: 3px; }
    .quest-card .mission-howlink:hover b, .quest-card .mission-howlink:focus-visible b { color: var(--brand-deep); }
    .quest-card .mission-howlink:focus-visible { outline: 2px solid rgba(11,91,211,.32); outline-offset: 3px; border-radius: 5px; }
    /* 접기 안으로 이사한 방법 링크(2026-08-05) — 근거 글줄에 맞춰 왼쪽 정렬·같은 크기·굵게 (은코치: 작아서 안 보임·정렬 깨짐) */
    .quest-card .mission-detail-fold .mission-howlink { display: inline; flex: none; margin-top: 0; text-align: left; color: var(--sub); font-size: inherit; font-weight: 800; }
    .card-feedback { min-width: 0; margin-top: 14px; padding-top: 13px; border-top: 1px solid #D7DCE2; color: #4E5968; font-size: 12px; line-height: 1.55; }
    .card-feedback-nudge { margin: 0 2px 9px; color: #6B7684; font-size: 12.5px; line-height: 1.55; white-space: normal; overflow-wrap: anywhere; word-break: keep-all; }
    .card-feedback-actions { display: flex; flex-wrap: wrap; gap: 8px; }
    .card-feedback-button { flex: 1 1 190px; min-width: min(100%, 190px); min-height: 44px; height: auto; padding: 10px 12px; border: 1px solid #C9D0D8; border-radius: 10px; background: #fff; color: #4E5968; font: inherit; font-size: 12px; font-weight: 750; line-height: 1.45; text-align: center; white-space: normal; overflow-wrap: anywhere; cursor: pointer; }
    .card-feedback-button:hover { border-color: #6B7684; background: #F9FAFB; }
    .card-feedback-button[aria-pressed="true"] { border-color: #4E5968; background: #4E5968; color: #fff; }
    .card-feedback-button:focus-visible,
    .card-feedback-reason-row input:focus-visible,
    .card-feedback-send:focus-visible { outline: 3px solid rgba(55, 65, 81, .28); outline-offset: 2px; }
    .card-feedback-reason { margin-top: 10px; padding: 12px; border: 1px solid #D7DCE2; border-radius: 10px; background: #F9FAFB; }
    .card-feedback-reason[hidden] { display: none; }
    .card-feedback-reason label { display: block; color: #4E5968; font-weight: 700; line-height: 1.55; word-break: keep-all; }
    .card-feedback-reason-row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
    .card-feedback-reason-row input { flex: 1 1 220px; min-width: min(100%, 220px); min-height: 44px; height: auto; padding: 10px 12px; border: 1px solid #9CA3AF; border-radius: 9px; background: #fff; color: #111827; font: inherit; font-size: 13px; line-height: 1.45; }
    .card-feedback-send { flex: 0 1 auto; min-width: 72px; min-height: 44px; height: auto; padding: 10px 15px; border: 1px solid #4E5968; border-radius: 9px; background: #4E5968; color: #fff; font: inherit; font-size: 12.5px; font-weight: 800; line-height: 1.45; white-space: normal; cursor: pointer; }
    .card-feedback-status { margin: 9px 2px 0; color: #4E5968; font-size: 12px; font-weight: 750; line-height: 1.55; word-break: keep-all; }
    .card-feedback-status[hidden] { display: none; }
    #practice-question-widget { margin: 0 2px 18px; }
    #practice-question-widget[hidden] { display: none; }
    .practice-question-card { border-color: #E8B97B; transition: opacity 220ms var(--ease-out), transform 220ms var(--ease-out); }
    .practice-question-card.is-dismissing { opacity: 0; transform: translateY(-6px); pointer-events: none; }
    .practice-question-card .practice-question-copy { margin: 0; color: var(--ink); font-size: 14px; font-weight: 700; line-height: 1.7; word-break: keep-all; }
    .practice-question-card .practice-answers { min-width: 0; margin: 14px 0 0; padding: 0; border: 0; }
    .practice-question-card .practice-answer-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
    .practice-question-card .practice-answer { min-height: 45px; border: 1px solid #E5C99D; border-radius: 11px; padding: 11px 12px; background: var(--card); color: var(--ink); font: inherit; font-size: 13px; font-weight: 800; line-height: 1.4; cursor: pointer; }
    .practice-question-card .practice-answer:hover { border-color: var(--brand); background: #FFF8F4; }
    .practice-question-card .practice-answer:focus-visible { outline: 3px solid rgba(11,91,211,.22); outline-offset: 2px; }
    .practice-question-card .practice-answer:disabled { opacity: .58; cursor: default; }
    .practice-question-card .practice-answer[aria-pressed="true"] { border-color: var(--ok); background: var(--ok-tint); color: var(--ok); }
    .practice-question-card .practice-answer-status { min-height: 20px; margin: 10px 2px 0; color: var(--sub); font-size: 12.5px; line-height: 1.55; }
    .practice-question-card .practice-answer-status.success { color: var(--ok); font-weight: 800; }
    .practice-question-card .practice-answer-status.error { color: #9B1C22; }
    .practice-question-card .practice-submit { width: 100%; min-height: 44px; margin-top: 10px; padding: 11px 16px; border: 0; border-radius: 11px; background: var(--brand); color: #fff; font: inherit; font-size: 13.5px; font-weight: 800; cursor: pointer; }
    .practice-question-card .practice-submit:disabled { opacity: .48; cursor: default; }
    .practice-question-card .practice-answer-result { display: grid; gap: 9px; margin-top: 13px; padding: 13px 14px; border: 1px solid var(--ok-line); border-radius: 12px; background: var(--ok-tint); color: var(--ink); font-size: 13px; font-weight: 650; line-height: 1.65; }
    .practice-question-card .practice-answer-result p { margin: 0; color: #065F46; }
    .practice-question-card .practice-answer-links { display: flex; flex-wrap: wrap; gap: 7px; }
    .practice-question-card .practice-answer-link { display: inline-flex; min-height: 44px; align-items: center; padding: 9px 12px; border: 1px solid var(--brand); border-radius: 10px; background: #fff; color: var(--brand-deep); font-size: 12.5px; font-weight: 850; text-decoration: none; }
    #practice-onboarding-modal { z-index: var(--z-modal); padding: 18px; }
    #onboarding-practice-card { width: min(520px, calc(100% - 20px)); padding: 25px; text-align: left; }
    #onboarding-practice-card .practice-onboarding-kicker { margin: 0 0 7px; color: var(--brand-deep); font-size: 12px; font-weight: 850; }
    #onboarding-practice-card h3 { margin-bottom: 6px; font-size: 21px; }
    #onboarding-practice-progress { margin: 0 0 18px; color: var(--sub); font-size: 12.5px; font-weight: 750; }
    #onboarding-practice-body .practice-question-copy { margin: 0; color: var(--ink); font-size: 15px; font-weight: 800; line-height: 1.65; }
    #onboarding-practice-body .practice-answers { min-width: 0; margin: 15px 0 0; padding: 0; border: 0; }
    #onboarding-practice-body .practice-answer-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
    #onboarding-practice-body .practice-answer { min-height: 46px; padding: 11px 12px; border: 1px solid #E5C99D; border-radius: 11px; background: #fff; color: var(--ink); font: inherit; font-size: 13px; font-weight: 800; cursor: pointer; }
    #onboarding-practice-body .practice-answer[aria-pressed="true"] { border-color: var(--ok); background: var(--ok-tint); color: var(--ok); }
    /* 성향 문항(owner_style) — 시안 EunCoach Onboarding ② 3/8: 세로 라디오 줄. 라벨은 keep-all로 감김(말줄임 금지)
       ⚠️ 라디오 원 테두리는 시안의 연회색(8B·95·A1) 대신 #6B7684 — 그 값은 design-value-guard 금지색(팔레트 밖)이라 가장 가까운 팔레트 회색으로 바꿈. 되돌리지 말 것 */
    #onboarding-practice-body .practice-question-hint { margin: -4px 0 0; color: #6B7684; font-size: 13px; line-height: 1.6; word-break: keep-all; }
    #onboarding-practice-body .practice-answer-grid.is-stack { grid-template-columns: 1fr; }
    #onboarding-practice-body .practice-answer-grid.is-stack .practice-answer { display: flex; align-items: center; gap: 11px; text-align: left; min-height: 52px; padding: 13px 14px; border: 1.5px solid #E5E8EB; border-radius: 12px; background: #fff; color: var(--ink); font-size: 14.5px; font-weight: 700; line-height: 1.5; word-break: keep-all; }
    #onboarding-practice-body .practice-answer-grid.is-stack .practice-answer:hover { border-color: #0B5BD3; }
    #onboarding-practice-body .practice-answer-grid.is-stack .practice-answer-ring { flex: 0 0 auto; width: 20px; height: 20px; border-radius: 50%; border: 1.5px solid #6B7684; background: #fff; display: flex; align-items: center; justify-content: center; }
    #onboarding-practice-body .practice-answer-grid.is-stack .practice-answer-ring::after { content: ''; width: 10px; height: 10px; border-radius: 50%; background: transparent; }
    #onboarding-practice-body .practice-answer-grid.is-stack .practice-answer-label { flex: 1; min-width: 0; }
    #onboarding-practice-body .practice-answer-grid.is-stack .practice-answer[aria-pressed="true"] { border-color: #0B5BD3; background: #EAF2FE; color: #1D4F9C; }
    #onboarding-practice-body .practice-answer-grid.is-stack .practice-answer[aria-pressed="true"] .practice-answer-ring { border-color: #0B5BD3; }
    #onboarding-practice-body .practice-answer-grid.is-stack .practice-answer[aria-pressed="true"] .practice-answer-ring::after { background: #0B5BD3; }
    #onboarding-practice-body .practice-submit { width: 100%; min-height: 44px; margin-top: 10px; border: 0; border-radius: 11px; background: var(--brand); color: #fff; font: inherit; font-size: 13.5px; font-weight: 850; cursor: pointer; }
    #onboarding-practice-body .practice-submit:disabled { opacity: .48; cursor: default; }
    #onboarding-practice-status { min-height: 20px; margin: 11px 0 0; color: var(--sub); font-size: 12.5px; line-height: 1.6; }
    #onboarding-practice-status.error { color: #9B1C22; }
    /* 시안 Onboarding.dc levelResult (2026-08-18): #E7F5EE 상자 · 제목 13px/800 #065F46 · 본문 14px #065F46 */
    #onboarding-practice-status .practice-answer-result { display: grid; gap: 4px; padding: 12px 14px; border-radius: 12px; background: #E7F5EE; color: #065F46; font-weight: 500; }
    #onboarding-practice-status .practice-answer-result p { margin: 0; font-size: 14px; line-height: 1.55; }
    .practice-answer-result .practice-answer-title { display: block; font-size: 13px; font-weight: 800; color: #065F46; }
    #onboarding-practice-status .practice-answer-links { display: flex; flex-wrap: wrap; gap: 7px; }
    #onboarding-practice-status .practice-answer-link { color: var(--brand-deep); font-weight: 850; }
    .practice-onboarding-next { width: 100%; min-height: 44px; margin-top: 12px; border: 0; border-radius: 11px; background: #0B5BD3; color: #fff; font: inherit; font-size: 13.5px; font-weight: 850; cursor: pointer; }
    #onboarding-practice-skip { min-height: 44px; }
    /* 거점키워드 고르기 (가입 마지막 단계) */
    #primary-pick-modal { z-index: var(--z-modal); padding: 18px; }
    #primary-pick-card { width: min(520px, calc(100% - 20px)); padding: 25px; text-align: left; }
    #primary-pick-card h3 { margin-bottom: 10px; font-size: 21px; }
    .primary-pick-evi { margin: 0 0 14px; padding: 12px 14px; border-radius: 10px; background: rgba(8, 122, 85, .07); color: var(--ink-2); font-size: 13.5px; line-height: 1.65; word-break: keep-all; }
    #primary-pick-list { display: grid; gap: 8px; }
    #primary-pick-list .primary-pick-option { display: flex; align-items: center; gap: 9px; min-height: 52px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 12px; background: #fff; color: var(--ink); font: inherit; font-size: 15px; font-weight: 800; cursor: pointer; text-align: left; word-break: keep-all; }
    #primary-pick-list .primary-pick-option .star { color: var(--brand); font-size: 17px; line-height: 1; }
    #primary-pick-list .primary-pick-option[aria-pressed="true"] { border-color: var(--ok); background: var(--ok-tint); }
    #primary-pick-list .primary-pick-option:disabled { opacity: .55; cursor: default; }
    #primary-pick-status { min-height: 18px; margin: 10px 0 0; color: var(--sub); font-size: 12.5px; line-height: 1.6; }
    #primary-pick-status.error { color: #9B1C22; }
    .quicklog { margin-top: 0; }
    .quicklog .ql-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; } /* 시안 Tracker v3 2026-08-19 */
    .quicklog .ql { color: var(--ink); font-size: 16px; font-weight: 800; line-height: 1.45; }
    .quicklog .ql-count { font-size: 12.5px; font-weight: 800; color: var(--ink-4); text-align: right; word-break: keep-all; } /* nowrap 없음 — 큰 글씨에서 두 줄로 */
    .quicklog .ql-count:empty { display: none; }
    .quicklog .quicklog-side { margin: 12px 0 0; font-size: 12.5px; color: var(--ink-4); line-height: 1.6; word-break: keep-all; }
    .quicklog .qs { margin: 5px 0 0; color: var(--sub); font-size: 12.5px; font-weight: 650; line-height: 1.6; }
    .quicklog .chips { display: flex; gap: 7px; flex-wrap: wrap; margin-top: 14px; }
    .qchip { min-height: 44px; border: 1px solid var(--line); background: var(--card); color: var(--ink-2); font: inherit; font-size: 12.5px; font-weight: 750; border-radius: 999px; padding: 9px 13px; cursor: pointer; white-space: normal; word-break: keep-all; }
    .qchip:focus-visible { outline: 3px solid rgba(169,52,30,.2); outline-offset: 2px; }
    .logmeter { display: flex; align-items: center; gap: 12px; margin-top: 14px; padding-top: 14px; border-top: 1px dashed #EBD9BC; }
    .logmeter .fire { font-size: 18px; }
    .logmeter .txt { flex: 1; min-width: 0; }
    .logmeter .txt b { display: block; font-size: 12.5px; font-weight: 800; font-variant-numeric: tabular-nums; }
    .logmeter .bar { height: 8px; border-radius: 999px; background: #F0E4CE; margin-top: 6px; overflow: hidden; }
    .logmeter .bar i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--brand), #FF8A5C); }
    body.demo .logmeter .bar i { transition: width 560ms var(--ease-out); }
    .logmeter .cnt { font-size: 11.5px; font-weight: 800; color: var(--brand-deep); background: var(--gold-tint); border: 1px solid var(--gold-line); border-radius: 999px; padding: 5px 10px; flex: 0 0 auto; font-variant-numeric: tabular-nums; }
    .quest-card .why { font-size: 11.5px; color: var(--faint); margin-top: 10px; line-height: 1.6; }
    .profile-question-card {
      border-color: #D8C7A7;
      background: #fff;
      color: var(--ink);
    }
    .profile-question-card .profile-question-kicker {
      margin: 0 0 12px;
      color: #4E5968;
      font-size: 13px;
      font-weight: 800;
      line-height: 1.55;
      word-break: keep-all;
    }
    .profile-question-fieldset {
      min-width: 0;
      margin: 0;
      padding: 0;
      border: 0;
    }
    .profile-question-fieldset legend {
      width: 100%;
      margin: 0 0 15px;
      padding: 0;
      color: var(--ink);
      font-size: 18px;
      font-weight: 850;
      line-height: 1.5;
      word-break: keep-all;
    }
    .profile-question-options {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(148px, 1fr));
      gap: 8px;
    }
    .profile-question-card button {
      min-height: 44px;
      font-family: inherit;
      line-height: 1.45;
      white-space: normal;
      word-break: keep-all;
    }
    .profile-question-option {
      padding: 10px 12px;
      border: 1px solid #CFC7BA;
      border-radius: 11px;
      background: #fff;
      color: #20242A;
      font-size: 13.5px;
      font-weight: 750;
      cursor: pointer;
    }
    .profile-question-option:hover,
    .profile-question-option:focus-visible {
      border-color: #2F855A;
      background: #F3FAF6;
    }
    .profile-question-option:focus-visible,
    .profile-question-submit:focus-visible,
    .profile-question-custom-save:focus-visible,
    .profile-question-later:focus-visible {
      outline: 3px solid rgba(21, 107, 67, .24);
      outline-offset: 2px;
    }
    .profile-question-option[aria-pressed="true"] {
      border-color: #2F855A;
      background: #EAF7EF;
      color: #155B35;
    }
    .profile-question-custom,
    .profile-question-detail {
      display: block;
      margin-top: 13px;
      color: #4E5968;
      font-size: 13px;
      font-weight: 750;
      line-height: 1.55;
      word-break: keep-all;
    }
    .profile-question-custom-row {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
      margin-top: 6px;
    }
    .profile-question-custom-row input,
    .profile-question-detail input {
      width: 100%;
      min-width: 0;
      min-height: 44px;
      box-sizing: border-box;
      padding: 10px 12px;
      border: 1px solid #AFA79A;
      border-radius: 10px;
      background: #fff;
      color: #20242A;
      font: inherit;
      font-size: 14px;
      line-height: 1.45;
    }
    .profile-question-custom-row input {
      flex: 1 1 210px;
    }
    .profile-question-custom-row input::placeholder,
    .profile-question-detail input::placeholder {
      color: #686F79;
      opacity: 1;
    }
    .profile-question-custom-row input:focus,
    .profile-question-detail input:focus {
      border-color: #2F855A;
      outline: 3px solid rgba(21, 107, 67, .16);
    }
    .profile-question-custom-save,
    .profile-question-submit {
      border: 0;
      border-radius: 11px;
      background: #156B43;
      color: #fff;
      font-size: 13.5px;
      font-weight: 850;
      cursor: pointer;
    }
    .profile-question-custom-save {
      flex: 1 1 150px;
      padding: 10px 14px;
    }
    .profile-question-submit {
      width: 100%;
      margin-top: 13px;
      padding: 11px 16px;
    }
    .profile-question-card button:disabled {
      opacity: .55;
      cursor: default;
    }
    .profile-question-suggestion-status {
      min-height: 20px;
      margin: 8px 1px 0;
      color: #4E5968;
      font-size: 12.5px;
      line-height: 1.55;
      word-break: keep-all;
    }
    .profile-question-status {
      min-height: 21px;
      margin: 10px 1px 0;
      color: #4E5968;
      font-size: 13px;
      line-height: 1.55;
      word-break: keep-all;
    }
    .profile-question-status.error {
      color: #9B1C22;
      font-weight: 750;
    }
    .profile-question-later {
      width: 100%;
      margin-top: 4px;
      padding: 10px 14px;
      border: 1px solid #CFC7BA;
      border-radius: 11px;
      background: #fff;
      color: #3F454D;
      font-size: 13px;
      font-weight: 750;
      cursor: pointer;
    }
    .profile-question-success {
      margin: 0;
      padding: 5px 0;
      color: #155B35;
      font-size: 15px;
      font-weight: 800;
      line-height: 1.65;
      word-break: keep-all;
    }
    @media (max-width: 430px) {
      .profile-question-options { grid-template-columns: minmax(0, 1fr); }
      .profile-question-custom-row { flex-direction: column; }
      .profile-question-custom-save { width: 100%; }
    }
    .quest-celebrate { padding: 22px; text-align: center; background: linear-gradient(180deg,#fff,#F1FBF6); border-color: var(--ok-line); }
    .quest-celebrate .done-mark { position: relative; width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; background: #FFFFFF; border: 1px solid #CDEBDC; }
    .quest-celebrate .done-mark svg { width: 22px; height: 22px; }
    .quest-celebrate .done-ring { position: absolute; inset: -2px; border-radius: 50%; border: 2px solid #065F46; pointer-events: none; }
    .quest-celebrate .euncoach-confetti { position: absolute; top: 50%; left: 50%; width: 6px; height: 6px; margin: -3px 0 0 -3px; border-radius: 2px; pointer-events: none; opacity: 0; }
    .quest-celebrate h3 { margin: 10px 0 0; color: var(--ink); font-size: 24px; font-weight: 900; line-height: 1.3; }
    .quest-celebrate .done-memo { margin: 7px 0 0; color: var(--ink-2); font-size: 14px; line-height: 1.65; word-break: keep-all; }
    .quest-celebrate .done-badge { margin-top: 14px; padding: 12px; border: 1px solid #E5E8EB; border-radius: 12px; background: #FFF3E8; }
    .quest-celebrate .done-badge strong,
    .quest-celebrate .done-badge span { display: block; }
    .quest-celebrate .done-badge strong { color: #71301F; font-size: 14px; font-weight: 900; }
    .quest-celebrate .done-badge span { margin-top: 3px; color: #4E5968; font-size: 12px; line-height: 1.5; }
    .quest-celebrate .done-next { margin-top: 15px; padding: 13px 14px; border-radius: 12px; background: #fff; text-align: left; }
    .quest-celebrate .done-next b { display: block; color: var(--ink); font-size: 13px; font-weight: 900; }
    .quest-celebrate .done-next p { margin: 5px 0 0; color: var(--ink-2); font-size: 12.5px; line-height: 1.65; }
    .quest-celebrate .done-count { margin: 11px 0 0; color: #065F46; font-size: 12px; font-weight: 850; }
    #kw-rival-shell { max-width: none; margin: 0; }
    #rival-score-box { display: block; border-radius: var(--r-card); padding: 20px; background: var(--card); border: 1px solid var(--line); cursor: default; }
    #rival-score-box.lead { background: var(--card); border-color: var(--line); }
    #rival-score-box.behind { background: #FFF8F6; border-color: #F2C4C8; }
    #rival-score-box .rs-top { display: flex; align-items: center; gap: 12px; }
    #rival-score-box .rs-score { order: -1; font-size: 22px; font-weight: 800; letter-spacing: 0; }
    #rival-score-box .rs-label { display: none; }
    #rival-score-box .rs-state { margin-left: auto; font-size: 11.5px; font-weight: 800; color: var(--ok); background: var(--ok-tint); border-radius: 999px; padding: 5px 10px; white-space: normal; word-break: keep-all; }
    #rival-score-box .rs-state.behind { color: #9B1C22; background: #FFF1EE; }
    #rival-score-box .rs-state.tie { color: var(--sub); background: var(--panel2); }
    #rival-score-box .rs-bottom { margin-top: 12px; color: var(--sub); font-size: 12px; font-weight: 600; }
    #rival-score-box .rs-more { color: var(--faint); }
    #rival-score-box .rstreak { display: flex; align-items: center; gap: 12px; margin-top: 14px; padding-top: 14px; border-top: 1px dashed var(--line); }
    #rival-score-box .rstreak .days { display: flex; gap: 4px; }
    #rival-score-box .rstreak .days i { width: 20px; height: 20px; border-radius: 50%; font-style: normal; font-size: 11.5px; line-height: 20px; text-align: center; background: #F0EAE0; color: var(--faint); }
    #rival-score-box .rstreak .days i.on { background: var(--ok); color: #fff; font-weight: 800; }
    #rival-score-box .rstreak p { flex: 1; margin: 0; font-size: 12px; color: var(--ink-2); line-height: 1.5; font-variant-numeric: tabular-nums; }
    #rival-score-box .rstreak p b { color: var(--gold); }
    .rival-bundle-toggle-wrap { margin-top: 10px; }
    .rival-bundle-toggle-row { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 12px; align-items: start; min-width: 0; padding: 12px 14px; border: 1px solid #DDD5C8; border-radius: 12px; background: #FFFCF8; cursor: pointer; }
    .rival-bundle-toggle-control { position: relative; display: block; width: 44px; height: 44px; }
    .rival-bundle-toggle-control input { position: absolute; inset: 0; z-index: var(--z-deco-2); width: 44px; height: 44px; margin: 0; opacity: 0; cursor: pointer; }
    .rival-bundle-toggle-track { position: absolute; top: 11px; left: 2px; width: 40px; height: 22px; border-radius: 999px; background: #4E5968; transition: background-color 160ms ease; }
    .rival-bundle-toggle-track::after { content: ''; position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.25); transition: transform 160ms ease; }
    .rival-bundle-toggle-control input:checked + .rival-bundle-toggle-track { background: #065F46; }
    .rival-bundle-toggle-control input:checked + .rival-bundle-toggle-track::after { transform: translateX(18px); }
    .rival-bundle-toggle-control input:focus-visible + .rival-bundle-toggle-track { outline: 3px solid #0B5BD3; outline-offset: 3px; }
    .rival-bundle-toggle-control input:disabled { cursor: wait; }
    .rival-bundle-toggle-control input:disabled + .rival-bundle-toggle-track { opacity: .58; }
    .rival-bundle-toggle-copy { min-width: 0; padding-top: 1px; }
    .rival-bundle-toggle-title { display: block; color: #2D2924; font-size: 14px; font-weight: 850; line-height: 1.5; word-break: keep-all; overflow-wrap: anywhere; }
    .rival-bundle-toggle-description { display: block; margin-top: 4px; color: #4E5968; font-size: 14px; line-height: 1.6; word-break: keep-all; overflow-wrap: anywhere; }
    .rival-bundle-toggle-error { margin: 7px 4px 0; color: #9B1C22; font-size: 13px; font-weight: 700; line-height: 1.5; }
    .rival-bundle-lock-note { display: block; margin-top: 12px; padding: 11px 12px; border: 1px solid #E7D4B0; border-radius: 10px; background: #FFF6EE; color: #8A5A1A; font-size: 14px; font-weight: 800; line-height: 1.55; word-break: keep-all; overflow-wrap: anywhere; }
    .rival-bundle-reward { display: block; margin-top: 12px; padding: 10px 12px; border: 1px solid #BFDCC9; border-radius: 10px; background: #F0FDF4; color: #14652F; font-size: 14px; font-weight: 850; line-height: 1.5; word-break: keep-all; }
    #rival-score-box:is(.bundle-locked,.bundle-pending) .rs-score,
    section.dashboard #rival-score-box:is(.bundle-locked,.bundle-pending) :is(.rs-me,.rs-rival,.rs-colon) { color: #4E5968; }
    #rival-score-box:is(.bundle-locked,.bundle-pending) .rs-state { color: #4E5968; background: #F2EEE8; }
    [data-rival-result-detail][hidden] { display: none !important; }
    @media (prefers-reduced-motion: reduce) {
      .rival-bundle-toggle-track,
      .rival-bundle-toggle-track::after { transition: none; }
    }
    #rival-body { border-color: var(--line); background: #FBF7F0; }
    #rival-defense { max-width: none; border-color: var(--line); }
    .watch-note { font-size: 12px; color: var(--sub); padding: 2px 6px 0; font-variant-numeric: tabular-nums; }
    .watch-note b { color: var(--brand-deep); }
    .v5-keywords-panel { padding: 0; border: 0; background: transparent; }
    /* 접기 제목 복원 (2026-07-31 은코치 "중복되어 보인다") — 목록(rank-lanes)이 요약을 맡고,
       상세는 닫힌 한 줄이 기본. 옛 summary 숨김이 '닫을 수 없는 펼침'을 만들었다 */
    .v5-keywords-panel > summary { display: flex; align-items: center; min-height: 48px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 14px; background: var(--card); cursor: pointer; list-style: none; }
    .v5-keywords-panel > summary::-webkit-details-marker { display: none; }
    .v5-keywords-panel > summary::after { content: '⌄'; margin-left: auto; color: var(--sub); transition: transform 160ms ease; }
    .v5-keywords-panel[open] > summary::after { transform: rotate(180deg); }
    .v5-keywords-panel[open] > summary { margin-bottom: 10px; }
    .v5-keywords-panel > summary h4 { font-size: 14.5px; }
    .kw-market { max-width: none; margin: 0; }
    .kw-market-board { border-radius: var(--r-card); box-shadow: none; border-color: var(--line); }
    .kw-market-head { display: none; }
    .kw-market-row > summary { min-height: 0; padding: 15px 18px; }
    .kw-row-top { display: grid; grid-template-columns: minmax(0, 1fr) minmax(96px, auto) auto 14px; align-items: center; gap: 12px; }
    .kw-name { min-width: 0; white-space: normal; }
    .kw-name b {
      display: block; color: var(--ink); font-size: 14.5px; font-weight: 700;
      overflow: visible; text-overflow: clip; white-space: normal;
      overflow-wrap: anywhere; word-break: keep-all;
    }
    .kw-name .kw-row-sub {
      display: block; margin-top: 2px; color: var(--faint); font-size: 11.5px;
      font-variant-numeric: tabular-nums; white-space: normal; overflow: visible; text-overflow: clip;
      overflow-wrap: anywhere; word-break: keep-all;
    }
    .kw-market-row.is-crowded .kw-row-top { align-items: start; }
    .kw-market-row.is-crowded .kw-name,
    .kw-market-row.is-crowded .kw-name b,
    .kw-market-row.is-crowded .kw-name .kw-row-sub {
      overflow: visible; text-overflow: clip; white-space: normal;
      overflow-wrap: anywhere; word-break: keep-all;
    }
    .kw-market-row.is-crowded .kw-rank-now.pending { color: #93400B; }
    .kw-name .kw-row-sub span + span { margin-left: 0; padding-left: 0; border-left: 0; }
    .kw-market .kw-rank-now { font-size: 17px; min-width: 46px; text-align: right; }
    .kw-market .kw-rank-now.out, .kw-market .kw-rank-now.pending { font-size: 12px; }
    .kw-market .kw-rank-now.low-result {
      min-width: 0; max-width: 180px; color: var(--ink-2); font-size: 13px; line-height: 1.4;
      text-align: left; white-space: normal; overflow-wrap: anywhere;
    }
    .kw-me-cell.low-result { justify-content: flex-start; white-space: normal; }
    .kw-market-row.is-low-result .kw-row-top { align-items: start; }
    .kw-low-result-description {
      display: block; margin-top: 9px; color: var(--ink-3); font-size: 13px; line-height: 1.6;
      white-space: normal; overflow-wrap: anywhere;
    }
    .kw-low-result-message {
      border: 1px solid var(--line); border-radius: 12px; padding: 14px;
      background: var(--panel2); color: var(--ink-3); font-size: 14px; line-height: 1.65;
      white-space: normal; overflow-wrap: anywhere;
    }
    .kw-low-result-message strong {
      display: block; margin-bottom: 6px; color: var(--ink); font-size: 18px; line-height: 1.4;
      white-space: normal; overflow-wrap: anywhere;
    }
    .kw-delta { min-width: 44px; border-radius: 999px; padding: 4px 8px; background: var(--panel2); }
    .kw-delta.up { color: var(--ok); background: var(--ok-tint); }
    .kw-delta.down { color: #9B1C22; background: #FFF1EE; }
    .kw-chev { color: var(--faint); font-size: 14px; font-weight: 700; }
    .summary .weekly-card { border-radius: var(--r-card); padding: 20px; background: var(--card); }
    .summary .weekly-card .wk-ey { font-size: 15px; color: var(--ink); letter-spacing: 0; }
    .summary .weekly-card .wk-top { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
    .summary .weekly-card .wk-top b { font-size: 15px; font-weight: 800; }
    .summary .weekly-card .wk-top span { font-size: 12px; color: var(--faint); font-variant-numeric: tabular-nums; }
    .summary .weekly-card .wk-hero { text-align: left; padding: 0 0 13px; }
    .summary .weekly-card .wk-hero-num { display: none; }
    .summary .weekly-card .wk-hero-headline { font-size: 13.5px; }
    .summary .weekly-card .wk-day-dots { justify-content: stretch; gap: 10px; margin-top: 14px; }
    .summary .weekly-card .wk-day-wrap { flex: 1; width: auto; }
    .summary .weekly-card .wk-day { width: 30px; height: 30px; line-height: 30px; }
    .summary .weekly-card .wk-log { border-top: 1px solid var(--line); }
    .summary .weekly-card .wk-done-list { gap: 0; margin-bottom: 10px; border-top: 1px solid var(--line); }
    .summary .weekly-card .wk-done-list li { display: grid; grid-template-columns: 42px minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 11px 2px; border-bottom: 1px solid var(--line); font-size: 13px; }
    .summary .weekly-card .wk-done-list li::before { content: none; }
    .wk-log-date { font-size: 11.5px; color: var(--faint); font-variant-numeric: tabular-nums; }
    .wk-log-insight { font-size: 11.5px; font-weight: 800; color: var(--ok); background: var(--ok-tint); border-radius: 999px; padding: 3px 8px; white-space: nowrap; }
    .summary .weekly-card .wk-add-log { display: block; width: 100%; margin-top: 10px; border: 1.5px dashed #D9C6A6; background: transparent; color: var(--ink-2); font: inherit; font-size: 13px; font-weight: 800; border-radius: 12px; padding: 12px; cursor: pointer; }
    .summary .weekly-card .wk-log-form[hidden] { display: none; }
    .badge-hall-card { border-radius: var(--r-card); border-left: 0; padding: 0; }
    #badge-host .v5-streak { display: flex; align-items: center; gap: 14px; }
    #badge-host .v5-streak .fire { width: 44px; height: 44px; border-radius: var(--r-inner); flex: 0 0 auto; background: #EAF2FE; display: flex; align-items: center; justify-content: center; font-size: 20px; }
    #badge-host .v5-streak .txt { flex: 1; min-width: 0; }
    #badge-host .v5-streak b { display: block; font-size: 14.5px; font-weight: 800; font-variant-numeric: tabular-nums; }
    #badge-host .v5-streak span { font-size: 12px; color: var(--sub); font-variant-numeric: tabular-nums; }
    #badge-host .badgecount { border: 0; font: inherit; font-size: 11.5px; font-weight: 800; color: var(--brand-deep); background: #EAF2FE; border-radius: 999px; padding: 5px 10px; cursor: pointer; white-space: nowrap; }
    #badge-host .badge-grid[hidden], #badge-host .badge-drawer[hidden] { display: none; }
    .feed-card { border-radius: var(--r-card); border-left: 0; padding: 20px; }
    .dashboard-member-feed { margin:0 2px 18px; }
    .dashboard-member-feed .feed-ticker { height:var(--feed-row-h); }
    /* ★ 2026-08-02 C안 — 띠가 맨 윗줄(가게명·날짜·주소) 오른쪽 빈 자리를 쓴다.
       좁은 화면에서는 dash-head-row 의 flex-wrap 으로 자연스럽게 아래 줄로 내려간다. */
    @media (min-width: 900px) {
      .dash-head-row > .dashboard-member-feed { flex: 1 1 320px; min-width: 0; max-width: 560px; margin: 0; align-self: center; }
    }
    .recent-report-shell { margin:0 2px 18px; }
    .recent-report-shell[hidden] { display:none; }
    .recent-report-card { position:relative; padding:20px; border:1px solid var(--gold-line); border-radius:var(--r-card); background:linear-gradient(180deg,#fff,#F5F9FF); box-shadow:0 4px 20px rgba(0,0,0,.04); }
    .recent-report-cap { margin-bottom:12px; padding-right:34px; color:var(--brand-deep); font-size:12px; font-weight:900; }
    .recent-report-close { position:absolute; top:7px; right:7px; width:44px; height:44px; display:inline-flex; align-items:center; justify-content:center; border:0; border-radius:50%; background:transparent; color:var(--sub); font:inherit; font-size:22px; line-height:1; cursor:pointer; }
    .recent-report-close:hover { background:#FFF0EB; color:var(--brand-deep); }
    .recent-report-close:focus-visible { outline:3px solid rgba(11,91,211,.28); outline-offset:2px; }
    .recent-report-text { margin:0; color:var(--ink); font:inherit; font-size:13.5px; font-weight:650; line-height:1.7; white-space:pre-wrap; overflow-wrap:anywhere; }
    .more-wrap { border-radius: var(--r-card); }
    .tracker-fold { background:#fff; border:1px solid var(--line); border-radius:20px; box-shadow:0 4px 20px rgba(0,0,0,.04); overflow:hidden; }
    .tracker-fold > summary { list-style:none; cursor:pointer; display:flex; align-items:center; gap:10px; padding:17px 20px; font-size:14.5px; font-weight:800; }
    .tracker-fold > summary::-webkit-details-marker { display:none; }
    .tracker-fold > summary .fold-label { flex:1; }
    .tracker-fold > summary .fold-arrow { color:var(--faint); font-size:12px; transition:transform .2s; }
    .tracker-fold[open] > summary .fold-arrow { transform:rotate(180deg); }
    .tracker-fold .fold-body { padding:0 18px 18px; }
    .tracker-fold .panel { margin:0; box-shadow:none; }
    .report-archive[hidden] { display:none; }
    .report-archive { margin-bottom:10px; }
    .report-archive-heading { flex:1; min-width:0; display:grid; gap:4px; }
    .report-archive-heading .fold-label { font-size:14.5px; }
    .report-archive-summary { color:var(--sub); font-size:12px; font-weight:650; line-height:1.45; font-variant-numeric:tabular-nums; }
    .report-archive-list { display:grid; gap:8px; padding-top:4px; }
    .report-archive-entry { overflow:hidden; border:1px solid var(--line); border-radius:12px; background:var(--panel2); }
    .report-archive-entry-button { width:100%; min-height:48px; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 14px; border:0; background:transparent; color:var(--ink); font:inherit; cursor:pointer; text-align:left; }
    .report-archive-entry-button:hover { background:#fff; }
    .report-archive-entry-button:focus-visible { outline:3px solid rgba(11,91,211,.24); outline-offset:-3px; }
    .report-archive-entry-kind { font-size:13.5px; font-weight:800; }
    .report-archive-entry-date { flex:0 0 auto; color:var(--faint); font-size:12px; font-weight:700; font-variant-numeric:tabular-nums; }
    .report-archive-entry-text { padding:14px; border-top:1px solid var(--line); background:#fff; color:var(--ink); font:inherit; font-size:13px; font-weight:600; line-height:1.7; white-space:pre-wrap; overflow-wrap:anywhere; }
    .report-archive-entry-text[hidden] { display:none; }
    .journal-marker-legend { display:flex; align-items:center; gap:7px; margin-top:8px; color:var(--sub); font-size:12px; }
    .journal-marker-legend i { width:9px; height:9px; background:#065F46; border-radius:2px; transform:rotate(45deg); }

    /* ── 시안 v5 이식: 오늘이·기록·페이지 지도·시즌·접기 ───────── */
    .today-character-row {
      display: flex;
      align-items: flex-end;
      gap: 12px;
      margin-bottom: 14px;
    }
    .today-character-host {
      position: relative;
      flex: 0 0 78px;
      width: 78px;
      min-height: 86px;
    }
    .today-character-bubble {
      position: relative;
      flex: 1 1 auto;
      min-width: 0;
      padding: 13px 15px;
      border: 1.5px solid var(--line);
      border-radius: 14px; /* 중간 박스(말풍선) = 시안 14 */
      background: #fff;
      color: var(--ink);
    }
    .today-character-bubble::before {
      display: none; /* 캐릭터 임시 제거로 말꼬리도 숨김 (2026-07-30) — 부활 시 이 줄 삭제 */
      content: '';
      position: absolute;
      left: -7px;
      bottom: 18px;
      width: 12px;
      height: 12px;
      border-bottom: 1.5px solid var(--line);
      border-left: 1.5px solid var(--line);
      background: #fff;
      transform: rotate(45deg);
    }
    .today-character-bubble .qhead { margin-bottom: 9px; }
    .today-character-message b {
      display: block;
      color: var(--ink);
      font-size: 17px;
      font-weight: 850;
      line-height: 1.45;
      word-break: keep-all;
    }
    .today-character-message small {
      display: block;
      margin-top: 4px;
      color: var(--sub);
      font-size: 12.5px;
      font-weight: 650;
      line-height: 1.55;
    }
    /* 조용한 날 카드 — 낼 카드가 하나도 없는 날 (클로드디자인 5차 시안 · 2026-08-17).
       칭찬형과 껍데기가 같고, 칭찬할 근거가 없어도 성립한다.
       ⛔ 파란 주버튼 금지 — 오늘은 할 일이 없다는 게 요지다. */
    .quest-card .mission.mission-quiet .quiet-badge {
      display: inline-block; background: var(--pos-soft, #E7F5EE); color: var(--pos-ink, #065F46);
      font-size: 13px; font-weight: 800; border-radius: 8px; padding: 3px 10px;
    }
    .quest-card .mission.mission-quiet .quiet-title {
      margin: 14px 0 0; font-size: 21px; font-weight: 800; letter-spacing: -0.02em;
      line-height: 1.35; word-break: keep-all;
    }
    .quest-card .mission.mission-quiet .quiet-body {
      margin: 14px 0 0; font-size: 15px; line-height: 1.65; color: var(--ink-2); word-break: keep-all;
    }
    .quest-card .mission.mission-quiet .mbtns { margin-top: 16px; }
    .quest-card .mission.mission-quiet .btn-sub {
      min-height: 52px; border-radius: 14px; border: 1.5px solid var(--line, #E5E8EB);
      background: #fff; color: var(--ink, #191F28); font: inherit; font-size: 15px; font-weight: 800;
      cursor: pointer; width: 100%; word-break: keep-all;
    }
    .quest-card .mission.mission-quiet .btn-sub:hover { border-color: #0B5BD3; color: #0B5BD3; }
    .quest-card .mission.mission-quiet .quiet-foot {
      margin: 12px 0 0; font-size: 12.5px; color: var(--ink-3, #6B7684); text-align: center; word-break: keep-all;
    }
    .quest-card .mission.mission-action,
    .quest-card .mission.mission-praise,
    .quest-card .mission.mission-quiet {
      display: block;
      /* 시안 Tracker v3 오늘 할 일 카드 = 26px 24px. padding:0이라 내용이 카드 가장자리에 붙어 있었다
         (2026-08-17 은코치 「좌우가 너무 딱 붙어있네 간격없이」). 껍데기 벗김(테두리·배경)은 그대로. */
      padding: 26px 24px;
      border: 0;
      background: transparent;
    }
    /* 완료 상태 — 시안 Tracker v3 「오늘 할 일을 마쳤어요」 박스 (2026-08-17 은코치 시안 지정).
       버튼 자리를 이 박스가 대신한다. 모션 4종은 components/euncoach-motion.css 공용. */
    .mission-complete { display: flex; align-items: center; gap: 12px; background: #E7F5EE; border-radius: 14px; padding: 16px 18px; margin-top: 10px; }
    .mission-complete .mc-mark { position: relative; width: 36px; height: 36px; border-radius: 50%; background: #FFFFFF; color: #065F46;
      display: flex; align-items: center; justify-content: center; flex-shrink: 0; animation: euncoach-pop .32s ease both; }
    .mission-complete .mc-ring { position: absolute; inset: 0; border-radius: 50%; border: 2px solid #065F46; animation: euncoach-ring .7s .1s ease-out both; }
    .mission-complete .mc-bit { position: absolute; border-radius: 2px; animation: euncoach-confetti .8s ease-out both; }
    .mission-complete .mc-body { flex: 1; min-width: 0; }
    .mission-complete .mc-body b { display: block; font-size: 15px; font-weight: 800; color: #065F46; }
    .mission-complete .mc-body span { display: block; font-size: 13px; color: #065F46; word-break: keep-all; }
    /* 대비 4.5:1 이상(#4E5968 = 7.1:1) · 우리가 쓴 라벨은 말줄임·nowrap 금지(큰 글씨에서 잘림) */
    .mission-complete .mc-undo { border: 0; background: none; cursor: pointer; font: inherit; font-size: 13px; font-weight: 700;
      color: #4E5968; padding: 4px 6px; flex-shrink: 0; min-height: 44px; }
    @media (prefers-reduced-motion: reduce) {
      .mission-complete .mc-mark, .mission-complete .mc-ring, .mission-complete .mc-bit { animation: none; }
      .mission-complete .mc-bit { display: none; }
    }
    .quest-card .mission.mission-action .mbtns { margin-top: 10px; }
    .quest-card .qpriority,
    .quest-card .qreward { white-space: normal; word-break: keep-all; }

    .tracker-detail-fold {
      overflow: hidden;
      margin-top: var(--gap-block);
      border: 1px solid var(--line);
      border-radius: 12px;
      background: #fff;
    }
    .tracker-detail-fold > summary {
      min-height: 50px;
      display: flex;
      align-items: center;
      gap: 10px;
      padding: 12px 14px;
      list-style: none;
      color: var(--ink);
      font-size: 14px;
      font-weight: 800;
      cursor: pointer;
      transition: transform 80ms ease, background 120ms ease;
    }
    .tracker-detail-fold > summary::-webkit-details-marker { display: none; }
    .tracker-detail-fold > summary > span:last-child {
      margin-left: auto;
      color: var(--sub);
      font-size: 12px;
      font-weight: 650;
      text-align: right;
    }
    .tracker-detail-fold > summary::after {
      content: '›';
      flex: 0 0 auto;
      color: #7B8490;
      font-size: 19px;
      line-height: 1;
      transition: transform 160ms var(--ease-out);
    }
    .tracker-detail-fold[open] > summary::after { transform: rotate(90deg); }
    .tracker-detail-fold > summary:active { transform: scale(.985); }
    .tracker-detail-fold > summary:focus-visible {
      outline: 3px solid rgba(11,91,211,.28);
      outline-offset: -3px;
    }
    .tracker-detail-body {
      padding: 0 14px 14px;
      color: var(--sub);
      font-size: 13.5px;
      line-height: 1.7;
    }
    .tracker-detail-body .m-detail {
      display: block;
      color: var(--ink-2);
      font-size: 13.5px;
      line-height: 1.7;
    }
    .tracker-detail-body .where { margin-top: 8px; }
    .tracker-detail-body .tool-perk { margin-top: 8px; }
    /* (리뷰 숫자 FAQ .rcf-* 규칙은 FAQ 제거와 함께 삭제 — 2026-08-10, 원문은 git 이력) */
    /* v4 setup 문법: 근거는 초록 박스 한 덩어리 (미션 접기 안에서만) */
    .mission-detail-fold .tracker-detail-body .m-detail {
      background: rgba(8, 122, 85, .07);
      border-radius: 10px;
      padding: 12px 14px;
    }
    .mission-detail-fold .tracker-detail-body .where { margin-top: 10px; }

    /* 시안 v3 (audit-tracker-body 4): 한 줄 input + 테두리 「기록하기」 가로 — 주버튼(파란 채움)은 오늘 할 일 CTA 하나뿐 */
    .quicklog-inline-form {
      display: flex;
      gap: 10px;
      margin-top: 12px;
      min-width: 0;
    }
    .quicklog-inline-form input {
      flex: 1 1 auto;
      min-width: 0;
      min-height: 52px;
      padding: 13px 14px;
      border: 1.5px solid var(--line);
      border-radius: 14px;
      background: #fff;
      color: var(--ink);
      font: inherit;
      font-size: 15px;
      line-height: 1.45;
    }
    .quicklog-inline-form input::placeholder { color: #686F79; opacity: 1; }
    .quicklog-inline-form input:focus {
      border-color: #0B5BD3;
      outline: none;
    }
    .quicklog-inline-form button {
      flex: 0 0 auto;
      min-height: 52px;
      padding: 12px 18px;
      border: 1.5px solid var(--line);
      border-radius: 14px;
      background: #fff;
      color: var(--ink);
      font: inherit;
      font-size: 15px;
      font-weight: 800;
      line-height: 1.45;
      cursor: pointer;
      word-break: keep-all;
    }
    .quicklog-inline-form button:active { transform: scale(.98); }
    @media (max-width: 420px) { .quicklog-inline-form { flex-wrap: wrap; } .quicklog-inline-form button { flex: 1 1 100%; } }
    /* ★ 2026-08-02 은코치 "버튼의 글자가 안보이는것" — 배경은 주황(#0B5BD3) 그대로인데
       글자만 회색(#4E5968)으로 바꿔 대비가 1.18:1 이었다(기준 4.5의 1/4, 사실상 안 보임).
       배경을 함께 진하게 하고 글자는 흰색을 유지한다 → 7.71:1.
       저장 중·기록 완료 두 상태 모두 이 규칙을 타므로 색으로 성공을 표시하지 않고 명도만 낮춘다. */
    .quicklog-inline-form button:disabled { background: #F2F4F6; border-color: #E5E8EB; color: #4E5968; cursor: default; }
    #summary-quicklog .logmeter {
      padding: 13px 12px 0;
      border-top: 0;
      border-radius: 12px;
      background: #F7F8FA;
    }

    .rank-pagemap {
      width: 78px;
      display: grid;
      grid-template-columns: repeat(5, minmax(0, 1fr));
      gap: 4px;
      margin: 7px 0 0 auto;
    }
    .rank-pagemap i {
      display: block;
      height: 7px;
      border-radius: 999px;
      background: #E2E5E9;
    }
    .rank-pagemap i.here { background: #B54708; }
    .rank-pagemap i.good { background: #065F46; }
    .tracker-rank-strip-language .rank-pagemap {
      width: 54px;
      margin-top: 4px;
    }

    #sp-body .sp-season-grid {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 8px;
    }
    @media (min-width: 560px) {
      #sp-body .sp-season-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    }
    #sp-body .sp-season {
      min-width: 0;
      padding: 0;
      border: 0;
    }
    #sp-body .sp-tog.season-chip {
      position: static;
      width: 100%;
      height: auto;
      min-height: 88px;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      gap: 5px;
      padding: 11px 8px;
      border: 1.5px solid #D5DAE0;
      border-radius: 13px;
      background: #fff;
      color: var(--ink-2);
      font: inherit;
      font-size: 13px;
      font-weight: 800;
      text-align: center;
      cursor: pointer;
      word-break: keep-all;
    }
    #sp-body .sp-tog.season-chip::after { display: none; }
    #sp-body .sp-tog.season-chip.on {
      border-color: #E5E8EB;
      background: #FFF3E8;
      color: #93400B;
    }
    #sp-body .sp-tog.season-chip.off {
      border-color: #D5DAE0;
      background: #fff;
      color: #4E5968;
    }
    #sp-body .season-chip-emoji { font-size: 27px; line-height: 1; }
    #sp-body .season-chip-state {
      border-radius: 999px; padding: 2px 8px; font-size: 11.5px; font-weight: 800;
      background: #F2F4F6; color: #4E5968; white-space: nowrap;
    }
    #sp-body .sp-tog.season-chip.on .season-chip-state { background: #E7F5EE; color: #065F46; }
    #sp-body .sp-tog.season-chip:active { transform: scale(.985); }
    #sp-body .sp-tog.season-chip:focus-visible {
      outline: 3px solid rgba(232,185,90,.38);
      outline-offset: 2px;
    }
    #sp-body .sp-custom button,
    #sp-body .sp-save {
      border: 1px solid #C9795E;
      background: #fff;
      color: #4E5968;
    }
    #sp-body .sp-custom button:active,
    #sp-body .sp-save:active { transform: scale(.985); }

    .hybrid-kpi-card,
    .summary .weekly-card .witem,
    .summary .smetric,
    .hybrid-summary-stat {
      border-color: transparent;
      background: #F7F8FA;
      box-shadow: none;
      cursor: default;
    }
    .recent-report-card {
      padding: 10px;
      border: 0;
      background: #F7F8FA;
      box-shadow: none;
    }
    .recent-report-card .tracker-detail-fold { margin-top: 0; }
    .recent-report-cap { margin: 0; padding: 0; color: var(--ink); font-size: 14px; }
    .recent-report-text { padding: 0; background: #F7F8FA; }

    @keyframes today-idle {
      0%, 100% { transform: translateY(0); }
      50% { transform: translateY(-2px); }
    }
    @keyframes today-hop {
      0%, 100% { transform: translateY(0) scale(1); }
      45% { transform: translateY(-9px) scale(1.02); }
    }
    .today-character-host svg.tc-idle { animation: today-idle 3.2s ease-in-out infinite; }
    .today-character-host svg.tc-hop { animation: today-hop 420ms var(--ease-out); }
    .celebrate-layer {
      position: absolute;
      inset: -12px;
      z-index: var(--z-deco-2);
      overflow: visible;
      pointer-events: none;
    }
    .celebrate-layer .confetti {
      position: absolute;
      width: 7px;
      height: 10px;
      border-radius: 2px;
      opacity: 1;
      transform: translateY(0) rotate(0);
      transition: left 520ms var(--ease-out), transform 720ms ease-out, opacity 720ms ease-out;
    }
    .celebrate-layer .confetti.go {
      opacity: 0;
      transform: translateY(56px) rotate(220deg);
    }
    @media (max-width: 420px) {
      .today-character-row { align-items: center; gap: 8px; }
      .today-character-host { flex-basis: 68px; width: 68px; }
      .today-character-host svg { max-width: 68px; }
      .today-character-bubble { padding: 12px; }
      .today-character-message b { font-size: 15.5px; }
      .quicklog-inline-form { grid-template-columns: minmax(0, 1fr); }
      .quicklog-inline-form button { width: 100%; }
    }
    .saction[data-card-type] { cursor:pointer; }
    .saction[data-card-type]:focus-visible { outline:3px solid rgba(11,91,211,.3); outline-offset:2px; }
    .discovery-track { margin-top:10px; min-height:44px; padding:8px 13px; border:0; border-radius:10px; background:var(--ink); color:#fff; font:inherit; font-size:12.5px; font-weight:850; cursor:pointer; }

    /* 가입 직후 온보딩 */
    section.tracker-onboarding { display:none; padding:30px 0 72px; }
    section.tracker-onboarding.show { display:block; }
    .onboarding-head .ey { color:var(--brand-deep); font-size:12px; font-weight:800; letter-spacing:.04em; }
    .onboarding-head h2 { margin:8px 0 0; font-size:25px; line-height:1.32; font-weight:800; color:var(--ink); }
    .onboarding-head p { margin:8px 0 0; color:var(--sub); font-size:14.5px; line-height:1.7; }
    .onboarding-progress { margin-top:28px; color:var(--brand-deep); font-size:12px; font-weight:800; }
    .onboarding-progress-row { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:24px; }
    .onboarding-progress-row .onboarding-progress { margin-top:0; }
    .onboarding-back { min-height:44px; padding:9px 12px; border:1px solid var(--line); border-radius:11px; background:#fff; color:var(--sub); font:inherit; font-size:12.5px; font-weight:800; cursor:pointer; }
    .onboarding-back[hidden] { display:none; }
    .onboarding-progress-track { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:6px; margin-top:10px; }
    .onboarding-progress-track i { height:6px; border-radius:999px; background:var(--line); transition:background .18s ease; }
    .onboarding-progress-track i.on { background:var(--brand); }
    .onboarding-card { margin-top:12px; padding:24px; background:#fff; border:1px solid var(--line); border-radius:16px; box-shadow:0 4px 20px rgba(0,0,0,.04); } /* 시안 온보딩 규격 radius 16 (audit-onboarding 확인 ②) */
    .onboarding-card[hidden] { display:none; }
    /* 왼쪽 강조선(4px) 제거 — 클로드디자인 deliver-0819: 「모서리 둥근 카드 + 왼쪽 강조선」은 피하기로 한 형태. 단계 표시는 진행 막대와 ①~⑤ 번호가 한다 (①~⑤ + 완료 카드 6곳) */
    .onboarding-card.primary,
    .onboarding-card.done { border-left:1px solid var(--line); }
    /* audit-onboarding (2026-08-16) — 시안 문법 부품 */
    .oc-pill.neutral { background:#F2F4F6; color:#4E5968; }
    .onboarding-phone-note { margin:2px 0 0; font-size:12.5px; color:#6B7684; text-align:center; word-break:keep-all; }
    .onboarding-blue-note { background:#EAF2FE; border-radius:12px; padding:12px 16px; }
    .onboarding-blue-note p { margin:0; font-size:13.5px; font-weight:700; color:#1D4F9C; line-height:1.6; word-break:keep-all; }
    .onboarding-fill-hint { margin:10px 0 0; font-size:13px; font-weight:800; color:#93400B; text-align:center; word-break:keep-all; }
    .onboarding-fill-hint.full { color:#065F46; }
    /* width:100% — 입력칸은 기본 size=20 만큼의 고유 폭을 고집해 큰 글씨(카톡 인앱·삼성 글자 크게)에서 칸을 뚫고 나간다(2026-08-19 주은 폰 실측). 칸 폭에 맞춘다 */
    .onboarding-keyword-slot-input { display:block; width:100%; box-sizing:border-box; flex:1; min-width:0; border:0; background:transparent; font-family:inherit; font-size:14.5px; color:var(--ink); padding:0; outline:none; }
    .onboarding-keyword-slot-input::placeholder { color:var(--ink-3); }
    .onboarding-measuring { display:flex; flex-direction:column; align-items:center; gap:14px; padding:40px 24px; text-align:center; }
    .onboarding-measuring[hidden] { display:none; }
    .onboarding-measuring-spinner { width:36px; height:36px; border-radius:50%; border:3.5px solid #EAF2FE; border-top-color:#0B5BD3; animation:euncoach-spin .8s linear infinite; }
    @media (prefers-reduced-motion: reduce) { .onboarding-measuring-spinner { animation:none; } }
    .onboarding-measuring-title { margin:0; font-size:16px; font-weight:800; word-break:keep-all; }
    .onboarding-measuring-sub { margin:0; font-size:13.5px; color:#6B7684; }
    .onboarding-done-eyebrow { margin:12px 0 6px; font-size:12px; font-weight:800; color:#065F46; letter-spacing:0.08em; }
    .onboarding-completion-card { display:flex; flex-direction:column; align-items:center; gap:12px; padding:32px 24px; text-align:center; }
    .onboarding-completion-card .oc-done-label { margin:0; font-size:14px; font-weight:800; color:#6B7684; }
    .onboarding-completion-card .oc-done-rank { margin:0; font-size:48px; font-weight:900; letter-spacing:-0.045em; line-height:1.1; }
    .onboarding-completion-card .onboarding-completion-rank { margin:0; font-size:14.5px; color:#4E5968; word-break:keep-all; }
    .onboarding-completion-card .oc-done-todo { width:100%; box-sizing:border-box; background:#EAF2FE; border-radius:14px; padding:16px 18px; margin-top:6px; text-align:left; }
    .onboarding-completion-card .oc-done-todo-cap { margin:0 0 4px; font-size:13px; font-weight:800; color:#1D4F9C; }
    .onboarding-completion-card .onboarding-completion-question { width:100%; }
    .onboarding-completion-card .onboarding-completion-dashboard { width:100%; min-height:52px; margin-top:6px; }
    .onboarding-card .oc-top { display:flex; align-items:center; gap:10px; }
    .onboarding-card .oc-top h3 { flex:1; margin:0; font-size:16px; font-weight:800; }
    .onboarding-card .oc-pill { border-radius:999px; padding:4px 9px; background:#EAF2FE; color:var(--brand-deep); font-size:11.5px; font-weight:800; }
    .onboarding-card p { margin:7px 0 0; color:var(--sub); font-size:14px; line-height:1.65; }
    .onboarding-diagnosis { margin-top:11px; padding:13px 15px; border-radius:12px; background:var(--panel2); border:1px solid var(--line); }
    .onboarding-diagnosis > b { display:block; font-size:14px; }
    .onboarding-diagnosis-score-row { display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin-top:3px; }
    .onboarding-diagnosis-meta { color:var(--ok); font-size:12px; font-weight:800; line-height:1.55; }
    .onboarding-actions { display:flex; gap:8px; margin-top:12px; flex-wrap:wrap; }
    .onboarding-btn { min-height:44px; padding:12px 16px; border-radius:14px; border:1px solid var(--line); background:#fff; color:var(--ink); font:inherit; font-size:13.5px; font-weight:800; cursor:pointer; }
    .onboarding-btn.primary { flex:1; border:0; color:#fff; background:#0B5BD3; font-size:15.5px; } /* 시안 단색 CTA — 옛 그라디언트 폐기 (audit-onboarding) */
    .onboarding-btn.primary:hover { background:#1D4F9C; }
    .onboarding-btn.ghost { color:var(--brand-deep); border-color:var(--brand); }
    .onboarding-btn:disabled { opacity:.55; cursor:default; box-shadow:none; }
    .onboarding-input { width:100%; margin-top:10px; padding:13px 14px; border:1px solid var(--line); border-radius:12px; font:inherit; font-size:14px; }
    .onboarding-keyword-guide { margin-top:14px !important; color:var(--ink) !important; font-weight:800; }
    .onboarding-keyword-slots { display:grid; gap:8px; margin-top:13px; }
    /* 시안 Onboarding.dc ④ 담긴 줄 = [번호][검색어][거점][빼기] 한 줄 · 좁은 폭에서도 접지 않는다(deliver-0819 판정). 검색어는 사용자 값이라 말줄임 허용 */
    .onboarding-keyword-slot { display:flex; align-items:center; gap:10px; min-height:44px; padding:8px 11px; border:1.5px solid var(--line); border-radius:13px; background:var(--panel2); box-sizing:border-box; }
    .onboarding-keyword-slot.filled { border-color:#B8DCC8; background:#F6FCF9; }
    .onboarding-keyword-slot.save-failed { border-color:#93400B; background:#FFF3E8; } /* 「저장 안 됨」= 주의(사장님 잘못 아님·다시 누르면 됨) — 붉은색 아님 · deliver-0819 2 */
    .onboarding-keyword-slot.save-saved { border-color:#A9D8BD; }
    .onboarding-keyword-index { flex:0 0 24px; width:24px; height:24px; border-radius:8px; display:flex; align-items:center; justify-content:center; color:var(--faint); font-size:12px; font-weight:850; text-align:center; }
    .onboarding-keyword-main { flex:1 1 auto; min-width:0; display:flex; align-items:center; gap:8px; }
    .onboarding-keyword-name { display:block; min-width:0; color:var(--ink); font-size:14.5px; font-weight:800; line-height:1.45; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } /* 사용자 값 말줄임 — 우리 라벨 아님(룰 ⑤ 예외) */
    /* ★ 토글(클로드디자인 ★ 시안 2026-08-19): 꺼짐 44×44 투명·빈 별 / 켜짐 「거점」 라벨을 품는 알약(#EAF2FE·약 78px). 다섯 줄 중 켜진 한 줄만 폭이 늘어난다. */
    .onboarding-keyword-star { flex-shrink:0; display:flex; align-items:center; justify-content:center; width:44px; min-height:44px; border:0; border-radius:999px; background:transparent; cursor:pointer; padding:0; font-family:inherit; color:var(--ink-4); } /* 빈 별 선 = currentColor(팔레트 회색) */
    .onboarding-keyword-star:hover, .onboarding-keyword-star:focus-visible { background:#F2F4F6; }
    .onboarding-keyword-star.on { width:auto; gap:5px; padding:0 11px 0 8px; background:#EAF2FE; white-space:nowrap; cursor:default; }
    .onboarding-keyword-star.on:hover, .onboarding-keyword-star.on:focus-visible { background:#EAF2FE; }
    .onboarding-keyword-star-label { font-size:12px; font-weight:800; color:#1D4F9C; }
    .onboarding-keyword-star[disabled] { cursor:default; opacity:.6; }
    /* 저장 실패 줄(저장 안 됨 + 다시 시도 + 빼기 + ★)은 큰 글씨에서 한 줄 폭을 넘는다(2차 검수 P2 산술 ≈496px@200%) — 그 줄만 감기고 행동 묶음이 둘째 줄로 */
    .onboarding-keyword-slot.save-failed { flex-wrap:wrap; }
    .onboarding-keyword-slot.save-failed .onboarding-keyword-slot-actions { flex-basis:100%; justify-content:flex-end; }
    .onboarding-keyword-empty { color:var(--faint); font-size:13px; font-weight:700; }
    .onboarding-keyword-meta { display:flex; flex-wrap:wrap; gap:5px 7px; align-items:center; margin-top:5px; color:var(--sub); font-size:11.5px; line-height:1.45; }
    .onboarding-keyword-volume { display:inline-flex; align-items:center; min-height:24px; padding:3px 8px; border-radius:999px; background:#fff; border:1px solid var(--line); color:var(--ink); font-variant-numeric:tabular-nums; font-weight:800; }
    .onboarding-keyword-low { flex-basis:100%; color:#B5472D; font-weight:800; }
    .onboarding-keyword-save-state { font-weight:850; }
    .onboarding-keyword-save-state.saved { color:var(--ok); }
    .onboarding-keyword-save-state.failed { color:#93400B; flex-shrink:0; font-size:12px; white-space:nowrap; }
    .onboarding-keyword-slot-actions { display:flex; flex-direction:row; flex-shrink:0; gap:6px; align-items:center; }
    /* 거점키워드 ★ — 아침 카톡 기준 1개 (2026-07-31 은코치 "이대로가" · setup.html 문법 이식) */
    .onboarding-keyword-slot.primary { border-color:var(--brand); background:#F5F9FF; }
    /* ★ 대비: 미선택 ink-3(≈5.5:1)·선택 brand-deep(≈4.1:1) — 코덱스 최종검수 '출시 불가' 수리 */
    .onboarding-primary-fold { margin-top:10px; border-radius:14px; background:#EAF2FE; word-break:keep-all; }
    .onboarding-primary-fold summary { list-style:none; cursor:pointer; min-height:44px; display:flex; align-items:center; padding:11px 18px; font-size:13.5px; font-weight:800; color:#1D4F9C; }
    .onboarding-primary-fold summary::-webkit-details-marker { display:none; }
    .onboarding-primary-fold summary::after { content:'⌄'; margin-left:auto; color:#1D4F9C; transition:transform 160ms ease; }
    .onboarding-primary-fold[open] summary::after { transform:rotate(180deg); }
    @media (prefers-reduced-motion: reduce) { .onboarding-primary-fold summary::after { transition:none; } }
    .onboarding-primary-fold p { margin:0; padding:0 18px 12px; font-size:13.5px; color:#1D4F9C; line-height:1.6; }
    .onboarding-keyword-remove { flex-shrink:0; min-width:44px; min-height:44px; padding:2px 6px; border:0; background:none; color:#6B7684; font:inherit; font-size:13px; font-weight:700; cursor:pointer; white-space:nowrap; } /* 시안 「빼기」 글자 버튼 · 44px */
    .onboarding-keyword-retry { flex-shrink:0; min-width:44px; min-height:44px; padding:6px 9px; border:1px solid #F1B59F; border-radius:10px; background:#fff; color:var(--brand-deep); font:inherit; font-size:12px; font-weight:850; cursor:pointer; white-space:nowrap; }
    .onboarding-keyword-entry { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px; align-items:end; margin-top:11px; }
    .onboarding-keyword-entry label { grid-column:1 / -1; color:var(--ink); font-size:13px; font-weight:850; line-height:1.55; }
    .onboarding-keyword-entry .onboarding-input { margin-top:0; min-height:48px; }
    .onboarding-keyword-add { min-height:48px; }
    .onboarding-keyword-save-summary { min-height:20px; margin-top:9px; color:var(--sub); font-size:12.5px; line-height:1.55; }
    .onboarding-keyword-save-summary.error { color:#9B1C22; }
    .onboarding-suggestion-section { margin-top:24px; padding-top:20px; border-top:1px solid var(--line); }
    .onboarding-suggestion-title { margin:0; color:var(--ink); font-size:14px; font-weight:850; }
    .onboarding-suggestion-status { display:flex; align-items:center; flex-wrap:wrap; gap:5px; min-height:24px; margin-top:7px; color:var(--sub); font-size:12.5px; line-height:1.5; }
    .onboarding-suggestion-status.error { color:#9B1C22; }
    .onboarding-suggestion-retry { padding:3px 0; border:0; background:transparent; color:var(--brand-deep); font:inherit; font-size:12.5px; font-weight:850; text-decoration:underline; cursor:pointer; }
    .onboarding-keywords { display:grid; gap:8px; margin-top:10px; }
    .onboarding-keyword { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:10px; align-items:center; width:100%; min-height:62px; border:1px solid var(--line); border-radius:13px; background:#fff; padding:11px 12px; color:var(--ink); font:inherit; text-align:left; cursor:pointer; white-space:normal; }
    .onboarding-keyword:hover { border-color:#E8B394; background:#FFF9F6; }
    .onboarding-keyword.selected { border-color:var(--ink); background:var(--ink); color:#fff; }
    .onboarding-keyword-copy { min-width:0; }
    .onboarding-keyword-copy b { display:block; font-size:13px; font-weight:850; line-height:1.45; overflow-wrap:anywhere; word-break:break-word; }
    .onboarding-keyword-copy span { display:block; margin-top:4px; color:var(--sub); font-size:11.5px; line-height:1.45; overflow-wrap:anywhere; word-break:break-word; }
    .onboarding-keyword.selected .onboarding-keyword-copy span { color:#D8DCE2; }
    .onboarding-keyword-side { color:inherit; font-size:11.5px; font-weight:850; text-align:right; font-variant-numeric:tabular-nums; }
    .onboarding-skip { min-height:44px; padding:8px 10px; border:0; background:transparent; color:var(--sub); font:inherit; font-size:12.5px; text-decoration:underline; cursor:pointer; }
    .onboarding-error { margin-top:8px; color:#DC2626; font-size:12.5px; }
    /* ⑤ 첫 기록 재설계 (클로드디자인 deliver-0818-8 · 2026-08-18): 칩=기록(44px) · 「직접 쓸게요」 접힘 · 카톡 미리보기 말풍선 · 54px 주버튼 */
    .oc-pill.last { background:#EAF2FE; color:#1D4F9C; }
    .onboarding-record-presets { display:flex; gap:8px; flex-wrap:wrap; margin-top:12px; }
    .onboarding-record-preset { border:1.5px solid #E5E8EB; border-radius:999px; background:#fff; color:#191F28; padding:11px 16px; min-height:44px; font:inherit; font-size:14px; font-weight:800; cursor:pointer; word-break:keep-all; }
    .onboarding-record-preset:hover { border-color:#0B5BD3; }
    .onboarding-record-preset.selected { border-color:#0B5BD3; background:#EAF2FE; color:#1D4F9C; }
    .onboarding-record-own-toggle { align-self:flex-start; margin-top:4px; border:0; background:none; cursor:pointer; font:inherit; font-size:13.5px; font-weight:800; color:#1D4F9C; padding:6px 0; min-height:44px; }
    .onboarding-record-own-toggle:hover { color:#0B5BD3; }
    .onboarding-input.onboarding-record-own { margin-top:0; border:1.5px solid #E5E8EB; border-radius:14px; padding:14px; font-size:15px; line-height:1.6; resize:vertical; box-sizing:border-box; }
    .onboarding-input.onboarding-record-own:focus { border-color:#0B5BD3; outline:none; }
    .onboarding-input.onboarding-record-own[hidden] { display:none; }
    .onboarding-record-preview { border-top:1px solid #E5E8EB; margin-top:14px; padding-top:14px; display:flex; flex-direction:column; gap:9px; }
    .onboarding-record-preview-title { margin:0; font-size:12.5px; font-weight:800; color:#6B7684; }
    .onboarding-record-bubble { background:#F2F4F6; border-radius:14px; border-top-left-radius:4px; padding:14px 16px; display:flex; flex-direction:column; gap:5px; word-break:keep-all; }
    .onboarding-record-bubble.picked { background:#EAF2FE; }
    .onboarding-record-bubble p { margin:0; }
    .onboarding-record-bubble .ob-empty { font-size:14px; color:#6B7684; line-height:1.6; }
    .onboarding-record-bubble .ob-head { font-size:12px; font-weight:800; color:#1D4F9C; }
    .onboarding-record-bubble .ob-line { font-size:15px; font-weight:800; color:#191F28; line-height:1.55; }
    .onboarding-record-bubble .ob-foot { font-size:13.5px; color:#4E5968; line-height:1.6; }
    .onboarding-record-actions { flex-direction:column; align-items:stretch; gap:6px; }
    .onboarding-btn.primary.onboarding-record-save { min-height:54px; font-size:16px; border-radius:14px; }
    .onboarding-btn.primary.onboarding-record-save:disabled { background:#EAF2FE; color:#1D4F9C; opacity:1; cursor:default; }
    .onboarding-record-skip { align-self:center; font-size:14px; font-weight:700; color:#4E5968; text-decoration:underline; text-underline-offset:3px; }
    .onboarding-record-skip-note { margin:0; font-size:12.5px; color:#6B7684; text-align:center; word-break:keep-all; }
    .onboarding-success { margin-top:10px; color:var(--ok); font-size:13px; font-weight:800; }
    .onboarding-after-setup[hidden] { display:none; }
    .onboarding-completion-rank {
      margin-top: 9px !important;
      color: var(--ink) !important;
      font-size: 17px !important;
      font-weight: 850;
      line-height: 1.6 !important;
      word-break: keep-all;
      overflow-wrap: anywhere;
    }
    .onboarding-completion-question {
      margin-top: 12px;
    }
    .onboarding-completion-question .profile-question-card {
      box-shadow: none;
    }
    .onboarding-completion-loading {
      margin: 0 !important;
      color: #4E5968 !important;
    }
    .onboarding-completion-close {
      color: var(--ink) !important;
      font-size: 15px !important;
      font-weight: 800;
      line-height: 1.65 !important;
      word-break: keep-all;
    }
    #onboarding-replace-sheet { z-index:var(--z-sheet); padding:18px; }
    #onboarding-replace-sheet .modal { width:min(520px,calc(100% - 20px)); padding:24px; }
    .onboarding-replace-list { display:grid; gap:8px; margin-top:16px; }
    .onboarding-replace-option { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:10px; align-items:center; width:100%; min-height:58px; padding:10px 12px; border:1px solid var(--line); border-radius:12px; background:#fff; color:var(--ink); font:inherit; text-align:left; cursor:pointer; white-space:normal; }
    .onboarding-replace-option:hover { border-color:var(--brand); background:#FFF8F4; }
    .onboarding-replace-option:disabled { cursor:wait; opacity:.64; }
    .onboarding-replace-option > span { min-width:0; }
    .onboarding-replace-option b { display:block; font-size:13.5px; line-height:1.45; overflow-wrap:anywhere; word-break:break-word; }
    .onboarding-replace-option span { display:block; margin-top:4px; color:var(--sub); font-size:11.5px; line-height:1.4; }
    .onboarding-replace-option em { color:var(--brand-deep); font-style:normal; font-size:12px; font-weight:850; white-space:normal; overflow-wrap:anywhere; }
    .onboarding-replace-copy { margin:8px 0 0; color:var(--sub); font-size:12.5px; line-height:1.55; }
    .onboarding-replace-status { min-height:22px; margin:12px 0 0; color:#4E5968; font-size:13px; font-weight:750; line-height:1.55; white-space:normal; overflow-wrap:anywhere; }
    .onboarding-replace-status.error { color:#9B1C22; }
    .practice-measured-card { padding:18px; border:1px solid var(--ok-line); border-radius:14px; background:var(--ok-tint); text-align:center; }
    .practice-measured-card p { margin:0; color:var(--ink); font-size:16px; font-weight:850; line-height:1.65; }
    .practice-measured-card small { display:block; margin-top:7px; color:var(--ok); font-size:12px; font-weight:800; }
    .relogin-card { margin-top:18px; padding:22px 24px; border:1px solid var(--line); border-left:4px solid var(--brand); border-radius:20px; background:#fff; box-shadow:0 4px 20px rgba(0,0,0,.04); }
    .relogin-kakao { display:flex; width:100%; margin-top:13px; padding:15px 18px; align-items:center; justify-content:center; border:0; border-radius:14px; background:#FEE500; color:#191600; font:inherit; font-size:15px; font-weight:800; cursor:pointer; }
    button,
    a.submit-btn,
    .cta-card a,
    .summary .coach-go,
    .quest-card .btn-go,
    .quest-card .btn-tool,
    a.journal-submit,
    a.top-cta {
      transition: transform 160ms var(--ease-out), background 150ms ease, color 150ms ease, border-color 150ms ease;
    }
    button:not(:disabled):active,
    a.submit-btn:active,
    .cta-card a:active,
    .summary .coach-go:active,
    .quest-card .btn-go:active,
    .quest-card .btn-tool:active,
    a.journal-submit:active,
    a.top-cta:active { transform:scale(.98); } /* §1-B 버튼 누름 .98 */
    #rival-score-box,
    .rival-kw,
    #hood-host .hd-bar,
    .feed-ticker,
    .saction[data-card-type],
    .panel-collapsible > summary,
    .more-wrap > summary,
    .kw-market-row > summary,
    .tracker-fold > summary { transition:transform 160ms var(--ease-out); }
    #rival-score-box:active,
    .rival-kw:active,
    #hood-host .hd-bar:active,
    .feed-ticker:active,
    .saction[data-card-type]:active,
    .panel-collapsible > summary:active,
    .more-wrap > summary:active,
    .kw-market-row > summary:active,
    .tracker-fold > summary:active { transform:scale(.98); }
    @media (max-width: 520px) {
      .hero-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
      .quest-card .qhead { align-items: flex-start; flex-direction: column; }
      .practice-question-card .practice-answer-grid { grid-template-columns: 1fr; }
      #onboarding-practice-card { width: 100%; padding: 21px 18px; }
      #onboarding-practice-body .practice-answer-grid { grid-template-columns: 1fr; }
      .onboarding-keyword-entry { grid-template-columns:minmax(0,1fr) 74px; }
      #onboarding-replace-sheet { align-items:flex-end; padding:0; }
      #onboarding-replace-sheet .modal { width:100%; max-width:none; max-height:86vh; padding:22px 18px calc(22px + env(safe-area-inset-bottom)); border-radius:20px 20px 0 0; }
      .kw-row-top { grid-template-columns: minmax(0, 1fr) auto; gap: 7px 10px; }
      .kw-name { grid-column: 1; grid-row: 1; }
      .kw-me-cell { grid-column: 2; grid-row: 1; }
      .kw-delta { grid-column: 1; grid-row: 2; justify-self: start; }
      .kw-chev { display: none; }
      .kw-market-row.is-low-result .kw-row-top { grid-template-columns: minmax(0, 1fr) auto; }
      .kw-market-row.is-low-result .kw-me-cell { grid-column: 1 / -1; grid-row: 2; justify-content: flex-start; }
      .kw-market-row.is-low-result .kw-delta { display: none; }
      .summary .weekly-card .wk-done-list li { grid-template-columns: 38px minmax(0, 1fr); }
      .wk-log-insight { grid-column: 2; justify-self: start; }
    }

    /* ── 하이브리드 UI 1단계: 기존 호스트를 재배치하고 상세 블록은 그대로 보존 ── */
    section.dashboard { word-break: keep-all; overflow-wrap: break-word; }
    /* 시안 Tracker v3 본문 폭 = 720px (2026-08-18 은코치 확인). 1120px는 하이브리드 1단계 때 값이고
       시안이 그 뒤에 나왔다. 2단 그리드는 화면 폭(900px+) 기준이라 720 안에서도 켜진다. */
    section.dashboard .container { max-width: 720px; }
    section.dashboard .dash-head,
    section.dashboard [id^="tracker-"] { scroll-margin-top: 96px; }

    /* ── 시안 §1-B 모션 (2026-08-16 클로드디자인 ④): 첫 화면 구역은 등장 .34s, 아래 구역은 스크롤 진입 view().
       버튼 누름(scale .98)은 위 기존 블록이 담당. reduced-motion이면 전부 정지. */
    /* 시안 v3 순차 지연 (audit-100-gh 정정): 순위 .04s → 오늘할일 .08s → 잘하고있어요 .12s → 시즌 .16s → 기록 .20s.
       인사말·배너는 시안에 애니메이션 없음(section 아님). 목록·자가진단은 시안 공통 규칙(등장 + view() 스크롤). */
    .tracker-primary-rank-zone { animation: euncoach-rise .34s .04s ease both; }
    .hybrid-priority-grid { animation: euncoach-rise .34s .08s ease both; }
    .tracker-praise-card { animation: euncoach-rise .34s .12s ease both; }
    .season-fold { animation: euncoach-rise .34s .16s ease both; }
    .hybrid-record-zone { animation: euncoach-rise .34s .20s ease both; }
    .recent-change-section,
    .tracker-route-list,
    .tracker-self-check-banner { animation: euncoach-rise .34s ease both; }
    @supports (animation-timeline: view()) {
      .recent-change-section,
      .tracker-route-list,
      .tracker-self-check-banner { animation: euncoach-rise .6s linear both; animation-timeline: view(); animation-range: entry 0% entry 45%; }
    }
    @media (prefers-reduced-motion: reduce) {
      .tracker-primary-rank-zone, .hybrid-priority-grid, .tracker-praise-card, .season-fold,
      .hybrid-record-zone, .recent-change-section, .tracker-route-list,
      .tracker-self-check-banner { animation: none; animation-timeline: none; opacity: 1; transform: none; }
    }

    /* 시안 v3 재작업으로 기록 카드가 이 그리드 밖(아래)으로 이사해 자식이 미션 하나뿐 —
       옛 2열(1.55fr/.85fr) 규칙이 남아 오늘 할 일이 반 칸에 갇혔다 (2026-08-16 클로드디자인 지적 ①). 한 칸 전폭으로. */
    .hybrid-priority-grid {
      display: grid;
      grid-template-columns: minmax(0, 1fr);
      gap: 12px;
      align-items: stretch;
      margin-bottom: var(--gap-zone);
    }
    .hybrid-priority-grid > .dash-zone { min-width: 0; margin-bottom: 0; }
    .hybrid-priority-grid .zone-label { padding-left: 2px; }
    /* ★ 2026-08-02 은코치 "오늘하나와 기록이 위아래가 안 맞잖아. 이걸 맞추라고"
       실측으로 어긋난 곳이 둘이었다 — 카드 시작 43px, 카드 높이 146px.
         · 시작: 왼쪽엔 '① 오늘 하나' 머리글이 있는데 오른쪽 머리글은 조건부라 없을 때가 있다
                → 머리글 자리를 항상 같은 높이로 잡아 카드가 같은 선에서 시작하게 한다.
         · 높이: 왼쪽 카드가 내용만큼만 자라 아래가 비었다 → 두 카드를 같은 높이로 늘린다.
       ⚠️ 2026-07-31 "카드는 내용만큼만(강제로 늘리면 테두리 안이 비어 보인다)" 결정을
          은코치가 2026-08-02 이 지시로 뒤집었다. 왼쪽이 짧은 날엔 아래가 비어 보일 수 있다. */
    @media (min-width: 900px) {
      /* ★ 2026-08-02 은코치 "1.오늘하나 이것도 빼" — 왼쪽 머리글이 사라졌다.
         이제 왼쪽은 카드가 바로 시작하므로, 오른쪽에 주던 43px 자리도 없앤다.
         오른쪽 안내문('어제 하신 일 한 줄…')은 조건부로 뜨는데, 뜨는 날에도 두 칸이 어긋나지 않게
         카드 위가 아니라 카드 안쪽 흐름에 두지 않고 겹치지 않는 높이만 준다. */
      .hybrid-priority-grid > .hybrid-record-zone { padding-top: 0; }
      .hybrid-priority-grid > .hybrid-record-zone .record-nudge-copy {
        margin: 0 0 9px; min-height: 0; display: block;
      }
      /* 안내문이 뜨는 날엔 그만큼 왼쪽도 내려 같은 선에서 시작하게 한다 */
      .hybrid-priority-grid:has(.record-nudge-copy:not([hidden])) > [data-zone=mission] { padding-top: 32px; }
      /* 두 카드 높이도 같게 — 왼쪽 카드가 칸을 끝까지 채운다 */
      .hybrid-priority-grid > [data-zone=mission] > #summary-action { display: flex; flex-direction: column; }
      .hybrid-priority-grid #summary-action > .v5-card { flex: 1 0 auto; }
    }
    /* 간격 2단계 — 오늘 할 일 카드와 축하·배지 밴드가 딱 붙어 있던 것(2026-08-08 은코치 신고).
       빈 밴드는 숨겨야 gap이 이중으로 벌어지지 않는다. */
    .hybrid-priority-grid > [data-zone=mission] { display: flex; flex-direction: column; gap: var(--gap-block); }
    #summary-celebrate:empty, #summary-badge:empty { display: none; }
    .hybrid-priority-grid [data-zone=mission] #summary-action { flex: 1 0 auto; height: auto; }
    .hybrid-priority-grid [data-zone=mission] #summary-celebrate,
    .hybrid-priority-grid [data-zone=mission] #summary-badge { flex: 0 0 auto; height: auto; }
    /* 고정 height 금지 — 왼쪽 미션이 짧은 날(칭찬형) 기록 카드 글자가 상자 밖으로 튀던 사고 (2026-07-31 은코치 신고).
       min-height로 줄 맞추되 내용이 길면 카드가 같이 자란다. */
    .hybrid-priority-grid #summary-quicklog { display: flex; flex-direction: column; min-height: calc(100% - 28px); }
    /* 균형 충전(택소노미 흡수) — 카드를 오른쪽 키에 맞춰 강제로 늘리면 테두리 안이 비어 보인다.
       카드는 내용만큼만(자연 높이), 남는 세로 공간은 투명한 존 배경으로 흡수한다. */
    .hybrid-priority-grid #summary-action > .v5-card { height: auto; margin-bottom: 0; }
    .hybrid-priority-grid #summary-quicklog > .v5-card { flex: 1 0 auto; height: auto; margin-bottom: 0; }
    .hybrid-record-zone { position: relative; }
    .record-nudge-copy {
      margin: -3px 0 9px;
      color: #4E5968;
      font-size: 13px;
      font-weight: 850;
      line-height: 1.5;
    }
    .hybrid-record-zone.record-nudge #summary-quicklog .quest-card {
      /* 2026-08-11 통일 — 굵은 테두리·그라데이션 강조 폐지, 강조는 위 문구가 담당 */
      border: 1px solid var(--line);
      background: var(--card);
      box-shadow: 0 4px 20px rgba(0,0,0,.04);
    }
    .hybrid-record-zone.record-nudge #summary-quicklog { height: auto; }
    section.dashboard #rival-rec-btn { background: #0B5BD3 !important; }
    .recent-change-section { margin-bottom: var(--gap-zone); }
    .recent-change-section[hidden] { display: none; }
    .recent-change-card { padding: 22px 24px; border: 1px solid var(--line); border-radius: var(--r-card); background: var(--card); box-shadow: 0 4px 20px rgba(0,0,0,.04); }
    .recent-change-label { color: var(--brand-deep); font-size: 12.5px; font-weight: 850; }
    .recent-change-headline { margin: 7px 0 0; color: var(--ink-2); font-size: 14px; font-weight: 700; line-height: 1.65; word-break: keep-all; }
    .recent-change-tabs { display: flex; gap: 7px; flex-wrap: wrap; margin-top: 15px; }
    .recent-change-tabs button { min-height: 44px; padding: 9px 13px; border: 1px solid var(--line); border-radius: 999px; background: #fff; color: var(--ink-2); font: inherit; font-size: 13px; font-weight: 800; cursor: pointer; white-space: normal; }
    .recent-change-tabs button[aria-selected="true"] { border-color: var(--ink); background: var(--ink); color: #fff; }
    .recent-change-plot { margin-top: 14px; padding: 15px 14px 13px; border-radius: var(--r-inner); background: var(--panel2); }
    .recent-change-value-row { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
    .recent-change-metric-label { color: var(--ink-2); font-size: 13px; font-weight: 800; }
    .recent-change-value { color: var(--ink); font-size: 27px; font-weight: 850; font-variant-numeric: tabular-nums; }
    .recent-change-delta { margin-left: 7px; color: var(--ok); font-size: 14px; font-weight: 850; }
    .recent-change-delta.down { color: #B83220; }
    .recent-change-delta.flat { color: var(--sub); }
    /* 2026-08-02 막대그래프 폐기 → 숫자 3칸. 옛 .recent-change-bars/bar/axis 는 사용처 0이라 함께 제거.
       뺀 이유: 막대 높이를 '7일 중 최소~최대'로 늘려 그려서 별점 0.01 차이가 4배 높이로 보였다. */
    /* ★ 칸 폭은 반드시 minmax(0, 1fr) — 그냥 1fr 로 두면 글자가 긴 칸이 더 넓어져 폭이 제각각이 된다.
       (grid 자식의 min-width 기본값이 auto라 내용이 칸을 밀어낸다 · web-ui-anti-slop ⑥-1)
       2026-08-02 은코치 "정렬이 안 맞는데" — '3,217건'이 든 칸만 넓어져 있었다. */
    .rc-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 9px; margin-top: 13px; }
    /* 순위 칸이 들어와 4칸이 되면(2026-08-02) 좁은 화면에선 2×2로 접는다 — 4칸을 한 줄에 두면
       거점키워드 이름이 들어가는 칸이 너무 좁아진다. 넓어지면 한 줄로 편다. */
    /* ★ 2026-08-02 코덱스 검수 #12 — 칸이 1·2개일 때도 3열이라 왼쪽 1/3만 쓰고 있었다 */
    .rc-grid[data-cells="1"] { grid-template-columns: minmax(0, 1fr); }
    .rc-grid[data-cells="2"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    /* 칸이 1~5개로 달라진다(지표 3 + 배지 + 순위). 폭에 맞춰 접는다 —
       2026-08-02 은코치 "저장수 빼고 배지 넣자" 로 칸 수가 늘었다. */
    .rc-grid[data-cells="4"],
    .rc-grid[data-cells="5"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    @media (min-width: 560px) {
      .rc-grid[data-cells="4"] { grid-template-columns: repeat(4, minmax(0, 1fr)); }
      .rc-grid[data-cells="5"] { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    }
    @media (min-width: 860px) {
      .rc-grid[data-cells="5"] { grid-template-columns: repeat(5, minmax(0, 1fr)); }
    }
    /* 배지 칸 — 순위 칸처럼 살짝 구분해 '다른 종류의 숫자'임을 표시 */
    .rc-cell-badge { background: #FBF7FF; border-color: #E9DEF7; }
    .rc-cell { min-width: 0; background: var(--card, #fff); border: 1px solid var(--line, #E5E8EB); border-radius: 13px; padding: 13px 9px; text-align: center; }
    .rc-name { display: block; font-size: 12px; font-weight: 700; color: var(--sub, #4E5968); margin-bottom: 5px; word-break: keep-all; }
    .rc-val { display: block; font-size: 23px; font-weight: 850; color: var(--ink, #191F28); line-height: 1.15; font-variant-numeric: tabular-nums; }
    .rc-val small { font-size: 12.5px; font-weight: 800; color: var(--sub, #4E5968); margin-left: 1px; }
    .rc-chg { display: block; margin-top: 5px; font-size: 12.5px; font-weight: 800; font-variant-numeric: tabular-nums; }
    .rc-chg.up { color: var(--ok, #065F46); }
    .rc-chg.down { color: #B83220; }
    .rc-chg.same { color: var(--faint, #9A938A); }
    .rc-basis { display: block; margin-top: 6px; color: var(--sub, #4E5968); font-size: 11.5px; font-weight: 700; line-height: 1.5; word-break: keep-all; overflow-wrap: anywhere; }
    @media (max-width: 340px) { .rc-val { font-size: 20px; } .rc-name { font-size: 11.5px; } }
    .recent-change-note { margin: 9px 0 0; color: var(--ink-2); font-size: 12.5px; font-weight: 650; line-height: 1.55; word-break: keep-all; }
    .dashboard-state-card {
      margin: 0 0 var(--gap-zone);
      padding: 22px 24px;
      border: 1px solid var(--line);
      border-radius: 20px;
      background: #fff;
      box-shadow: 0 4px 20px rgba(0,0,0,.04);
    }
    .dashboard-state-card .state-kicker { display: block; color: #6B7684; font-size: 12px; font-weight: 850; }
    .dashboard-state-card h3 { margin: 6px 0 0; color: var(--ink); font-size: 22px; font-weight: 900; line-height: 1.38; word-break: keep-all; }
    .dashboard-state-card .state-lead { margin: 9px 0 0; color: var(--ink-2); font-size: 13.5px; line-height: 1.65; word-break: keep-all; }
    .dashboard-state-card .state-rows { display: grid; gap: 8px; margin-top: 15px; padding-top: 14px; border-top: 1px solid var(--line); }
    .dashboard-state-card .state-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; color: var(--ink-2); font-size: 12.5px; line-height: 1.55; }
    .dashboard-state-card .state-row b { min-width: 0; color: var(--ink); font-weight: 850; word-break: keep-all; }
    .dashboard-state-card .state-row span { flex: 0 0 auto; text-align: right; }
    .dashboard-state-card .state-history-title { margin: 15px 0 0; color: var(--ink); font-size: 13px; font-weight: 900; }
    /* 거점 순위 박스 — 다른 숫자 박스와 같은 옷, 살짝 강조 */
    /* "최근 2주 사이 하신 일" = 제목+목록 한 상자 (따로 떠 보이던 것 묶음) */
    .dashboard-state-card .state-history { margin-top: 15px; padding: 13px 15px; border: 1px solid var(--line); border-radius: 12px; background: #F7F8FA; }
    .dashboard-state-card .state-history .state-history-title { margin: 0; }
    .dashboard-state-card .state-history .state-rows { margin-top: 10px; padding-top: 10px; }
    /* 목록은 제목보다 확실히 얇게(보통 굵기) — 제목(900)과 내용의 위계 구분 (2026-07-31 은코치 지적) */
    .dashboard-state-card .state-history .state-row b { color: var(--ink-2); font-weight: 400; }
    .dashboard-state-card .state-note { margin: 13px 0 0; padding: 10px 11px; border-radius: 10px; background: #FFF7F3; color: #71301F; font-size: 12.5px; font-weight: 750; line-height: 1.6; word-break: keep-all; }
    .hybrid-kpi-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
    .hybrid-kpi-card {
      min-width: 0;
      padding: 22px 24px;
      border: 1px solid var(--line);
      border-radius: 20px;
      background: rgba(255,255,255,.9);
      box-shadow: 0 4px 20px rgba(0,0,0,.04);
    }
    .hybrid-kpi-label { color: var(--sub); font-size: 12.5px; font-weight: 750; }
    .hybrid-kpi-value { display: flex; align-items: baseline; gap: 8px; margin-top: 5px; min-width: 0; }
    .hybrid-kpi-value strong { color: var(--ink); font-size: 29px; line-height: 1.12; font-weight: 850; letter-spacing: -.025em; }
    .hybrid-kpi-value .kpi-delta { color: var(--ok); font-size: 13px; font-weight: 850; }
    .hybrid-kpi-value .kpi-delta.down { color: #B83220; }
    .hybrid-kpi-foot { margin-top: 8px; color: var(--faint); font-size: 12px; font-weight: 650; line-height: 1.5; }
    .hybrid-week-grid,
    .hybrid-goal-tools-grid { display: grid; gap: 18px; align-items: start; }
    .hybrid-goal-tools-grid { grid-template-columns: minmax(0, 1fr); align-items: stretch; }
    .hybrid-goal-tools-grid.has-tool { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    /* 목표 카드 제거 후(2026-07-31) 도구 카드 단독 = 1열 */
    .hybrid-goal-tools-grid.goal-removed { grid-template-columns: minmax(0, 1fr); }
    .hybrid-summary-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; align-items: start; margin-bottom: 18px; }
    .hybrid-summary-card { min-width: 0; display: flex; }
    .hybrid-summary-card { flex-direction: column; }
    .hybrid-rival-wrap { min-width: 0; display: grid; gap: 12px; }
    .hybrid-summary-card #summary-card { flex: 1; height: 100%; margin-bottom: 0; }
    .hybrid-summary-card > #summary-card { display: none !important; }
    .hybrid-summary-card > .v5-keywords-panel[open] { width: 100%; margin-top: 18px; }
    .hybrid-keyword-summary-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
    .hybrid-summary-stat-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 14px; }
    .hybrid-summary-stat { padding: 11px 12px; border-radius: 11px; background: var(--panel2); }
    .hybrid-summary-stat span { display: block; color: var(--faint); font-size: 11.5px; font-weight: 700; }
    .hybrid-summary-stat strong { display: block; margin-top: 2px; font-size: 16px; font-weight: 850; }
    .hybrid-keyword-spark { position: relative; height: 96px; margin: 12px 0 6px; overflow: hidden; }
    .hybrid-keyword-spark svg { width: 100%; height: 96px; display: block; }
    .hybrid-card-link {
      width: 100%; min-height: 45px; display: inline-flex; align-items: center; justify-content: center;
      margin-top: 13px; padding: 10px 13px; border: 1px solid #E5E8EB; border-radius: 11px;
      background: #fff; color: #0A4FB8; font-family: inherit; font-size: 13px; font-weight: 850; text-align: center; cursor: pointer;
    }
    .hybrid-card-link:focus-visible,
    .tracker-fold-trigger:focus-visible,
    .tracker-mobile-nav a:focus-visible { outline: 3px solid rgba(11,91,211,.3); outline-offset: 2px; }
    .hybrid-rival-card {
      overflow: hidden;
      border: 1px solid var(--line);
      border-radius: var(--r-card);
      background: var(--card);
      box-shadow: 0 4px 20px rgba(0,0,0,.04);
    }
    .hybrid-rival-card > summary {
      min-height: 62px;
      display: grid;
      grid-template-columns: auto minmax(0, 1fr) auto;
      align-items: center;
      gap: 12px;
      padding: 17px 20px;
      list-style: none;
      cursor: pointer;
    }
    .hybrid-rival-card > summary::-webkit-details-marker { display: none; }
    .hybrid-rival-title { color: var(--ink); font-size: 16px; font-weight: 850; white-space: nowrap; }
    .hybrid-rival-peek { min-width: 0; color: var(--sub); font-size: 12.5px; font-weight: 700; line-height: 1.45; text-align: right; word-break: keep-all; }
    .hybrid-rival-arrow { color: var(--faint); font-size: 17px; transition: transform 180ms var(--ease-out); }
    .hybrid-rival-card[open] .hybrid-rival-arrow { transform: rotate(180deg); }
    .hybrid-rival-card-body { display: grid; gap: 14px; padding: 14px 20px 20px; border-top: 1px solid var(--line); }
    .hybrid-rival-card #rival-score-box { padding: 15px; box-shadow: none; }
    .hybrid-rival-card .hybrid-card-link { margin-top: 0; }
    .hybrid-rival-register-card { min-height: 58px; margin: 0; box-shadow: 0 4px 20px rgba(0,0,0,.04); }
    .hybrid-rival-register-card[hidden] { display: none; }
    #rival-panel[data-rival-state="unregistered"] > summary,
    #rival-panel[data-rival-state="unregistered"] #rival-score-box,
    #rival-panel[data-rival-state="unregistered"] [data-rival-summary-link] { display: none; }
    .hybrid-rival-highlights { display: grid; gap: 8px; margin-top: 14px; color: var(--sub); font-size: 12px; line-height: 1.45; }
    .hybrid-rival-highlights b { color: var(--ink); }
    .hybrid-week-grid { grid-template-columns: minmax(0, 1fr); }
    .hybrid-week-grid[hidden] { display: none; }
    .hybrid-week-grid #summary-weekly,
    .hybrid-week-grid #summary-season { min-width: 0; }
    .hybrid-week-grid .weekly-card,
    .hybrid-week-grid .season-card { height: 100%; margin-bottom: 0; }
    @media (min-width: 1024px) {
      .hybrid-week-grid.has-weekly.has-season { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    }
    .hybrid-goal-card,
    .hybrid-tool-card { min-width: 0; height: 100%; padding: 24px; display: flex; flex-direction: column; border: 1px solid var(--line); border-radius: var(--r-card); background: #fff; box-shadow: 0 4px 20px rgba(0,0,0,.04); }
    .hybrid-goal-card { background: linear-gradient(145deg, #fff 45%, #FFFAF1 100%); }
    .hybrid-goal-label { display: flex; align-items: center; gap: 8px; color: var(--ink); font-size: 14px; font-weight: 850; }
    .hybrid-goal-label::before { content: ''; width: 4px; height: 18px; flex: 0 0 auto; border-radius: 4px; background: var(--brand); }
    /* .hybrid-tool-label 스타일 제거 (2026-08-01 은코치 "중복빼") — 배지 자체를 없앴다. 쓰는 곳 0. */
    .hybrid-goal-rank { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin: 16px 0; }
    .hybrid-goal-rank strong { font-size: 24px; font-weight: 900; }
    .hybrid-goal-rank span { color: var(--sub); font-size: 12px; text-align: right; }
    .hybrid-goal-next { margin: 0 0 18px; padding: 14px 15px; border-radius: 13px; background: #FFF1EA; color: #71301F; font-size: 13px; font-weight: 800; line-height: 1.55; }
    .hybrid-goal-card > .hybrid-card-link { margin-top: auto; }
    .hybrid-tool-recommendation { flex: 1; display: flex; flex-direction: column; }
    .dash-fail-banner {
      display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 18px;
      margin: 0 0 18px; padding: 14px 16px; border: 1px solid #0B5BD3; border-radius: 14px;
      background: #FFF7F3; color: #0A4FB8;
    }
    .dash-fail-banner[hidden] { display: none; }
    .dfb-text { min-width: 0; display: flex; flex: 1 1 260px; flex-direction: column; gap: 2px; line-height: 1.5; overflow-wrap: anywhere; }
    .dfb-text b { font-size: 14px; font-weight: 850; }
    .dfb-text span { font-size: 13px; font-weight: 650; }
    .dash-fail-banner button {
      min-height: 44px; flex: 0 0 auto; padding: 10px 16px; border: 1px solid #0B5BD3; border-radius: 11px;
      background: #fff; color: #0A4FB8; font: inherit; font-size: 13px; font-weight: 850; white-space: nowrap; cursor: pointer;
    }
    .dash-fail-banner button:focus-visible { outline: 3px solid rgba(11,91,211,.3); outline-offset: 2px; }
    .dash-fail-banner button:disabled { opacity: .65; cursor: wait; }
    .dashboard-refresh-status {
      display: inline-flex; align-items: center; min-height: 24px; margin: -7px 0 13px; padding: 4px 9px;
      border-radius: 999px; background: #F4F2EF; color: var(--sub); font-size: 12px; font-weight: 750; line-height: 1.35;
    }
    .dashboard-refresh-status[data-state="stale"] { background: #FFF4E8; color: #8B4A18; }
    .dashboard-refresh-status[hidden] { display: none; }
    .tracker-card-state { margin: 0; color: var(--ink-3); font-size: 13px; line-height: 1.55; }
    .tracker-card-state[data-state^="error"] { color: #0A4FB8; }
    .hybrid-tool-card h4 { margin: 15px 0 7px; font-size: 22px; }
    .hybrid-tool-card p { margin: 0 0 18px; color: var(--sub); font-size: 13px; line-height: 1.6; }
    .hybrid-tool-recommendation:empty { display: none; }
    .hybrid-tool-card .hybrid-tool-recommendation .hybrid-card-link { width: 100%; min-height: 47px; display: inline-flex; align-items: center; justify-content: center; margin-top: auto; border-radius: 12px; text-align: center; }
    .hybrid-fold-stack { display: grid; gap: var(--gap-block); }
    /* ★ 2026-08-02 은코치 "설정 아래에 넣지말고 밖으로 빼서 그냥 버튼으로 표기하자. 이것처럼"
       — 상세 대시보드 접이 카드와 같은 생김새로 맞춘다. PC에서는 두 칸. */
    .settings-buttons { display: grid; gap: 10px; margin-top: 12px; }
    @media (min-width: 900px) { .settings-buttons { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; } }
    .settings-buttons > .panel {
      margin: 0; padding: 0; background: #fff; border: 1px solid var(--line);
      border-radius: 20px; box-shadow: 0 4px 20px rgba(0,0,0,.04); overflow: hidden;
    }
    .settings-buttons > .panel > summary {
      list-style: none; cursor: pointer; display: flex; align-items: center; gap: 10px;
      padding: 17px 20px; font-size: 14.5px; font-weight: 800; color: var(--ink);
    }
    .settings-buttons > .panel > summary::-webkit-details-marker { display: none; }
    .settings-buttons > .panel > summary::after {
      content: '⌄'; margin-left: auto; color: var(--faint); font-size: 13px; transition: transform .2s;
    }
    .settings-buttons > .panel[open] > summary::after { transform: rotate(180deg); }
    .settings-buttons > .panel > summary h4 { font-size: 14.5px; font-weight: 800; }
    .settings-buttons > #alert-panel > summary h4 { min-width: 0; display: flex; flex: 1 1 auto; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; line-height: 1.5; }
    #alert-prefs-summary { margin: 0; color: #4E5968; font-size: 12px; font-weight: 650; line-height: 1.5; white-space: normal; overflow-wrap: anywhere; }
    /* 시즌 접이 카드 — 설정 버튼과 같은 생김새 (2026-08-02 은코치 "최근변화 밑으로는 전부 접어서") */
    .season-fold { margin: 0 0 var(--gap-zone); padding: 0; background: none; border: 0; } /* 상시 카드 — 껍데기는 body(.summary)가 담당 (audit-tracker-body 1) */
    .season-fold[hidden] { display: none; }
    .season-fold > summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 10px;
                             padding: 17px 20px; font-size: 14.5px; font-weight: 800; color: var(--ink); }
    .season-fold > summary::-webkit-details-marker { display: none; }
    .season-fold > summary::after { content: '⌄'; margin-left: auto; color: var(--faint); font-size: 13px; transition: transform .2s; }
    .season-fold[open] > summary::after { transform: rotate(180deg); }
    .season-fold > summary .micro { color: var(--sub); font-size: 12px; font-weight: 650; }
    .settings-buttons > .panel > summary .micro { color: var(--sub); font-size: 12px; font-weight: 650; }
    .settings-buttons > .panel > .panel-sub,
    .settings-buttons > .panel > div:not(summary) { padding: 0 20px 16px; }
    /* ★ 2026-08-02 은코치 "이것도 pc화면에서는 가로형으로 만들자" — 상세 대시보드 접이 카드 4개가
       넓은 화면에서도 세로로 한 줄씩 쌓여 양옆이 비었다. 900px 부터 두 칸으로 편다.
       열린 카드(details[open])는 안에 표·그래프가 들어가므로 한 줄을 통째로 쓴다. */
    @media (min-width: 900px) {
      .hybrid-fold-stack { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; align-items: start; }
      /* ★ 2026-08-02 코덱스 검수 #11 — 실제 자식 클래스는 .tracker-accordion 이고,
         여는 방식도 [open] 속성이 아니라 트리거의 aria-expanded 다. 둘 다 안 잡히고 있었다. */
      .hybrid-fold-stack > .tracker-accordion:has(> [aria-expanded="true"]) { grid-column: 1 / -1; }
    }
    .tracker-accordion { overflow: hidden; border: 1px solid var(--line); border-radius: 20px; background: #fff; box-shadow: 0 4px 20px rgba(0,0,0,.04); }
    .tracker-fold-trigger {
      width: 100%; min-height: 64px; display: grid; grid-template-columns: minmax(0,1fr) auto auto;
      align-items: center; gap: 8px; padding: 15px 18px; border: 0;
      background: #fff; color: var(--ink); font: inherit; cursor: pointer; text-align: left;
    }
    .tracker-fold-heading {
      min-width: 0; display: flex; align-items: center; gap: 12px;
    }
    .tracker-fold-heading strong {
      flex: 0 0 auto; font-size: 15px; font-weight: 850; line-height: 1.45;
      white-space: normal; word-break: keep-all;
    }
    .tracker-fold-summary {
      min-width: 0; margin-left: auto; color: var(--sub); font-size: 12px; font-weight: 700;
      line-height: 1.5; text-align: right; white-space: normal; overflow-wrap: anywhere; word-break: keep-all;
    }
    .tracker-fold-dot {
      width: 7px; height: 7px; border-radius: 50%; background: var(--orange); flex: none;
    }
    .tracker-fold-dot[hidden] { display: none; }
    .tracker-fold-action { display: inline-flex; align-items: center; color: var(--sub); font-size: 16px; font-weight: 850; }
    .tracker-fold-arrow { display: inline-block; transition: transform 180ms var(--ease-out); }
    .tracker-fold-trigger[aria-expanded="true"] .tracker-fold-arrow { transform: rotate(180deg); }
    .tracker-fold-panel { padding: 0 18px 18px; border-top: 1px solid var(--line); }
    .tracker-fold-loading { margin: 12px 0 0; color: var(--sub); font-size: 13px; font-weight: 650; line-height: 1.5; }
    .tracker-fold-panel > .panel,
    .tracker-fold-panel > .summary { margin: 16px 0 0; box-shadow: none; }
    .tracker-fold-panel .report-archive-list { padding-top: 16px; }
    .tracker-accordion.report-archive { margin-bottom: 0; }
    .tracker-accordion.report-archive .report-archive-heading { display: flex; }
    .rankings-dashboard-fold .v5-keywords-panel { width: 100%; margin-top: 16px; }
    .rankings-dashboard-fold .v5-keywords-panel > summary { display: none; }
    .rival-dashboard-fold #rival-panel > summary { display: none; }
    .rival-dashboard-fold #rival-panel:not([open]) > .hybrid-rival-card-body { display: grid; }
    .rival-dashboard-fold .hybrid-rival-card,
    .rival-dashboard-fold .hybrid-rival-register-card { box-shadow: none; }
    #report-archive-panel > .recent-report-shell { margin-top: 16px; margin-bottom: 0; }
    #report-archive-panel > #metrics-panel { margin-top: 16px; }
    .tracker-mobile-nav { display: none; }
    section.dashboard .up,
    section.dashboard .kw-market .up,
    section.dashboard .summary .up,
    section.dashboard #rival-score-box .rs-me,
    section.dashboard :is(#badge-host,#hall-host) .hall-count { color: #065F46; }
    section.dashboard .down { color: #B83220; }
    @media (max-width: 900px) {
      section.dashboard .container { max-width: 720px; }
      .hybrid-priority-grid { grid-template-columns: 1fr; }
    }
    @media (max-width: 680px) {
      section.dashboard { padding-bottom: calc(102px + env(safe-area-inset-bottom)); }
      section.dashboard .container { padding: 0 16px; }
      .hybrid-kpi-grid,
      .hybrid-summary-grid,
      .hybrid-week-grid,
      .hybrid-goal-tools-grid { grid-template-columns: minmax(0, 1fr); }
      .hybrid-priority-grid { gap: var(--gap-block); }
      #tracker-keywords .hybrid-summary-grid { gap: 14px; }
      .hybrid-kpi-card { padding: 22px 24px; }
      .hybrid-kpi-value strong { font-size: 25px; }
      .hybrid-rival-card > summary { min-height: 58px; grid-template-columns: auto minmax(0, 1fr) auto; gap: 12px; padding: 15px 14px; }
      .hybrid-rival-title { font-size: 15px; }
      .hybrid-rival-peek { font-size: 13.5px; }
      .hybrid-rival-card-body { gap: 12px; padding: 12px 14px 14px; }
      .hybrid-rival-card #rival-score-box { padding: 14px; }
      .hybrid-rival-register-card { min-height: 56px; }
      .tracker-fold-trigger { grid-template-columns: minmax(0,1fr) auto auto; padding: 15px; }
      .tracker-fold-panel { padding: 0 14px 14px; }
      .hybrid-kpi-label,
      .hybrid-kpi-foot,
      .hybrid-rival-card > p,
      .hybrid-rival-highlights,
      .hybrid-goal-rank span,
      .hybrid-goal-next,
      .hybrid-tool-card p,
      .tracker-fold-summary,
      .hybrid-card-link { font-size: 14px; }
      section.dashboard .qchip,
      section.dashboard .btn-go,
      section.dashboard .btn-tool,
      section.dashboard .btn-done { min-height: 44px; font-size: 14px; }
      section.dashboard.show > .tracker-mobile-nav {
        position: fixed; left: 0; right: 0; bottom: 0; z-index: var(--z-nav);
        height: calc(66px + env(safe-area-inset-bottom)); display: grid; grid-template-columns: repeat(4, minmax(0,1fr));
        padding-bottom: env(safe-area-inset-bottom); border-top: 1px solid var(--line);
        background: rgba(255,255,255,.96); backdrop-filter: blur(16px);
      }
      .tracker-mobile-nav a { min-height: 44px; display: grid; place-items: center; color: var(--sub); font-size: 14px; font-weight: 850; }
      .tracker-mobile-nav a[aria-current="location"] { color: #0A4FB8; }
    }
    @media (prefers-reduced-motion: reduce) {
      html { scroll-behavior: auto; }
      body.demo .logmeter .bar i { transition: none !important; }
      .kw-chip .kw-primary-toggle.kw-primary-nudge,
      .kw-chip .kw-primary-toggle.kw-primary-nudge::before { animation: none !important; }
      .tracker-fold-arrow,
      .summary .season-card .sc-progress > span { transition: none !important; }
      .today-character-host svg,
      .today-char .ring-1,
      .today-char .ring-2,
      .today-char .ring-3 { animation: none !important; transition: none !important; }
      .celebrate-layer { display: none !important; }
      .tracker-detail-fold > summary,
      .tracker-detail-fold > summary::after,
      .quicklog-inline-form button,
      #sp-body .sp-tog.season-chip,
      .season-fold-trigger > [aria-hidden="true"],
      .practice-question-card { transition: none !important; }
      .practice-question-card.is-dismissing { transform: none !important; }
    }

    /* 본체 이식 2026-08-15: 한 화면에서 먼저 볼 흐름은 순위 → 오늘 할 일 →
       잘하고 있는 점/시즌 → 오늘 기록이다. 숨은 상세 저장고의 데이터 계약은 건드리지 않는다. */
    .tracker-primary-rank-zone { margin-bottom: var(--gap-zone); }
    .tracker-primary-rank-zone .keyword-rank-card { display: grid; gap: 14px; }
    /* 시안 v3 히어로 (2026-08-16 본체 마감): 흰 카드 + 회색 라벨 + 숫자/칩 한 줄 + 스파크라인 */
    .primary-rank-card { display: block; padding: 22px 24px; border: 1px solid var(--line, #E5E8EB); border-radius: 20px; background: #FFFFFF; }
    .primary-rank-label { display: block; color: var(--faint, #6B7684); font-size: 13px; font-weight: 800; line-height: 1.5; margin-bottom: 6px; overflow-wrap: anywhere; }
    .primary-rank-line { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
    .primary-rank-line .sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
    .prv-wrap { display: inline-flex; align-items: baseline; }
    .primary-rank-note { margin: 8px 0 0; color: #0B5BD3; font-size: 14px; font-weight: 800; }
    .primary-rank-spark { display: block; width: 100%; height: auto; margin-top: 12px; }
    .primary-rank-spark-labels { display: flex; justify-content: space-between; color: var(--faint, #6B7684); font-size: 12px; font-weight: 700; margin-top: 2px; }
    .doing-well-line { margin: 4px 0; color: var(--ink-2); font-size: 14.5px; font-weight: 650; line-height: 1.6; word-break: keep-all; }
    .primary-rank-insight { margin-top: 10px; padding: 12px 14px; border-radius: 12px; background: #E7F5EE; color: #065F46; font-size: 13.5px; font-weight: 700; line-height: 1.6; word-break: keep-all; }
    .rank-worst-note { margin-top: 10px; padding: 12px 14px; border-radius: 12px; background: #FFF3E8; color: #93400B; font-size: 13.5px; font-weight: 700; line-height: 1.6; }
    .primary-rank-value { color: var(--ink); font-size: clamp(34px, 8vw, 52px); font-weight: 900; line-height: .96; letter-spacing: -.045em; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
    .primary-rank-value small { margin-left: 3px; color: var(--ink-2); font-size: .45em; font-weight: 850; letter-spacing: 0; }
    .primary-rank-value.tone-pending,
    .primary-rank-value.tone-far { font-size: 20px; line-height: 1.4; letter-spacing: -.02em; }
    .primary-rank-change { justify-self: end; color: #174F91; font-size: 13px; font-weight: 850; line-height: 1.45; overflow-wrap: anywhere; text-align: right; }
    .keyword-list-fold { border: 1px solid var(--line); border-radius: 14px; background: #fff; overflow: hidden; }
    .keyword-list-fold > summary { min-height: 48px; display: flex; align-items: center; padding: 12px 14px; color: var(--ink); font-size: 14px; font-weight: 850; line-height: 1.5; cursor: pointer; list-style: none; }
    .keyword-list-fold > summary::-webkit-details-marker { display: none; }
    .keyword-list-fold > summary::after { content: '⌄'; margin-left: auto; color: var(--ink-3); font-size: 17px; }
    .keyword-list-fold[open] > summary::after { transform: rotate(180deg); }
    .keyword-list-fold .keyword-tap-hint { margin: 0 14px 12px; }
    .keyword-list-fold .rank-lanes { padding: 0 10px 10px; }
    .tracker-support-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-bottom: var(--gap-zone); }
    /* 한쪽(잘하고있어요/시즌)이 숨으면 남은 카드가 전폭 — 반 칸짜리 외톨이 금지 (§8-B) */
    .tracker-support-grid:has(> .tracker-praise-card[hidden]) > .season-fold { grid-column: 1 / -1; }
    .tracker-support-grid:has(> .season-fold[hidden]) > .tracker-praise-card { grid-column: 1 / -1; }
    /* 둘 다 숨으면 그리드 자체가 자리(아래 여백)를 남기지 않게 */
    .tracker-support-grid:not(:has(> :not([hidden]))) { display: none; }
    .tracker-support-card { min-width: 0; margin: 0; border: 1px solid var(--line); border-radius: 20px; background: #fff; box-shadow: 0 4px 20px rgba(0,0,0,.04); overflow: hidden; padding: 22px 24px; }
    .season-fold { min-width: 0; margin: 0; background: none; border: 0; } /* 상시 카드 — 껍데기는 body(.summary) 담당 */
    .tracker-support-label { margin-bottom: 9px; color: #174F91; font-size: 13px; font-weight: 850; line-height: 1.5; }
    .doing-well-fact { color: var(--ink); font-size: 15px; font-weight: 800; line-height: 1.6; overflow-wrap: anywhere; }
    .doing-well-fact + #summary-badge:not(:empty) { margin-top: 10px; }
    .tracker-praise-card #summary-badge > * { margin: 0; }
    .tracker-praise-card #summary-badge:empty::before { content: '가게 흐름을 확인하고 있어요'; color: var(--ink-2); font-size: 14px; font-weight: 700; line-height: 1.65; }
    .season-fold[hidden] { display: none; }
    .season-fold-trigger { width: 100%; min-height: 52px; display: flex; align-items: center; gap: 8px; padding: 14px 17px; border: 0; background: #fff; color: var(--ink); font: inherit; font-size: 14px; font-weight: 850; line-height: 1.5; text-align: left; cursor: pointer; }
    .season-fold-trigger .micro { min-width: 0; color: var(--ink-3); font-size: 12px; font-weight: 700; overflow-wrap: anywhere; }
    .season-fold-trigger > [aria-hidden="true"] { margin-left: auto; color: var(--ink-3); font-size: 17px; transition: transform .2s; }
    .season-fold-trigger[aria-expanded="true"] > [aria-hidden="true"] { transform: rotate(180deg); }
    .season-fold-body[hidden] { display: none; }
    .tracker-detail-boundary { display:flex; align-items:center; gap:10px; margin:0 0 14px; color:var(--ink-2); font-size:14px; font-weight:800; line-height:1.55; }
    .tracker-detail-boundary::before, .tracker-detail-boundary::after { content:''; height:1px; min-width:16px; flex:1; background:var(--line); }
    /* 시안 v3 239행 문법 (2026-08-16 audit-100 H번): 흰 카드 하나(radius 20 · padding 6px 24px) 안 줄 목록,
       줄 = min-height 56 + border-top, PC 2열(gap 0 24px). 옛 "링크마다 개별 카드" 폐기. */
    .tracker-route-list { display:grid; grid-template-columns:1fr; gap:0 24px; margin:0 0 var(--gap-zone); background:#fff; border:1px solid var(--line); border-radius:20px; padding:6px 24px; box-shadow:0 4px 20px rgba(0,0,0,.04); }
    .tracker-route-list a { min-height:56px; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:16px 0; border-top:1px solid var(--line); color:var(--ink); text-decoration:none; overflow-wrap:anywhere; }
    .tracker-route-list a:hover { color:#0B5BD3; }
    .tracker-route-list a > span:last-child { flex:0 0 auto; color:var(--faint, #6B7684); font-weight:800; line-height:1; }
    .tracker-route-list .route-copy { min-width:0; flex:1; display:grid; gap:1px; }
    .tracker-route-list .route-copy b { font-size:15.5px; font-weight:700; line-height:1.55; }
    .tracker-route-list .route-sub { color:var(--faint, #6B7684); font-size:13px; font-weight:400; line-height:1.55; }
    .tracker-route-list .route-badge { flex:0 0 auto; background:#E7F5EE; color:#065F46; border-radius:999px; padding:2px 9px; font-size:12px; font-weight:800; white-space:nowrap; }
    @media (min-width: 900px) { .tracker-route-list { grid-template-columns:1fr 1fr; } }
    .tracker-route-list a:focus-visible { outline:3px solid rgba(11,91,211,.3); outline-offset:3px; }
    .tracker-self-check-banner { min-height:72px; display:flex; align-items:center; gap:14px; margin:12px 0 var(--gap-zone); padding:18px 20px; border:1px solid #C9DDF8; border-radius:16px; background:#EAF2FE; color:#1D4F9C; text-decoration:none; }
    .tracker-self-check-copy { min-width:0; flex:1; display:grid; gap:2px; }
    .tracker-self-check-copy b { color:#0A4FB8; font-size:16px; font-weight:850; line-height:1.45; }
    .tracker-self-check-copy span { color:#1D4F9C; font-size:14px; font-weight:700; line-height:1.55; overflow-wrap:anywhere; }
    .tracker-self-check-action { flex:0 1 auto; display:block; color:#0A4FB8; font-size:14px; font-weight:850; line-height:1.5; overflow-wrap:anywhere; text-align:right; }
    .tracker-self-check-banner:focus-visible { outline:3px solid rgba(11,91,211,.38); outline-offset:3px; }
    @media (max-width: 899px) {
      .tracker-support-grid { grid-template-columns: 1fr; }
    }

    /* 새 본체 이식 규칙은 이 파일의 마지막 reduced-motion 선언으로 덮는다. */

    /* ★ 첫날 모드 — 클로드디자인 First Day 5상태 (2026-08-18 은코치 「하자」 · 원장 #21)
       등록 당일(KST) 대시보드에만 #dashboard-area.fd-mode가 붙는다. 값은 시안 원문 그대로:
       카드 radius 20 · 26px 24px · 그림자 한 겹 / 큰 순위 48px 900 / 알약 #F2F4F6·#6B7684 / 파란 라벨 #EAF2FE·#1D4F9C / 라이벌 띠 #EAF2FE. */
    .fd-sub { margin: 6px 0 0; font-size: 14.5px; color: #6B7684; word-break: keep-all; }
    .fd-sub[hidden] { display: none; }
    .fd-zone[hidden] { display: none; }
    .fd-card { background: #fff; border: 1px solid #E5E8EB; border-radius: 20px; padding: 26px 24px; box-shadow: 0 4px 20px rgba(0,0,0,.04); box-sizing: border-box; min-width: 0; word-break: keep-all; }
    #fd-hero { margin-bottom: 12px; }
    .fd-kicker { display: block; font-size: 13px; font-weight: 800; color: #6B7684; }
    .fd-rank-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 8px; }
    .fd-rank { font-size: 48px; font-weight: 900; letter-spacing: -0.045em; line-height: 1.1; color: #191F28; }
    .fd-rank-wait { font-size: 26px; letter-spacing: -0.02em; }
    .fd-pill { background: #F2F4F6; color: #6B7684; font-size: 13.5px; font-weight: 800; border-radius: 999px; padding: 4px 12px; }
    .fd-lead { margin: 12px 0 0; font-size: 15px; color: #4E5968; line-height: 1.6; }
    .fd-note { background: #F2F4F6; border-radius: 12px; padding: 14px 16px; margin-top: 14px; }
    .fd-note p { margin: 0; font-size: 13.5px; color: #4E5968; line-height: 1.6; }
    #fd-extra { margin: 12px 0; }
    .fd-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; margin-bottom: 12px; }
    @media (min-width: 900px) { .fd-grid { grid-template-columns: 1fr 1fr; } }
    .fd-grid .fd-card { padding: 22px 24px; }
    .fd-h3 { margin: 0 0 8px; font-size: 16px; font-weight: 800; }
    .fd-p { margin: 0 0 12px; font-size: 14px; color: #4E5968; }
    .fd-rows { display: flex; flex-direction: column; gap: 10px; margin-top: 12px; }
    .fd-row { display: flex; gap: 10px; align-items: flex-start; }
    .fd-when { font-size: 12.5px; font-weight: 900; color: #0B5BD3; flex-shrink: 0; min-width: 44px; }
    .fd-text { font-size: 14px; color: #4E5968; min-width: 0; }
    .fd-empty-rows { display: flex; flex-direction: column; gap: 8px; }
    .fd-empty-row { display: flex; justify-content: space-between; align-items: center; gap: 10px; background: #F2F4F6; border-radius: 12px; padding: 11px 14px; }
    .fd-empty-name { font-size: 14px; font-weight: 700; color: #6B7684; min-width: 0; }
    .fd-empty-when { font-size: 12.5px; font-weight: 800; color: #6B7684; flex-shrink: 0; }
    .fd-empty-row-go { background: #EAF2FE; min-height: 48px; text-decoration: none; }
    .fd-empty-row-go .fd-empty-name, .fd-empty-row-go .fd-empty-when { color: #1D4F9C; font-weight: 800; }
    .fd-empty-row-go:hover .fd-empty-when { text-decoration: underline; text-underline-offset: 3px; }
    .fd-rival { background: #EAF2FE; border-radius: 20px; padding: 22px 24px; display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }
    .fd-rival-copy { min-width: 0; }
    .fd-rival-copy b { display: block; font-size: 15px; font-weight: 800; color: #1D4F9C; }
    .fd-rival-copy span { display: block; font-size: 13.5px; color: #1D4F9C; margin-top: 2px; }
    .fd-rival-btn { border: 0; cursor: pointer; font: inherit; background: #0B5BD3; color: #fff; border-radius: 14px; min-height: 48px; padding: 0 20px; font-size: 15px; font-weight: 800; }
    .fd-rival-btn:hover { background: #1D4F9C; }
    /* 첫날엔 감춘다 — 순위 구역(거점 카드가 대신) · 「여기까지가 오늘 볼 것」 경계 · 최근 변화.
       (아래 접이식 #tracker-records는 원래 숨은 저장고라 손대지 않는다 · 리포트 입구 목록은 그대로 둔다 — 길을 막지 않는다) */
    #dashboard-area.fd-mode #tracker-keywords,
    #dashboard-area.fd-mode .tracker-detail-boundary,
    #dashboard-area.fd-mode #recent-change-section { display: none; }
    .fd-rival-btn { display: inline-flex; align-items: center; justify-content: center; text-decoration: none; }
    /* 「첫날 할 일」 라벨 — 오늘 할 일 카드(엔진 카드) 위에 CSS로만 얹는다(카드 렌더는 대시보드와 한 벌 · 재렌더에도 남는다).
       조용한 날·칭찬형에는 안 붙인다(「새로 챙길 일이 없어요」와 「첫날 할 일」이 부딪힌다). */
    #dashboard-area.fd-mode #summary-action .quest-card .mission.mission-action::before {
      content: '첫날 할 일'; display: inline-block; background: #EAF2FE; color: #1D4F9C;
      font-size: 13px; font-weight: 800; border-radius: 8px; padding: 3px 10px; margin-bottom: 10px;
    }

    /* ★ 체험 마지막 날 카드 (클로드디자인 Trial End D-1 · deliver-0818-9 · 2026-08-18) — 오늘 할 일 카드 바로 밑.
       알약 #FFF3E8/#93400B · h3 22/900 · 성과 3칸(거점만 초록 #E7F5EE/#065F46 · 나머지 #F2F4F6) · 「내일부터」 3줄 · 파란 상자 · 결제 두 판 · PDF 흰 버튼 52 */
    #trial-end-card[hidden] { display: none; }
    .tec-card { background: #fff; border: 1px solid #E5E8EB; border-radius: 20px; padding: 26px 24px; box-shadow: 0 4px 20px rgba(0,0,0,.04); display: flex; flex-direction: column; gap: 15px; word-break: keep-all; }
    .tec-pill { align-self: flex-start; background: #FFF3E8; color: #93400B; font-size: 12.5px; font-weight: 800; border-radius: 999px; padding: 4px 12px; }
    .tec-title { margin: 0; font-size: 22px; font-weight: 900; letter-spacing: -.03em; line-height: 1.35; }
    .tec-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 150px), 1fr)); gap: 10px; }
    .tec-tile { border-radius: 14px; padding: 14px 16px; display: flex; flex-direction: column; gap: 3px; background: #F2F4F6; }
    .tec-tile-k { font-size: 12px; font-weight: 800; color: #6B7684; }
    .tec-tile-v { font-size: 19px; font-weight: 900; letter-spacing: -.02em; color: #191F28; }
    .tec-tile-good { background: #E7F5EE; }
    .tec-tile-good .tec-tile-k, .tec-tile-good .tec-tile-v { color: #065F46; }
    .tec-next { border-top: 1px solid #E5E8EB; padding-top: 15px; display: flex; flex-direction: column; gap: 7px; }
    .tec-next-h { margin: 0 0 3px; font-size: 14px; font-weight: 800; }
    .tec-next-l { margin: 0; font-size: 14px; color: #4E5968; line-height: 1.6; }
    .tec-next-l b { color: #191F28; }
    .tec-note { background: #EAF2FE; border-radius: 12px; padding: 12px 14px; margin-top: 3px; }
    .tec-note p { margin: 0; font-size: 13.5px; font-weight: 700; color: #1D4F9C; line-height: 1.6; }
    .tec-pay { border-top: 1px solid #E5E8EB; padding-top: 15px; display: flex; flex-direction: column; gap: 10px; }
    .tec-pay-lead { margin: 0; font-size: 14px; color: #4E5968; line-height: 1.65; }
    .tec-pay-note { margin: 0; font-size: 12.5px; color: #6B7684; text-align: center; }
    .tec-btn-primary { border: 0; cursor: pointer; display: flex; align-items: center; justify-content: center; width: 100%; min-height: 54px; border-radius: 14px; background: #0B5BD3; color: #fff; font: inherit; font-size: 16px; font-weight: 800; text-decoration: none; }
    .tec-btn-primary:hover { background: #1D4F9C; color: #fff; }
    .tec-btn-primary:disabled { opacity: .7; cursor: default; }
    .tec-btn-secondary { cursor: pointer; display: flex; align-items: center; justify-content: center; width: 100%; min-height: 52px; border-radius: 14px; border: 1.5px solid #E5E8EB; background: #fff; color: #191F28; font: inherit; font-size: 15px; font-weight: 800; }
    .tec-btn-secondary:hover { border-color: #0B5BD3; color: #0B5BD3; }
    .tec-notified { background: #E7F5EE; border-radius: 14px; padding: 15px 17px; display: flex; align-items: center; gap: 11px; font-size: 14.5px; font-weight: 800; color: #065F46; }
    .tec-notified-mark { width: 30px; height: 30px; flex: none; border-radius: 50%; background: #fff; color: #065F46; display: flex; align-items: center; justify-content: center; font-size: 15px; font-weight: 900; }
    /* 배너 한 줄형 오른쪽 링크 글자 (체험 마지막 날 「내일부터 어떻게 되나요 ›」) */
    .tracker-banner-linktext { margin-left: auto; font-size: 13.5px; font-weight: 800; color: var(--banner-ink, #93400B); word-break: keep-all; }

    @media (prefers-reduced-motion: reduce) {
      .season-fold-trigger > [aria-hidden="true"],
      .keyword-list-fold > summary::after,
      .tracker-self-check-banner { transition: none !important; }
      .practice-question-card.is-dismissing { transform: none !important; }
    }
