/* Mouse finder. A centred composer on an empty page that docks to the bottom of a message column after
   the first send; questions are bubbles, the finder's replies are plain text in the column. Loaded only
   on /recommend/, so the .document-page and footer overrides below are page-local. The star component
   lives in community.css; only its size is adjusted here. */

.document-page{margin-top:22px;line-height:1.55}
.document-page>footer{margin-top:34px}

.finder{
 --column:760px;--card:color-mix(in srgb,var(--surface-2) 60%,var(--surface));
 max-width:var(--column);margin:0 auto;min-height:calc(100dvh - 126px);
 display:flex;flex-direction:column;justify-content:center
}
:root.is-thread .finder{justify-content:flex-start}

/* ---------- Empty-state heading. It collapses instead of unmounting, so the h1 stays in the outline. */
.finder-title{
 font-family:var(--display);font-weight:700;letter-spacing:-.01em;line-height:1.06;text-align:center;
 font-size:clamp(30px,5vw,50px);max-height:200px;margin:0 0 26px;
 transition:opacity .22s var(--ease-out),max-height .34s var(--ease-out),margin .34s var(--ease-out),transform .3s var(--ease-out)
}
:root.is-thread .finder-title{opacity:0;max-height:0;margin:0;transform:translateY(-10px);overflow:hidden;pointer-events:none}

/* ---------- Thread ---------- */
.finder-thread{display:flex;flex-direction:column;gap:30px;min-width:0;padding:0}
.finder-thread:empty{display:none}
:root.is-thread .finder-thread{flex:1 1 auto;padding:6px 0 20px}
.msg{min-width:0;scroll-margin-top:84px;animation:finder-rise .3s var(--ease-out) both}
.msg-you{display:flex;justify-content:flex-end}
.msg-you .bubble{background:var(--surface-2);border-radius:18px;padding:11px 17px;max-width:min(560px,86%);font-size:15.5px;line-height:1.55;overflow-wrap:anywhere}
.reply-text{font-size:16.5px;line-height:1.65;overflow-wrap:anywhere}
.reply-text+.reply-text{margin-top:10px}
.reply-mark{
 display:inline-grid;place-items:center;width:23px;height:23px;border-radius:7px;margin-right:9px;vertical-align:-5px;
 background:color-mix(in srgb,var(--accent) 14%,var(--surface));color:var(--accent);
 box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 22%,transparent)
}
.reply-mark svg{width:13px;height:13px;fill:currentColor;stroke:none}
@keyframes finder-rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

.typing{display:inline-flex;gap:5px;align-items:center;vertical-align:middle;height:23px}
.typing span{width:7px;height:7px;border-radius:50%;background:var(--muted);animation:finder-dot 1.15s var(--ease-out) infinite}
.typing span:nth-child(2){animation-delay:.15s}
.typing span:nth-child(3){animation-delay:.3s}
@keyframes finder-dot{0%,60%,100%{opacity:.25;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}

/* ---------- Product carousel ---------- */
.carousel{position:relative;margin:18px 0 0}
.carousel-track{display:flex;gap:10px;list-style:none;margin:0;padding:4px 2px 14px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:2px;overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}
.carousel-track::-webkit-scrollbar{height:6px}
.carousel-track::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:99px}
.carousel-nav{position:absolute;top:50px;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--surface);color:var(--ink);box-shadow:0 3px 12px rgba(20,22,26,.18),inset 0 0 0 1px var(--line-strong);opacity:0;transition:opacity .15s,background .15s;z-index:2}
.carousel-nav svg{width:17px;height:17px}
.carousel-nav.prev{left:5px}
.carousel-nav.prev svg{transform:rotate(180deg)}
.carousel-nav.next{right:5px}
.carousel-nav:hover{background:var(--surface-2)}
.carousel:hover .carousel-nav,.carousel-nav:focus-visible{opacity:1}
@media (hover:none){.carousel-nav{display:none}}

.pcard{flex:0 0 220px;width:220px;scroll-snap-align:start;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;transition:border-color .15s,box-shadow .15s,transform .15s var(--ease-out)}
.pcard:hover{border-color:var(--line-strong);box-shadow:0 6px 18px rgba(20,22,26,.09);transform:translateY(-2px)}
.pcard:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/* The image cap must be a length: a percentage height does not resolve against a centred grid item,
   so the photo would spill out of the plate and over the card text. */
