/* 相生 polish layer — 2026-11-06 (design-9)
   Loaded LAST on friends pages. Follows the owner poster reference: off-white paper, deep-green ink,
   big serif headings, hairline rules, sage panels, small line icons. Denser rhythm, one primary action per screen.
   Rules are prefixed with `html body` so they win over friends.css without editing it. */
:root{
  --xs-paper:#f7f5ef; --xs-surface:#fffefb; --xs-surface-2:#eef0e7;
  --xs-ink:#18302a; --xs-ink-2:#34463f; --xs-muted:#5a675f;
  --xs-line:#e3e0d5; --xs-line-strong:#cdd0c2;
  --xs-sage:#e3e9dc; --xs-sage-line:#cfd9c6;
}
html body{background:var(--xs-paper);color:var(--xs-ink)}
html body :is(h1,h2,h3){text-wrap:balance;word-break:keep-all;overflow-wrap:anywhere}
html body :is(p,li,dd,summary){text-wrap:pretty}
html body .visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
html body .eyebrow:empty{display:none}

/* ---------- Header / nav / footer ---------- */
html body .site-header{height:72px}
html body .brand{font-family:var(--xs-serif);font-weight:700;letter-spacing:2px;font-size:28px;color:var(--xs-ink)}
html body .account-button{min-height:40px;padding:8px 16px;border-color:var(--xs-line-strong);color:var(--xs-ink);font-size:var(--xs-fs-sm);font-weight:600}
html body .account-button span{display:none}
html body .logout-button{color:var(--xs-muted);border:0;font-size:var(--xs-fs-sm);min-height:44px}
html body .site-footer{display:flex;flex-wrap:wrap;align-items:center;gap:6px 18px;padding:20px 0 28px;font-size:var(--xs-fs-xs);letter-spacing:0;color:var(--xs-muted)}
html body .site-footer .footer-links{gap:4px 14px;flex-wrap:wrap}
html body .site-footer .footer-links a{text-decoration:none;color:var(--xs-ink-2);min-height:44px;display:inline-flex;align-items:center}
html body .site-footer>span:last-child{margin-left:auto}

/* ---------- Page heading ---------- */
html body .page-heading{margin-bottom:18px;gap:12px}
html body .page-heading h1{font:600 34px/1.25 var(--xs-serif);letter-spacing:1px;margin:0 0 6px;color:var(--xs-ink)}
html body .page-heading p{margin:0;font-size:var(--xs-fs-sm);line-height:1.6;color:var(--xs-muted)}

/* ---------- Buttons ---------- */
html body .primary{border-radius:12px;box-shadow:none;letter-spacing:.5px}
html body .secondary{border-radius:12px;background:var(--xs-surface)}

