/* Search, Beach Score, compare, swipe, deal cards, alerts, Ask. Uses the site's design tokens, with fallbacks. */
.fx-ic{width:16px;height:16px;flex:none;vertical-align:-3px}
.fx-hdr{display:contents}
.fx-hb{display:inline-flex;align-items:center;gap:6px}
.fx-hb kbd,.fx-kin kbd{font:500 11px var(--mono,ui-monospace,monospace);color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:1px 5px;background:var(--surface-2,transparent)}
.fx-hb{position:relative}
.fx-dot{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;border-radius:9px;background:var(--bad,#b23b2e);color:#fff;font:700 11px/18px var(--body);text-align:center;padding:0 5px}
@media (max-width:760px){.fx-hb span:not(.fx-dot),.fx-hb kbd{display:none}.fx-hb{padding-inline:9px}}

/* modal */
html.fx-lock{overflow:hidden}
.fx-modal{position:fixed;inset:0;z-index:3000;background:rgba(10,12,14,.55);display:flex;align-items:flex-start;justify-content:center;padding:6vh 16px 16px;overflow:auto;backdrop-filter:blur(2px)}
.fx-modal[hidden]{display:none}
.fx-box{background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:var(--r,12px);box-shadow:var(--shadow-lg,0 20px 60px rgba(0,0,0,.3));width:min(720px,100%);padding:18px 20px 20px;max-height:none}
.fx-narrow .fx-box{width:min(520px,100%)}
.fx-wide .fx-box{width:min(980px,100%)}
.fx-hd{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}
.fx-hd h2{font-family:var(--display);font-weight:500;font-size:24px;margin:0;letter-spacing:-.01em}
.fx-box h3{font:600 11px var(--body);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:18px 0 6px}
.fx-iconx{background:none;border:0;color:var(--muted);cursor:pointer;padding:6px;border-radius:var(--r-sm,8px)}
.fx-iconx:hover{color:var(--ink);background:var(--surface-2,rgba(0,0,0,.05))}
.fx-sub{color:var(--muted);margin:2px 0 8px}
.fx-note{color:var(--muted);font-size:12px;line-height:1.5;margin:10px 0 0}
.fx-note a{color:var(--brand,var(--ink))}
.fx-warn{background:var(--brand-soft,var(--gold-soft,rgba(0,0,0,.04)));border-radius:var(--r-sm,8px);padding:10px 12px;color:var(--ink)}
.fx-c{text-align:center}
.fx-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:14px}
.fx-c.fx-row{justify-content:center}
.fx-btn{font:600 13px var(--body);background:var(--accent);color:var(--accent-ink);border:1px solid var(--accent);border-radius:var(--r-sm,8px);padding:9px 14px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.fx-btn.ghost{background:transparent;color:var(--ink);border-color:var(--line-strong,var(--line))}
.fx-btn:disabled{opacity:.45;cursor:default}
.fx-link{background:none;border:0;padding:0;color:var(--brand,var(--ink));font:500 13px var(--body);cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.fx-mini{display:inline-flex;align-items:center;gap:5px;font:500 12px var(--body);color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:4px 10px;cursor:pointer}
.fx-mini[aria-pressed="true"]{border-color:var(--brand,var(--ink));color:var(--brand,var(--ink));background:var(--brand-soft,transparent)}
.fx-mini .fx-ic{width:14px;height:14px}
#fx-toast{position:fixed;left:50%;bottom:84px;transform:translate(-50%,20px);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:999px;font:500 13px var(--body);opacity:0;pointer-events:none;transition:.2s;z-index:4000;max-width:calc(100% - 32px)}
#fx-toast.on{opacity:1;transform:translate(-50%,0)}

/* Beach Score */
.fx-bs{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:3px 10px 3px 3px;font:500 11px var(--body);cursor:pointer;vertical-align:middle;white-space:nowrap}
.fx-bs b{display:inline-grid;place-items:center;min-width:28px;height:28px;border-radius:50%;color:#fff;font:700 13px var(--body);background:var(--fxc)}
.fx-bs span{color:var(--muted);letter-spacing:.02em}
.fx-good{--fxc:var(--good,#2f6b3f)}.fx-mid{--fxc:var(--warn,#a86a07)}.fx-bad{--fxc:var(--bad,#b23b2e)}
.fx-bs-s{display:inline-block;min-width:24px;text-align:center;border-radius:999px;background:var(--fxc);color:#fff;font:700 11px/18px var(--body);padding:0 6px;margin-right:2px}
.fx-bsbig{display:flex;align-items:baseline;gap:10px;margin:8px 0 14px}
.fx-bsbig b{font:700 56px/1 var(--display);color:var(--fxc)}
.fx-bsbig span{color:var(--muted)}
.fx-parts{width:100%;border-collapse:collapse}
.fx-parts td{padding:9px 0;border-top:1px solid var(--line);vertical-align:top}
.fx-parts td:first-child{padding-right:12px}
.fx-why{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.fx-bar{width:28%;padding-top:14px!important}
.fx-bar i{display:block;height:6px;border-radius:3px;background:var(--brand,var(--ink));min-width:2px}
.fx-pts{text-align:right;font:600 15px var(--body);padding-left:12px!important;white-space:nowrap}
.fx-pts small{color:var(--muted);font-weight:400}

.fx-acts{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:4px 0 8px}
/* compare tray */
#fx-tray{position:fixed;left:16px;bottom:16px;z-index:2500;display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--r,12px);box-shadow:var(--shadow-lg,0 10px 30px rgba(0,0,0,.18));padding:10px 12px;max-width:calc(100% - 140px)}
#fx-tray[hidden]{display:none}
.fx-trayl{font:600 11px var(--body);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.fx-trayhint{color:var(--muted);font-size:12px}
.fx-chip{display:inline-flex;align-items:center;gap:4px;background:var(--surface-2,rgba(0,0,0,.04));border:1px solid var(--line);border-radius:999px;padding:3px 4px 3px 10px;font-size:12px;max-width:180px}
.fx-chip button{background:none;border:0;color:var(--muted);cursor:pointer;padding:2px;display:flex}
.fx-chip button .fx-ic{width:13px;height:13px}
@media (max-width:760px){#fx-tray{left:8px;right:8px;bottom:8px;max-width:none}.fx-trayhint{display:none}}
.fx-scroll{overflow-x:auto;margin:0 -4px}
.fx-cmpt{width:100%;border-collapse:collapse;min-width:560px;table-layout:fixed}
.fx-cmpt col.fx-c1{width:150px}
.fx-cmpt th,.fx-cmpt td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:top;font-size:13px}
.fx-cmpt th{font-weight:400}
.fx-cmpt th b{display:block;font:600 14px var(--body)}
.fx-cmpt th span{display:block;color:var(--muted);font-size:12px}
.fx-cmpt th .fx-row{display:flex;margin-top:4px;gap:12px}
.fx-cmpt td,.fx-cmpt th{white-space:normal;overflow-wrap:anywhere}
.fx-cmpt td:first-child{color:var(--muted);overflow-wrap:normal}
@media (max-width:760px){.fx-cmpt{min-width:620px}.fx-cmpt col.fx-c1{width:112px}}
.fx-cmpt td.fx-win{background:var(--brand-soft,rgba(47,107,63,.10));font-weight:600}

/* swipe */
.fx-swipe .fx-box{width:min(440px,100%)}
.fx-deck{position:relative;height:min(64vh,560px);margin:8px 0 14px;touch-action:pan-y}
.fx-card{position:absolute;inset:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--r,12px);overflow:hidden;box-shadow:var(--shadow-sm,0 2px 8px rgba(0,0,0,.08));display:flex;flex-direction:column;user-select:none;touch-action:none;transition:transform .2s;--yes:0;--no:0}
.fx-card:not(:last-child){transform:scale(.96) translateY(10px);filter:brightness(.97)}
.fx-card.fx-drag{transition:none;cursor:grabbing}
.fx-photo{position:relative;flex:1 1 55%;background:#0d5d6e center/cover no-repeat;min-height:160px}
.fx-photo .fx-bs{position:absolute;left:12px;bottom:12px;cursor:default}
.fx-stamp{position:absolute;top:18px;font:800 26px var(--body);letter-spacing:.06em;text-transform:uppercase;border:3px solid;border-radius:8px;padding:2px 10px;background:rgba(255,255,255,.85)}
.fx-yes{left:16px;color:var(--good,#2f6b3f);transform:rotate(-12deg);opacity:var(--yes)}
.fx-no{right:16px;color:var(--bad,#b23b2e);transform:rotate(12deg);opacity:var(--no)}
.fx-cbody{padding:12px 16px 14px}
.fx-cbody h3{font:500 22px var(--display);color:var(--ink);text-transform:none;letter-spacing:-.01em;margin:0 0 2px}
.fx-call{margin:6px 0 2px}.fx-call b{color:var(--fxc)}
.fx-line{margin:0 0 6px;font-size:13px}
.fx-swbtns{display:flex;justify-content:center;align-items:center;gap:14px}
.fx-round{width:58px;height:58px;border-radius:50%;border:1px solid var(--line-strong,var(--line));background:var(--surface);color:var(--bad,#b23b2e);cursor:pointer;display:grid;place-items:center;font:600 12px var(--body)}
.fx-round .fx-ic{width:24px;height:24px}
.fx-round.sm{width:44px;height:44px;color:var(--muted)}
.fx-round.sm .fx-ic{width:18px;height:18px}
.fx-round.yes{color:var(--good,#2f6b3f)}
.fx-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:8px;padding:20px;border:1px dashed var(--line);border-radius:var(--r,12px)}
.fx-empty h3{font:500 24px var(--display);color:var(--ink);text-transform:none;letter-spacing:0;margin:0}

/* deal card */
.fx-seg{display:inline-flex;border:1px solid var(--line);border-radius:999px;padding:3px;margin:6px 0 12px}
.fx-seg button{background:none;border:0;border-radius:999px;padding:6px 14px;font:500 13px var(--body);color:var(--muted);cursor:pointer}
.fx-seg button[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink)}
.fx-cardprev{display:flex;justify-content:center;background:var(--surface-2,rgba(0,0,0,.04));border-radius:var(--r-sm,8px);padding:12px}
.fx-cardprev img{max-height:56vh;max-width:100%;border-radius:6px;box-shadow:var(--shadow-sm,0 2px 8px rgba(0,0,0,.15));transition:opacity .15s}

/* alerts */
.fx-upd{list-style:none;padding:0;margin:0}
.fx-upd li{padding:8px 0;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline}
.fx-upd small{color:var(--muted)}
.fx-toggle{display:flex;gap:8px;align-items:center;font-weight:500;cursor:pointer}
.fx-steps{padding-left:20px;line-height:1.7}

/* Ask */
.fx-askf{display:flex;gap:8px;margin-top:6px}
.fx-askf input{flex:1;min-width:0;font:15px var(--body);color:var(--ink);background:var(--bg);border:1px solid var(--line-strong,var(--line));border-radius:var(--r-sm,8px);padding:10px 12px}
.fx-ex{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.fx-chipf{display:inline-block;font:500 12px var(--body);color:var(--ink);background:var(--surface-2,rgba(0,0,0,.04));border:1px solid var(--line);border-radius:999px;padding:4px 10px;margin:2px 4px 2px 0}
button.fx-chipf{cursor:pointer}
.fx-read{margin:14px 0 8px}
.fx-res{display:grid;gap:8px}
.fx-hit{display:flex;gap:12px;align-items:center;text-align:left;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:var(--r-sm,8px);padding:10px 12px;cursor:pointer;font:inherit}
.fx-hit:hover{border-color:var(--brand,var(--ink))}
.fx-hit .fx-bs{flex:none;padding-right:3px;cursor:pointer}
.fx-hit .fx-bs span{display:none}
.fx-hitb{display:flex;flex-direction:column;min-width:0}
.fx-hitb span{color:var(--muted);font-size:12px}

/* Cmd-K */
.fx-kpal{padding-top:12vh}
.fx-kpal .fx-box{width:min(640px,100%);padding:0;overflow:hidden}
.fx-kin{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line);color:var(--muted)}
.fx-kin .fx-ic{width:18px;height:18px}
.fx-kin input{flex:1;min-width:0;border:0;background:transparent;font:16px var(--body);color:var(--ink);outline:none}
#fx-kl{list-style:none;margin:0;padding:6px;max-height:min(56vh,460px);overflow:auto}
#fx-kl li{display:flex;align-items:center;gap:12px;padding:9px 10px;border-radius:var(--r-sm,8px);cursor:pointer}
#fx-kl li[aria-selected="true"]{background:var(--brand-soft,var(--surface-2,rgba(0,0,0,.06)))}
.fx-kk{flex:none;width:52px;font:500 10px var(--mono,ui-monospace,monospace);letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.fx-kt{flex:1;min-width:0;display:flex;flex-direction:column}
.fx-kt b{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fx-kt span{color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#fx-kl .fx-bs{padding-right:3px;cursor:pointer}
#fx-kl .fx-bs span{display:none}
#fx-kl .fx-bs b{min-width:24px;height:24px;font-size:11px}
.fx-kempty{color:var(--muted);justify-content:center}
@media (max-width:760px){.fx-modal{padding:12px 8px}.fx-kpal{padding-top:8px}.fx-box{padding:14px}}