.pcard-plate{--plate:126px;--plate-pad:14px;height:var(--plate);background:var(--photo);display:grid;place-items:center;padding:var(--plate-pad);overflow:hidden}
.pcard-plate img{width:100%;max-height:calc(var(--plate) - var(--plate-pad) * 2);object-fit:contain}
.pcard-plate .monogram{font-size:24px}
.pcard-body{flex:1 1 auto;min-width:0;padding:12px 14px 0;display:flex;flex-direction:column;gap:6px}
.pcard-brand{font-size:12px;color:var(--muted);line-height:1.2}
.pcard-name{font-family:var(--display);font-size:21px;font-weight:700;line-height:1.1;margin:0;overflow-wrap:anywhere}
.pcard-rating{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.pcard-rating .star{width:14px;height:14px;flex-basis:14px}
.pcard-reason{font-size:13px;line-height:1.5;color:var(--ink);margin:1px 0 0}
.pcard-specs{display:flex;flex-wrap:nowrap;gap:6px;list-style:none;margin:auto 0 0;padding:12px 0 0}
.pcard-specs li{font-size:11.5px;line-height:1;padding:5px 9px;border-radius:999px;background:var(--surface);color:var(--muted);box-shadow:inset 0 0 0 1px var(--line);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pcard-specs li:first-child{flex:0 0 auto}
.pcard-specs li+li{flex:0 1 auto;min-width:0}
.pcard-actions{display:flex;gap:8px;padding:12px 14px 14px}
.pcard-actions .button{flex:1 1 0;min-height:34px;padding:0 10px;font-size:13px;text-decoration:none}
.pcard-actions .button.primary{gap:5px}
.pcard-actions .button svg{width:14px;height:14px;flex-shrink:0}
.pcard-actions [data-shop] svg{transform:rotate(90deg)}

/* ---------- Reply extras ---------- */
.finder-fine{font-size:11.5px;line-height:1.5;color:var(--muted);margin:2px 0 0}
.finder-warnings{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:7px;font-size:13.5px;line-height:1.5;color:var(--muted)}
.finder-warnings li{display:flex;gap:7px;align-items:flex-start}
.finder-warnings svg{width:15px;height:15px;flex-shrink:0;margin-top:3px}
.reply-gate{margin-top:16px}
.reply-gate .button{text-decoration:none}
.reply-actions{display:flex;flex-wrap:wrap;gap:2px;margin:16px 0 0 -9px}
.reply-action{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:var(--muted);padding:6px 9px;border-radius:8px;transition:background .15s,color .15s}
.reply-action:hover{background:var(--surface-2);color:var(--ink)}
.reply-action[aria-expanded="true"]{background:var(--surface-2);color:var(--ink)}
.reply-action svg{width:15px;height:15px;flex-shrink:0}
.reply-filters{margin-top:10px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--surface);font-size:12.5px;line-height:1.6;color:var(--muted);display:grid;gap:8px}
.finder-retry{margin-top:12px}

/* ---------- Composer ---------- */
.composer{width:100%;max-width:720px;margin:0 auto;transition:max-width .32s var(--ease-out)}
:root.is-thread .composer{max-width:var(--column);position:sticky;bottom:0;z-index:6;background:var(--ground);padding-bottom:calc(10px + env(safe-area-inset-bottom,0px))}
:root.is-thread .composer::before{content:"";position:absolute;left:0;right:0;bottom:100%;height:28px;background:linear-gradient(to top,var(--ground),transparent);pointer-events:none}
.composer-form{display:flex;align-items:flex-end;gap:8px;background:var(--surface);border:1px solid var(--line-strong);border-radius:24px;padding:5px 5px 5px 18px;transition:border-color .16s,box-shadow .2s}
.composer-form:focus-within{border-color:var(--ink);box-shadow:0 6px 24px rgba(20,22,26,.10)}
.composer-form textarea{flex:1 1 auto;min-width:0;height:42px;min-height:0;max-height:88px;border:0;background:none;resize:none;padding:10px 0;font-size:15.5px;line-height:1.5;overflow-y:auto;scrollbar-width:thin}
.composer-form textarea:focus{outline:none}
.composer-form textarea::placeholder{color:var(--muted)}
.send{flex:0 0 38px;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:var(--on-accent);transition:background .18s,color .18s,transform .12s var(--ease-out)}
.send svg{width:18px;height:18px}
.send:hover:not(:disabled){background:var(--accent-hover)}
.send:active:not(:disabled){transform:scale(.93)}
.send:disabled{background:var(--surface-2);color:var(--muted);opacity:1}

.starters{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;padding:16px 0 0}
:root.is-thread .starters{display:none}
.chip{font-size:13px;line-height:1.2;padding:8px 14px;border-radius:999px;background:var(--surface);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line-strong);transition:background .15s,box-shadow .15s;text-align:left}
.chip:hover{background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--ink)}
.finder-signin{margin:14px auto 0;text-align:center;font-size:12.5px;color:var(--muted)}
.finder-signin a{color:var(--accent);text-underline-offset:3px}
:root.is-thread .finder-signin{text-align:left;margin:10px 0 0}
.composer-foot{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;padding-top:12px}
:root.is-thread .composer-foot{justify-content:space-between;padding-top:8px}
.composer-foot .text-button{padding:2px 4px;flex-shrink:0}