/* ---------- Toast ---------- */
html body .toast{bottom:calc(84px + env(safe-area-inset-bottom));background:var(--xs-ink);color:#fff;border-radius:999px;padding:12px 22px;font-size:var(--xs-fs-sm);font-weight:500;box-shadow:0 8px 24px -8px rgba(24,48,42,.45);text-align:center}
@media(min-width:641px){html body .toast{bottom:32px}}

/* ---------- Empty states ---------- */
html body .empty-state{display:grid;grid-template-columns:44px 1fr;gap:4px 14px;align-items:center;text-align:left;padding:20px;border:1px solid var(--xs-line);border-radius:16px;background:var(--xs-surface)}
html body .empty-state .empty-icon{width:44px;height:44px;padding:10px;border-radius:50%;background:var(--xs-sage);fill:none;stroke:var(--xs-primary);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;grid-row:1}
html body .empty-state h2{font:600 var(--xs-fs-md)/1.4 var(--xs-serif);margin:0;color:var(--xs-ink)}
html body .empty-state p{margin:2px 0 0;max-width:none;font-size:var(--xs-fs-sm);line-height:1.55;color:var(--xs-muted)}
html body .empty-state .primary{grid-column:1/-1;margin-top:12px;display:flex;align-items:center;justify-content:center;min-height:46px;width:100%}
@media(min-width:641px){html body .empty-state{grid-template-columns:44px 1fr auto;max-width:720px}html body .empty-state .primary{grid-column:auto;grid-row:1;margin:0;width:auto;padding:0 22px}}
html body .empty-aside{margin-top:6px}

/* ---------- Discover: filter row ---------- */
html body .filter-row{display:grid;grid-template-columns:minmax(0,1fr) 46px;gap:8px;align-items:center;padding:0;margin:0 0 14px;background:none;border:0;box-shadow:none}
html body .filter-scroll{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding:2px;margin:-2px;-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent);mask-image:linear-gradient(90deg,#000 88%,transparent)}
html body .filter-scroll::-webkit-scrollbar{display:none}
html body .filter-row label{flex:0 0 auto;margin:0;font-size:0;min-width:0}
html body .filter-row input,html body .filter-row select{min-height:44px;height:44px;margin:0;border:1px solid var(--xs-line-strong);border-radius:999px;background-color:var(--xs-surface);padding:0 30px 0 14px;font-size:var(--xs-fs-sm);color:var(--xs-ink);width:auto}
html body .filter-row .filter-city input{width:86px;padding:0 14px}
html body .filter-row label.is-set select{border-color:var(--xs-primary);background-color:var(--xs-primary-soft);font-weight:600}
html body .filter-row .filter-go{grid-column:auto!important;width:46px;min-width:46px;height:46px;min-height:46px;padding:0;border-radius:50%;display:grid;place-items:center}
html body .filter-go svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
@media(min-width:900px){html body .filter-scroll{-webkit-mask-image:none;mask-image:none}}

/* ---------- Discover: person rows ---------- */
html body .people-grid{display:grid;grid-template-columns:1fr;gap:10px}
@media(min-width:900px){html body .people-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}}
html body .people-count{grid-column:1/-1;margin:0 0 2px;font-size:var(--xs-fs-xs);color:var(--xs-muted)}
html body .person-card{position:relative;display:grid;grid-template-columns:58px minmax(0,1fr) auto;gap:0 14px;align-items:center;padding:14px 14px 14px 12px;border:1px solid var(--xs-line);border-radius:16px;background:var(--xs-surface);box-shadow:none;overflow:visible}
html body .person-card:hover{box-shadow:var(--xs-shadow-md)}
html body .person-card .person-stem{width:58px;height:66px;border-radius:12px;background:var(--xs-el-soft);color:var(--xs-el);display:flex;flex-direction:column;align-items:center;justify-content:center;font:600 36px/1 var(--xs-serif);align-self:start}
html body .person-card .person-stem small{font:600 11px/1 var(--xs-sans);margin-top:5px;letter-spacing:1px}
html body .person-main{min-width:0}
html body .person-name{display:flex;align-items:baseline;gap:8px;min-width:0}
html body .person-name h2{margin:0;font:600 19px/1.3 var(--xs-serif);color:var(--xs-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html body .person-status{flex:none;font-size:11px;font-weight:600;color:var(--xs-el);background:var(--xs-el-soft);border-radius:999px;padding:2px 8px}
html body .person-meta{margin:2px 0 0;font-size:var(--xs-fs-sm);color:var(--xs-ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html body .person-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:7px}
html body .person-chips span{font-size:var(--xs-fs-xs);line-height:1;padding:5px 8px;border-radius:6px;background:var(--xs-surface-2);color:var(--xs-ink-2);font-weight:500}
html body .person-chips .chip-purpose{background:none;border:1px solid var(--xs-el);color:var(--xs-el)}
html body .person-chips .chip-verified{background:var(--xs-primary);color:#fff}
html body .person-hobby{display:flex;align-items:center;gap:6px;margin:7px 0 0;font-size:var(--xs-fs-sm);color:var(--xs-ink-2)}
html body .person-hobby svg{width:16px;height:16px;flex:none;fill:none;stroke:var(--xs-el);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
html body .person-hobby span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html body .person-card .person-open{min-height:44px;min-width:0;padding:0 14px;border-radius:999px;font-size:var(--xs-fs-sm);font-weight:600;border-color:var(--xs-el);color:var(--xs-el);background:var(--xs-surface);white-space:nowrap}
/* whole row is tappable; the button stays the accessible control */
html body .person-card .person-open::after{content:"";position:absolute;inset:0;border-radius:16px}
html body .person-card .person-open:focus-visible{outline:2px solid var(--xs-focus);outline-offset:2px}

/* ---------- Connections ---------- */
html body .connection-list{display:grid;gap:10px}
html body .connection-item{display:block;padding:14px;border:1px solid var(--xs-line);border-radius:16px;background:var(--xs-surface)}
html body .conn-row{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:12px;align-items:center}
html body .conn-stem{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--xs-el-soft);color:var(--xs-el);font:600 22px/1 var(--xs-serif)}
html body .conn-name{display:flex;align-items:baseline;gap:8px;min-width:0}
html body .conn-name h3{margin:0;font:600 var(--xs-fs-md)/1.3 var(--xs-serif);color:var(--xs-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html body .connection-item .connection-status{flex:none;font-size:11px!important;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--xs-surface-2);color:var(--xs-ink-2)}
html body .connection-item[data-status=accepted] .connection-status{background:var(--xs-primary-soft);color:var(--xs-primary)}
html body .connection-item[data-status=pending] .connection-status{background:#f6e9d2;color:#7a4f0e}
html body .conn-meta{margin:2px 0 0;font-size:var(--xs-fs-sm);color:var(--xs-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html body .conn-open{min-height:44px;padding:0 4px;font-size:var(--xs-fs-sm);color:var(--xs-primary)}
html body .conn-contact{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;padding:10px 10px 10px 14px;border-radius:12px;background:var(--xs-sage);border:1px solid var(--xs-sage-line)}
html body .conn-contact span{display:block;font-size:var(--xs-fs-xs);color:var(--xs-muted)}
html body .conn-contact strong{display:block;font:600 20px/1.3 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--xs-ink);letter-spacing:.5px;word-break:break-all;user-select:all}
html body .conn-copy{flex:none;min-height:44px;padding:0 20px;font-size:var(--xs-fs-sm)}
html body .conn-note{margin:10px 0 0;font-size:var(--xs-fs-sm);color:var(--xs-muted)}
html body .connection-item .connection-actions{display:flex;gap:8px;margin-top:12px;justify-content:flex-end}
html body .connection-item .connection-actions .primary,html body .connection-item .connection-actions .secondary{min-height:44px;flex:1;max-width:180px;font-size:var(--xs-fs-sm)}
html body .connection-item .connection-actions .text-button{min-height:44px;color:var(--xs-muted)}
html body .conn-more{margin-top:8px;border-top:1px solid var(--xs-line)}
html body .conn-more>summary{min-height:44px;display:flex;align-items:center;font-size:var(--xs-fs-sm);color:var(--xs-muted);cursor:pointer;list-style:none}
html body .conn-more>summary::-webkit-details-marker{display:none}
html body .conn-more>summary::after{content:"";width:7px;height:7px;margin-left:8px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px)}
html body .conn-more[open]>summary::after{transform:rotate(-135deg)}
html body .conn-more-body{display:grid;gap:8px;padding-bottom:4px}
html body .conn-more-body .feedback-form{display:grid;grid-template-columns:1fr auto;gap:8px;margin:0}
html body .conn-more-body .feedback-form select{min-height:44px;margin:0}
html body .conn-more-body .danger-button{justify-self:start;color:var(--xs-danger);border:0;background:none}
html body .conn-more-body .fine-print{margin:0}
html body .own-reports{padding:0 16px;border-radius:16px;box-shadow:none;background:none;border:1px solid var(--xs-line)}
html body .own-reports>summary{min-height:48px;display:flex;align-items:center;font-size:var(--xs-fs-sm);color:var(--xs-muted)}

/* ---------- Start (#start) ---------- */
html body .landing-v9{display:block;max-width:560px;padding:20px 20px 4px!important;margin:0 auto}
html body .landing-v9 .hero-copy h1{font:700 clamp(36px,10.5vw,52px)/1.15 var(--xs-serif);margin:6px 0 10px;letter-spacing:1px;color:var(--xs-ink)}
html body .landing-v9 .hero-copy h1 .hero-title-line{white-space:nowrap}
html body .landing-v9 .lead{font-size:var(--xs-fs-md);line-height:1.55;color:var(--xs-ink-2);margin:0 0 18px}
html body .landing-v9 .birth-box{margin:0;padding:18px 16px;border-radius:16px;border:1px solid var(--xs-line);background:var(--xs-surface);box-shadow:var(--xs-shadow-sm);max-width:none}
html body .landing-v9 .birth-box .fine-print{margin:10px 0 0;font-size:var(--xs-fs-xs);line-height:1.6;color:var(--xs-muted)}
html body .landing-v9 .birth-box>.primary{min-height:52px;font-size:var(--xs-fs-md);padding:0 16px;margin-top:6px}
html body .landing-v9 .intake-entry{display:flex;flex-wrap:wrap;gap:0 18px;margin:8px 0 0}
html body .landing-v9 .intake-entry .text-button{font-size:var(--xs-fs-sm);color:var(--xs-ink-2);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--xs-line-strong)}
html body .landing-samples{max-width:1120px;margin:0 auto;padding:22px 0 24px}
html body .landing-samples .sample-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;max-width:none;margin:0 20px 12px;padding-top:18px;border-top:1px solid var(--xs-line)}
html body .landing-samples .sample-heading h2{margin:0;font:600 var(--xs-fs-lg)/1.35 var(--xs-serif);color:var(--xs-ink)}
html body .landing-samples .sample-heading .text-button{flex:none;font-size:var(--xs-fs-sm)}
html body .landing-samples .sample-grid{display:grid;grid-auto-flow:column;grid-auto-columns:82%;grid-template-columns:none;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding:0 20px 6px;scroll-padding:0 20px;scrollbar-width:none}
html body .landing-samples .sample-grid::-webkit-scrollbar{display:none}
html body .landing-samples .sample-card{scroll-snap-align:start;padding:18px;border-radius:16px;border-color:var(--xs-line)}
html body .landing-samples .sample-note{margin:8px 20px 0;font-size:var(--xs-fs-xs);color:var(--xs-muted);display:flex;flex-wrap:wrap;align-items:center;gap:0 12px}
html body .landing-samples .sample-note .text-button{font-size:var(--xs-fs-sm);font-weight:600}
@media(min-width:900px){
  html body .landing-v9{padding-top:48px}
  html body .landing-samples .sample-grid{grid-auto-flow:row;grid-template-columns:repeat(3,minmax(0,1fr));overflow:visible}
}

/* ---------- Result (#result) ---------- */
html body .result-wrap .reading-card{padding:22px;border-radius:16px;background:var(--xs-el-soft);border-color:var(--xs-sage-line)}
html body .result-wrap .reading-card .day-master{font-size:96px;margin:0;color:var(--xs-el)}
html body .result-wrap .reading-card .tags{margin:12px 0 4px}
html body .result-directions{padding:20px}
html body .result-directions h2{font:600 var(--xs-fs-lg)/1.35 var(--xs-serif);margin:0 0 6px}
html body .result-directions .direction{padding:12px 0;border-top:1px solid var(--xs-line)}
html body .result-directions .direction p{margin:4px 0 0;font-size:var(--xs-fs-sm);line-height:1.6}
html body .result-directions>.fine-print{margin:10px 0 0;font-size:var(--xs-fs-xs);color:var(--xs-muted)}
html body .result-next{display:flex;flex-wrap:wrap;align-items:center;gap:6px 18px;margin:18px 0 0}
html body .result-next .primary{min-height:52px;padding:0 28px;display:inline-flex;align-items:center;justify-content:center}
@media(max-width:640px){html body .result-next .primary{width:100%}}
html body .private-zodiac-reason{margin-top:14px;padding:0 18px;border-radius:16px;box-shadow:none}
html body .private-zodiac-reason>summary{min-height:52px;display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;font-size:var(--xs-fs-sm);color:var(--xs-ink-2);cursor:pointer}
html body .private-zodiac-reason>summary span{font-size:var(--xs-fs-xs);color:var(--xs-muted);margin-left:auto}
html body .private-zodiac-reason p{font-size:var(--xs-fs-sm);line-height:1.6;margin:0 0 10px}

/* ---------- Poster (#daycard / #poster) ---------- */
html body .poster-settings{border-radius:16px;box-shadow:none}
html body .poster-links{display:flex;flex-wrap:wrap;gap:0 18px;margin-top:6px}
html body .poster-follow{margin-top:28px}
html body .poster-follow .follow-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding-top:16px;border-top:1px solid var(--xs-line)}
html body .poster-follow h2{margin:0;font:600 var(--xs-fs-lg)/1.35 var(--xs-serif);color:var(--xs-ink)}
html body .poster-follow .follow-basis{margin:2px 0 12px;font-size:var(--xs-fs-sm);color:var(--xs-muted)}
html body .poster-follow .next-step{display:grid;gap:14px;padding:18px;border-radius:16px;background:var(--xs-sage);border:1px solid var(--xs-sage-line)}
html body .poster-follow .next-step p{margin:4px 0 0;font-size:var(--xs-fs-sm);line-height:1.6;color:var(--xs-ink-2)}
html body .poster-follow .next-step .primary{min-height:50px;display:flex;align-items:center;justify-content:center}
html body .poster-follow .next-aside{display:flex;flex-wrap:wrap;gap:0 18px;margin:6px 0 0}
@media(min-width:641px){html body .poster-follow .next-step{grid-template-columns:1fr auto;align-items:center}html body .poster-follow .next-step .primary{padding:0 26px}}

/* ---------- Mobile ---------- */
@media(max-width:640px){
  html body .site-header{height:60px;padding:0 16px}
  html body .brand{font-size:24px}
  html body .account-button{min-height:40px;padding:6px 14px;font-size:var(--xs-fs-sm)}
  html body .site-header nav{height:calc(60px + env(safe-area-inset-bottom));background:rgba(255,254,251,.96);border-top:1px solid var(--xs-line)}
  html body .site-header nav a{flex:1;flex-direction:column;justify-content:center;gap:3px;padding:6px 0 4px;font-size:11px;font-weight:500;color:var(--xs-muted);border:0!important;min-height:52px}
  html body .site-header nav a::before{content:"";width:22px;height:22px;background:currentColor;-webkit-mask:var(--nav-icon) center/contain no-repeat;mask:var(--nav-icon) center/contain no-repeat}
  html body .site-header nav a[aria-current]{color:var(--xs-primary);font-weight:700}
  html body .site-header nav a:nth-child(1){--nav-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='6.5'/%3E%3Cpath d='M16 16l4.5 4.5'/%3E%3C/svg%3E")}
  html body .site-header nav a:nth-child(2){--nav-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6h16v10H9l-5 4z'/%3E%3C/svg%3E")}
  html body .site-header nav a:nth-child(3){--nav-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Ccircle cx='9' cy='11' r='2.3'/%3E%3Cpath d='M14 10h4M14 14h3'/%3E%3C/svg%3E")}
  html body .site-header nav a:nth-child(4){--nav-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round'%3E%3Ccircle cx='8.5' cy='9' r='3'/%3E%3Ccircle cx='15.5' cy='9' r='3'/%3E%3Cpath d='M3 19c.8-3 3-4.5 5.5-4.5S13.2 16 14 19M13 15c.8-.4 1.6-.5 2.5-.5 2.5 0 4.7 1.5 5.5 4.5'/%3E%3C/svg%3E")}
  html body .site-header nav a:nth-child(n+5){--nav-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7'%3E%3Ccircle cx='12' cy='12' r='8'/%3E%3C/svg%3E")}
  html body .site-header nav a #inbox-count,html body .site-header nav a span{position:absolute;margin:-30px 0 0 26px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--xs-fire);color:#fff;font-size:10px;line-height:16px;text-align:center}
  html body .site-header nav a{position:relative}
  html body .page-wrap{padding:16px 16px 96px}
  html body .page-heading h1{font-size:28px}
  html body .site-footer{margin:0 16px;padding-bottom:calc(84px + env(safe-area-inset-bottom))}
  html body .site-footer>span:last-child{margin-left:0;flex-basis:100%}
  html body .landing-samples{padding-bottom:8px}
  html body .result-wrap .reading-card .day-master{font-size:80px}
}
@media(prefers-reduced-motion:reduce){html body .person-card{transition:none}}
/* contact row fixes */
html body .conn-contact>div{flex:1 1 auto;min-width:0}
html body .conn-contact .conn-copy{width:auto!important;flex:0 0 auto!important;margin:0!important}
html body .connection-item .connection-actions :is(.primary,.secondary){display:flex;align-items:center;justify-content:center;margin:0}
html body .filter-row,html body .filter-scroll{min-width:0;max-width:100%}
html body .filter-scroll{position:relative}html body .filter-scroll label{position:relative}

/* ---------- review-fix r1 (1106) ---------- */
/* tap targets >=44px for small inline links */
html body .xsm-quota a,html body .xsm-upsell a,html body .xsm-views .text-button,html body .empty-aside .text-button,html body .conn-group-empty .text-button{display:inline-flex;align-items:center;min-height:44px}
html body .xsm-soon{color:var(--xs-muted);font-weight:600}
/* #discover filters: wrap instead of clipping 星座/MBTI */
html body .filter-row{align-items:start}
html body .filter-scroll{flex-wrap:wrap;overflow:visible;-webkit-mask-image:none;mask-image:none}
html body .filter-row .filter-scroll label{flex:1 1 84px}
html body .filter-row .filter-scroll select,html body .filter-row .filter-city input{width:100%}
/* member bar hierarchy */
html body .xsm-views{padding:10px 14px;border:1px solid var(--xs-line);border-radius:var(--xs-r-md);background:var(--xs-surface)}
html body .xsm-views p{font-size:var(--xs-fs-base);color:var(--xs-ink)}
html body .xsm-views p b{font:700 22px/1 var(--xs-serif);margin:0 2px}
html body .xsm-upsell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* #hello deck: per-card source label */
html body .onb-badge.is-real{background:var(--xs-primary-soft);border-color:var(--xs-primary);color:var(--xs-primary);font-weight:600}
/* celeb line: 看全部 as its own link */
html body .celeb-line{display:flex;flex-wrap:wrap;align-items:center;column-gap:12px}
html body .celeb-line .celeb-names{flex:1 1 auto;min-width:0}
html body .celeb-line .celeb-more{margin-left:auto;white-space:nowrap}
/* #connections groups */
html body .conn-groups{display:grid;gap:22px}
html body .conn-group-title{display:flex;align-items:center;gap:8px;margin:0 0 10px;font:600 18px/1.3 var(--xs-serif);color:var(--xs-ink)}
html body .conn-group-count{min-width:22px;height:22px;padding:0 7px;border-radius:999px;background:var(--xs-primary-soft);color:var(--xs-primary);font-size:12px;line-height:22px;font-family:inherit;text-align:center}
html body .conn-group-empty{margin:0;padding:12px 14px;border:1px dashed var(--xs-line-strong);border-radius:var(--xs-r-md);font-size:var(--xs-fs-sm);color:var(--xs-muted);display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px}
html body .conn-safety{margin-top:22px}
html body .conn-safety .own-reports{margin-top:10px}
/* detail dialog: already connected */
html body .ps-cta.is-connected .ps-apply{display:flex;align-items:center;justify-content:center;gap:6px;text-decoration:none}
/* collection legend */
html body .xc-legend{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin-top:8px!important;font-size:var(--xs-fs-xs)!important}
html body .xc-legend-lit,html body .xc-legend-off{display:inline-block;width:12px;height:12px;border-radius:3px;background:var(--c,var(--xs-primary))}
html body .xc-legend-off{background:var(--xs-surface-2);border:1px solid var(--xs-line-strong);margin-left:6px}
/* r2: header tap targets ≥44px */
html body .site-header .brand{display:inline-flex;align-items:center;min-height:44px}
html body .site-header .account-button,html body .account-button{min-height:44px}
/* r2: discover — city + 日主 visible, the rest behind 更多筛选 */
html body .filter-row .filter-more-toggle{flex:0 0 auto;width:auto;min-width:0;min-height:44px;height:44px;padding:0 16px;border-radius:999px;font-size:var(--xs-fs-sm);white-space:nowrap;grid-column:auto}
html body .filter-row .filter-go{grid-row:1;grid-column:2!important}html body .filter-row .filter-more{grid-row:2;grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px}
html body .filter-row .filter-more[hidden]{display:none}
html body .filter-row .filter-more label{flex:1 1 84px;margin:0;font-size:0;min-width:0}
html body .filter-row .filter-more select{width:100%}
/* r2: 认真相亲页 — 去选认识目的 */
html body .pe-goto-purpose{display:inline-flex;align-items:center;justify-content:center;min-height:44px;margin-top:8px;padding:0 18px;border-radius:999px;font-size:var(--xs-fs-sm)}
html body .pe-inline-msg>span{display:block}
/* r3: birth-form check rows are full-row tap targets (≥44px) */
.birth-box .check-line{display:flex;align-items:center;gap:10px;min-height:44px;cursor:pointer}
.birth-box .check-line input[type=checkbox]{width:20px;height:20px;flex:none;margin:0}
/* r3: celeb names flow as text (no 44px inline-flex boxes breaking lines); 看全部 keeps its tap height */
html body .celeb-line{padding:6px 16px}
html body .celeb-line .celeb-names{flex:1 1 100%;line-height:2}
html body .celeb-line .celeb-names a{display:inline;min-height:0;padding:10px 0;white-space:nowrap}
html body .celeb-line .celeb-more{display:inline-flex;min-height:var(--xs-tap)}
