/* Recommended Factories — public page. Reuses the same design tokens
   (--radius-*, --shadow-card, --primary, --accent-light) as the rest of the
   site (site.css / suppliers.css) so cards look identical in style. */

.fac-main{max-width:1200px;margin:0 auto;padding:24px 20px 60px}
.fac-head{text-align:center;max-width:640px;margin:0 auto 28px}
.fac-head h1{font-size:1.5rem;font-weight:800;color:var(--text);margin:0 0 10px}
.fac-head p{font-size:.9rem;color:var(--muted);line-height:1.7;margin:0}

.fac-toolbar{display:flex;flex-direction:column;gap:12px;margin-bottom:22px}
.fac-search{position:relative}
.fac-search input{width:100%;padding:13px 44px;border:1.5px solid var(--border);border-radius:var(--radius-pill);font-size:.92rem;font-family:inherit;background:var(--white)}
.fac-search input:focus{outline:none;border-color:var(--primary)}
.fac-search svg{position:absolute;top:50%;inset-inline-start:16px;transform:translateY(-50%);width:18px;height:18px;color:var(--muted)}
.fac-tags{display:flex;flex-wrap:wrap;gap:8px}
.fac-tag-chip{padding:7px 16px;border-radius:var(--radius-pill);border:1.5px solid var(--border);background:var(--white);font-size:.8rem;font-weight:600;color:var(--muted);cursor:pointer;transition:.15s}
.fac-tag-chip:hover{border-color:var(--primary)}
.fac-tag-chip.active{background:var(--primary);border-color:var(--primary);color:#fff}

.fac-grid{display:grid;grid-template-columns:1fr;gap:16px}
@media (min-width:640px){ .fac-grid{grid-template-columns:1fr 1fr} }
@media (min-width:1024px){ .fac-grid{grid-template-columns:1fr 1fr 1fr} }

.fac-card{background:var(--white);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-card);transition:.2s;cursor:pointer;display:flex;flex-direction:column}
.fac-card:hover{box-shadow:var(--shadow-hover);transform:translateY(-2px)}
.fac-card-photo{width:100%;aspect-ratio:16/10;background:var(--bg);display:flex;align-items:center;justify-content:center;overflow:hidden}
.fac-card-photo img{width:100%;height:100%;object-fit:cover;display:block}
.fac-card-photo svg{width:36px;height:36px;color:var(--border)}
.fac-card-body{padding:16px 18px;display:flex;flex-direction:column;gap:8px;flex:1}
.fac-card-name{font-size:1.02rem;font-weight:800;color:var(--text);margin:0}
.fac-card-loc{display:flex;align-items:center;gap:5px;font-size:.78rem;color:var(--muted)}
.fac-card-loc svg{width:14px;height:14px;flex-shrink:0}
.fac-card-desc{font-size:.83rem;color:var(--muted);line-height:1.6;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.fac-card-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:8px}
.fac-tag-pill{font-size:.7rem;font-weight:700;color:var(--primary-dark);background:var(--accent-light);padding:4px 10px;border-radius:var(--radius-pill)}

.fac-empty{display:none;text-align:center;padding:56px 20px;color:var(--muted)}
.fac-empty.show{display:block}
.fac-empty svg{width:44px;height:44px;margin:0 auto 12px;opacity:.4}
.fac-skeleton{display:grid;grid-template-columns:1fr;gap:16px}
@media (min-width:640px){ .fac-skeleton{grid-template-columns:1fr 1fr} }
@media (min-width:1024px){ .fac-skeleton{grid-template-columns:1fr 1fr 1fr} }
.fac-skel-card{background:var(--white);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}
.fac-skel-photo{width:100%;aspect-ratio:16/10;background:linear-gradient(90deg,var(--bg) 25%,var(--border) 50%,var(--bg) 75%);background-size:200% 100%;animation:facShimmer 1.4s infinite}
.fac-skel-line{height:12px;margin:14px 18px;border-radius:6px;background:linear-gradient(90deg,var(--bg) 25%,var(--border) 50%,var(--bg) 75%);background-size:200% 100%;animation:facShimmer 1.4s infinite}
@keyframes facShimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}

/* ---------- Detail modal ---------- */
.fac-modal-backdrop{position:fixed;inset:0;background:rgba(6,20,40,.55);z-index:2100;display:none;align-items:flex-end;justify-content:center}
.fac-modal-backdrop.open{display:flex}
@media (min-width:768px){ .fac-modal-backdrop{align-items:center} }
.fac-modal{background:#fff;width:100%;max-width:560px;max-height:92vh;overflow-y:auto;border-radius:20px 20px 0 0}
@media (min-width:768px){ .fac-modal{border-radius:var(--radius-xl)} }
.fac-modal-photo{width:100%;aspect-ratio:16/9;background:var(--bg);overflow:hidden}
.fac-modal-photo img{width:100%;height:100%;object-fit:cover;display:block}
.fac-modal-body{padding:22px 24px 28px}
.fac-modal-close{position:sticky;top:12px;inset-inline-end:12px;margin-inline-start:auto;display:flex;width:34px;height:34px;border-radius:50%;background:rgba(6,20,40,.55);color:#fff;align-items:center;justify-content:center;border:none;cursor:pointer;font-size:1.1rem;z-index:2}
.fac-modal-name{font-size:1.25rem;font-weight:800;color:var(--text);margin:4px 0 6px}
.fac-modal-loc{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:.85rem;margin-bottom:14px}
.fac-modal-desc{font-size:.88rem;color:var(--text);line-height:1.7;margin:0 0 18px}
.fac-modal-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:18px}
.fac-modal-section{border-top:1px solid var(--bg);padding-top:16px;margin-top:6px}
.fac-modal-section h4{font-size:.85rem;font-weight:800;color:var(--text);margin:0 0 10px}
.fac-modal-row{display:flex;align-items:center;gap:10px;padding:8px 0;font-size:.86rem;color:var(--text)}
.fac-modal-row svg{width:17px;height:17px;color:var(--primary);flex-shrink:0}
.fac-modal-row a{color:var(--text);text-decoration:none}
.fac-modal-row a:hover{color:var(--primary)}
.fac-modal-copy{margin-inline-start:auto;background:none;border:none;color:var(--primary);font-size:.76rem;font-weight:700;cursor:pointer;padding:4px 8px}

.fac-lock{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:22px 14px;background:var(--bg);border-radius:var(--radius-md)}
.fac-lock svg{width:26px;height:26px;color:var(--primary)}
.fac-lock p{font-size:.84rem;color:var(--muted);margin:0}
.fac-lock button{background:var(--primary);color:#fff;border:none;border-radius:999px;padding:9px 22px;font-size:.82rem;font-weight:700;cursor:pointer}
.fac-lock button:hover{background:var(--primary-dark)}

.fac-toast{position:fixed;bottom:calc(24px + var(--safe-b));left:50%;transform:translateX(-50%) translateY(20px);background:var(--text);color:#fff;padding:10px 20px;border-radius:999px;font-size:.82rem;font-weight:600;z-index:2500;opacity:0;pointer-events:none;transition:.25s}
.fac-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