/* ---------- Shop menu ---------- */
.shop-menu{position:fixed;z-index:70;min-width:190px;max-width:min(280px,calc(100vw - 24px));padding:6px;background:var(--surface);border:1px solid var(--line-strong);border-radius:12px;box-shadow:var(--shadow);display:grid;gap:2px}
.shop-menu a{display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:8px;font-size:13.5px;font-weight:500;text-decoration:none;color:var(--ink)}
.shop-menu a:hover{background:var(--surface-2)}
.shop-menu svg{width:15px;height:15px;flex-shrink:0;color:var(--muted)}

/* ---------- Details drawer ---------- */
#finder-detail{max-width:min(720px,calc(100vw - 32px));padding:0}
#finder-detail .close-dialog{z-index:2;background:color-mix(in srgb,var(--surface) 78%,transparent);backdrop-filter:blur(4px)}
#finder-detail .rating-summary{margin:0 0 14px}
#finder-detail .no-ratings{margin:0 0 14px;font-size:14px}
.drawer-reviews{margin:20px 0 4px}
.drawer-reviews h3{margin-bottom:10px}
.drawer-reviews .review-card{background:var(--surface-2)}
.drawer-more{display:block;margin-top:10px;font-size:13px;color:var(--muted)}
.drawer-links{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}
.drawer-links .button{text-decoration:none}

@media (max-width:800px){
 .finder{min-height:calc(100dvh - 116px)}
 #finder-detail{
  position:fixed;top:auto;left:0;right:0;bottom:0;width:auto;max-width:none;margin:0;
  max-height:92vh;max-height:92dvh;overflow:hidden;
  border-radius:16px 16px 0 0;padding:0 0 env(safe-area-inset-bottom,0px)
 }
 #finder-detail[open]{display:flex;flex-direction:column}
 #finder-detail .close-dialog{top:22px}
 #finder-detail-content{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain}
 #finder-detail .detail-body{padding:20px}
}
@media (max-width:640px){
 .finder-title{font-size:clamp(26px,7.6vw,36px);margin-bottom:20px}
 .msg-you .bubble{font-size:15px}
 .reply-text{font-size:16px}
 .carousel{margin:16px -16px 0}
 .carousel-track{padding:4px 16px 12px;scroll-padding-inline:16px}
 .pcard{flex-basis:210px;width:210px}
 .starters{flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;margin:0 -16px;padding:16px 16px 2px;scrollbar-width:none}
 .starters::-webkit-scrollbar{display:none}
 .chip{white-space:nowrap}
 .composer-foot{justify-content:center;padding-top:10px}
 :root.is-thread .composer-foot{flex-direction:column;align-items:flex-start;gap:2px;padding-top:6px}
}
@media (prefers-reduced-motion:reduce){
 .typing span{animation:none;opacity:.5}
 .msg{animation:none}
 .pcard:hover{transform:none}
 .finder-title,.composer{transition:none}
 .carousel-track{scroll-behavior:auto}
}
