/* COMPONENTS — cards, chips, tags, ratings & reviews, sheets, toast, floating buttons, tables. Used on many pages. */

/* cards */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:18px}.g3{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.card{position:relative;background:#fff;border-radius:20px;overflow:hidden;box-shadow:0 2px 12px #0001;transition:.3s;min-width:0}.card:hover{transform:translateY(-6px);box-shadow:0 18px 36px #0002}
.im{position:relative;display:block;aspect-ratio:4/3;overflow:hidden}.im a{display:block;height:100%}.im img{width:100%;height:100%;object-fit:cover;transition:.5s}.card:hover .im img{transform:scale(1.08)}
.tag{position:absolute;top:10px;padding:4px 10px;border-radius:99px;font-size:11px;font-weight:700;color:#fff}.tag.t{left:10px;background:#14b8a6e6}.tag.r{right:10px;background:#000a}.tag.inl{position:static;display:inline-block}
.sv{position:absolute;right:10px;bottom:10px;width:38px;height:38px;border-radius:50%;border:0;background:#fffe;color:#9ca3af;font-size:18px;cursor:pointer;display:grid;place-items:center;transition:.2s;padding:0}.sv.on{color:#ef4444;transform:scale(1.1)}
.bd{padding:14px}.bd h3{font-size:16px;overflow-wrap:anywhere}.bd h3 a:hover{color:var(--o2)}.pr{color:var(--o2);font-weight:600;font-size:14px}
.row{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.row .btn{flex:1 1 auto;padding:9px 12px;white-space:nowrap}
.exs{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.ex{font-size:12px;background:var(--o3);color:#9a3412;padding:3px 9px;border-radius:99px}
.pill{font-size:11px;font-weight:700;background:var(--ink);color:#fff;padding:2px 8px;border-radius:99px;vertical-align:middle}

/* chips */
.chips{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0 26px}.chip{padding:9px 16px;border-radius:99px;background:#fff;box-shadow:0 0 0 1px var(--line);font-size:14px;font-weight:500;border:0;cursor:pointer;color:var(--ink);transition:.2s}.chip:hover{box-shadow:0 0 0 1.5px var(--o)}.chip.on{background:var(--ink);color:#fff}

/* ratings & reviews */
.stc{color:#f59e0b;letter-spacing:1px}.rt{margin:6px 0}
.reviews{margin-top:34px}
.rsum{display:grid;grid-template-columns:auto 1fr;gap:24px;align-items:center;background:#fff;border-radius:20px;padding:20px 24px;margin-bottom:16px;box-shadow:0 2px 12px #0001}
.rsum-n{display:grid;justify-items:center;gap:2px}.rsum-n b{font:800 44px/1 Sora,sans-serif;color:var(--o)}.rsum-n small{color:var(--mu)}
.rsum-bars{display:grid;gap:5px;min-width:0}.rsum-bars div{display:grid;grid-template-columns:28px 1fr 28px;gap:8px;align-items:center;font-size:12px;color:var(--mu)}
.rsum-bars i{display:block;height:8px;border-radius:99px;background:#f3f4f6;overflow:hidden}.rsum-bars em{display:block;height:100%;background:linear-gradient(90deg,#f59e0b,var(--o));border-radius:99px}
.rf{display:grid;gap:12px;background:#fff;padding:20px;border-radius:20px;margin-bottom:16px;box-shadow:0 2px 12px #0001}
.rf h3{font-size:17px}.rf select,.rf textarea{width:100%;padding:11px;border:1.5px solid var(--line);border-radius:12px;font-size:16px}
.rf textarea:focus{border-color:var(--o);outline:0;box-shadow:0 0 0 4px #f9731622}
.starpick{border:0;margin:0;padding:0;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.stars-in{display:inline-flex;flex-direction:row-reverse;justify-content:flex-end}
.stars-in input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.stars-in label{font-size:38px;line-height:1;color:#d1d5db;cursor:pointer;padding:0 2px;transition:color .15s,transform .15s}
.stars-in label:hover{transform:scale(1.15)}
.stars-in input:checked~label,.stars-in label:hover,.stars-in label:hover~label{color:#f59e0b}
.stars-in input:focus-visible+label{outline:3px solid #f9731666;border-radius:8px}
.star-cap{font-weight:600;color:var(--o2);min-width:90px}
.tagpicks{display:flex;flex-wrap:wrap;gap:8px}.tagpick{position:relative;font-size:13px;font-weight:500;color:var(--ink);cursor:pointer}
.tagpick input{position:absolute;opacity:0;pointer-events:none}
.tagpick span{display:inline-block;padding:7px 13px;border-radius:99px;background:#f3f4f6;transition:.2s}
.tagpick:hover span{background:var(--o3)}.tagpick input:checked+span{background:var(--o);color:#fff}
.tagpick input:focus-visible+span{outline:3px solid #f9731666}
.rvw{background:#fff;border-radius:16px;padding:14px 16px;margin-bottom:10px;box-shadow:0 1px 8px #0001}.rvw p{margin:6px 0 0}.rvw-h{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.rate-link{display:inline-block;margin-top:4px;font-size:13px;font-weight:600;color:var(--o2)}.rate-link:hover{text-decoration:underline}

/* sheets, floating buttons, toast */
#sosb,#enb{position:fixed;bottom:calc(16px + env(safe-area-inset-bottom));z-index:40;border:0;border-radius:99px;padding:14px 20px;font:700 15px Inter,sans-serif;color:#fff;cursor:pointer}
#sosb{right:16px;background:#dc2626;box-shadow:0 8px 24px #dc262680;animation:pu 2s infinite}#enb{left:16px;background:var(--t);box-shadow:0 8px 24px #14b8a680}#enb[hidden]{display:none}
#sosm,#enm{position:fixed;inset:0;z-index:70;background:#000a;display:grid;place-items:center;padding:16px}#sosm[hidden],#enm[hidden]{display:none}
.sheet{position:relative;background:#fff;width:100%;max-width:460px;max-height:90vh;overflow:auto;border-radius:26px;padding:26px;animation:up .35s}.sheet .x{position:absolute;right:12px;top:8px;font-size:28px;line-height:1;background:none;border:0;cursor:pointer}.sheet .btn{width:100%;margin-top:12px}
#enl{list-style:none;padding:0;margin:10px 0}#enl li{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid #f3f4f6;font-size:14px}#enl small{color:var(--mu);display:block}#enl button{background:none;border:0;cursor:pointer;color:#9ca3af;font-size:16px}
.fg{display:grid;grid-template-columns:1fr 1fr;gap:8px}.fg input,#enx{width:100%;padding:11px;border:1.5px solid var(--line);border-radius:12px;font-size:16px}#enx{margin:8px 0}
.ct{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}.ct b{flex:1;min-width:120px}.sheet .ct .btn{width:auto;margin:0}
#toast{position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom));transform:translate(-50%,30px);background:var(--ink);color:#fff;padding:12px 18px;border-radius:14px;opacity:0;pointer-events:none;transition:.3s;z-index:90;font-size:14px;max-width:90vw}#toast.show{opacity:1;transform:translate(-50%,0);pointer-events:auto}#toast a{color:#fdba74;font-weight:700}

/* admin SOS alarm bar (shown to admins on every page) */
.alarm{display:block;background:#dc2626;color:#fff;text-align:center;padding:10px;font-weight:700;position:fixed;top:0;left:0;right:0;z-index:80;animation:pu 1s infinite}.alarm[hidden]{display:none}

/* tables & status */
.ts{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-bottom:10px}table{width:100%;min-width:480px;background:#fff;border-radius:14px;border-collapse:collapse;overflow:hidden}td,th{padding:12px;border-bottom:1px solid #f3f4f6;vertical-align:top}th{text-align:left;font-size:12px;color:var(--mu)}.nw{white-space:nowrap}tr.hot{background:#fef2f2}
.st{padding:3px 10px;border-radius:99px;font-size:12px;font-weight:700;background:var(--line)}.st.approved{background:#d1fae5;color:#047857}.st.pending{background:#fef3c7;color:#b45309}.st.rejected{background:#fee2e2;color:#b91c1c}

@media(max-width:700px){
 .grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.g3{grid-template-columns:1fr}
 .bd{padding:12px}.bd h3{font-size:15px}.card .row .btn{flex:1 1 100%;white-space:normal}
 .chips{gap:6px}.chip{padding:8px 13px;font-size:13px}
 .rsum{grid-template-columns:1fr;gap:14px;padding:16px}.rsum-n{grid-template-columns:auto auto;justify-content:start;align-items:center;gap:4px 12px}.rsum-n small{grid-column:1/-1}
 .stars-in label{font-size:42px;padding:0 3px}
 .fg{grid-template-columns:1fr}
 #sosb,#enb{padding:12px 16px;font-size:14px}
 #sosm,#enm{place-items:end center;padding:0}.sheet{border-radius:26px 26px 0 0;max-width:none;padding:24px 20px calc(24px + env(safe-area-inset-bottom))}
}
@media(max-width:400px){.grid{grid-template-columns:1fr}}
