/*!
 * LifeLearn Directory — stylesheet
 * File:     ll-directory-styles-v1.css   <-- CSS. Belongs in css/. RENAMED in 1.32.0.
 * Guard:    If a page renders unstyled, check this file's SIZE on the server
 *           first (~126 KB). The ?ver= string reports the plugin version whether
 *           or not the file at that path is the right one.
 * Version:  1.52.0   (must match LLD_VER in lifelearn-directory.php — the enqueue
 *                    is versioned to it, so a mismatch serves a cached file)
 * Deploy:   wp-content/lifelearn-assets/css/ll-directory-styles-v1.css
 *           NOT inside the plugin — the plugin enqueues from lifelearn-assets so
 *           this can be hot-fixed without re-uploading the zip.
 *
 * Contents
 *   1  Primitives ............ wrap, buttons, crumbs, icon defaults
 *   2  Archive hero .......... Aurora gradient stack, aurora ribbons, grain
 *   3  Centre dial ........... Browse + Location selector (lives in the hero)
 *   4  Toolbar .............. count, shortlist, sort, grid/map toggle
 *   5  Cards ................ logo variant, photo banner variant, why-line
 *   6  Featured rail ........ 3-up portrait posters
 *   7  Map .................. Leaflet overrides, pins, popups
 *   8  Single listing ....... hero medallion, glance tiles, section rows
 *   9  Search results ....... intent line, correction notice
 *  10  Theme containment .... BuddyBoss site-content-grid fixes
 *
 * Conventions
 *   - Every rule is prefixed .lld- so nothing leaks into BuddyBoss.
 *   - Colour literals are deliberate, not tokens: this file is edited in a
 *     browser File Manager, where a missing custom property is hard to debug.
 *   - Sections are appended in version order, so late rules intentionally
 *     override earlier ones. Check the newest section first when a value looks
 *     wrong.
 *   - Anything decorative is disabled under prefers-reduced-motion.
 */

/* ---------- 1. Primitives ---------- */
.lld-wrap{max-width:1120px;margin:0 auto;padding:0 20px}
.lld-btn{border:0;border-radius:10px;padding:12px 18px;font-family:Outfit,system-ui,sans-serif;font-weight:600;
  font-size:14.5px;cursor:pointer;background:#0E9F8B;color:#fff;text-decoration:none;
  display:inline-flex;align-items:center;justify-content:center;gap:8px}
.lld-btn:hover{background:#0B8676;color:#fff}
.lld-btn.is-ghost{background:#fff;color:#0E1B3D;border:1px solid rgba(14,27,61,.13)}
.lld-btn.is-onnavy{background:rgba(255,255,255,.09);color:#fff;border:1px solid rgba(255,255,255,.28)}
.lld-btn.is-wa{background:#1FA855}
.lld-btn.is-wa:hover{background:#17903f}
.lld-btn.is-block{width:100%}
.lld-stack{display:flex;flex-direction:column;gap:9px}
.lld-crumbs{font-size:12.5px;color:#9FB2CE;margin-bottom:14px}
.lld-crumbs a{color:#9FB2CE;text-decoration:none}
.lld-hint{font-size:13px;color:#8494AC}
.lld svg,.lld-badge svg,.lld-hbadge svg,.lld-place svg,.lld-ico svg,.lld-btn svg{stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}

/* ---------- 2. Archive hero — Aurora (v1.7.2) ---------- */
.lld-ahero{color:#fff;padding:40px 0 0;position:relative;overflow:hidden;
  background:
    radial-gradient(70% 100% at 78% -10%, rgba(46,207,184,.30) 0%, rgba(46,207,184,0) 55%),
    radial-gradient(60% 90% at 18% 6%, rgba(88,120,255,.20) 0%, rgba(88,120,255,0) 60%),
    radial-gradient(120% 130% at 50% 130%, rgba(3,12,26,.95) 0%, rgba(3,12,26,0) 60%),
    linear-gradient(150deg,#050F22 0%,#0A1A38 40%,#0D2F44 74%,#10475A 100%)}
/* blurred aurora ribbons give the light somewhere to come from */
.lld-aur{position:absolute;inset:-20% -10% auto -10%;height:150%;pointer-events:none;opacity:.5;z-index:0;
  background:
    conic-gradient(from 210deg at 30% 20%, rgba(159,240,223,.16), transparent 28%),
    conic-gradient(from 20deg at 80% 30%, rgba(140,180,255,.12), transparent 24%);
  filter:blur(28px)}
/* grain stops a gradient this large banding on cheaper panels */
.lld-grain{position:absolute;inset:0;pointer-events:none;opacity:.04;z-index:0;
  background-image:radial-gradient(rgba(255,255,255,.9) .5px,transparent .5px);background-size:3px 3px}
.lld-ahero>.lld-wrap{position:relative;z-index:1}
@media(max-width:700px){.lld-aur{filter:blur(20px);opacity:.4}}
.lld-ahero h1{font-family:Outfit,system-ui,sans-serif;font-size:clamp(2rem,4.3vw,2.95rem);font-weight:800;letter-spacing:-.015em;
  letter-spacing:-.015em;line-height:1.12;margin:0;color:#fff}
.lld-ahero h1 em{font-family:Fraunces,Georgia,serif;font-style:italic;font-weight:600;color:#FFE9B8}
.lld-eyebrow-hero{display:inline-flex;align-items:center;gap:8px;font-family:Outfit,system-ui,sans-serif;
  font-weight:600;font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:#9FF0DF;margin-bottom:18px}
.lld-eyebrow-hero::before{content:"";width:26px;height:2px;background:#0E9F8B;border-radius:2px}
.lld-lede{color:#C4D3E6;max-width:56ch;margin:8px 0 0;font-size:15.5px}
.lld-searchbar{display:flex;gap:9px;margin-top:20px;flex-wrap:wrap}
.lld-searchbar input{flex:1 1 300px;min-width:0;border:0;border-radius:10px;padding:13px 15px;font:inherit;color:#16233F}
.lld-searchbar input:focus{outline:2px solid #9FF0DF;outline-offset:1px}

/* layout */
.lld-abody{display:block;padding:22px 0 56px}
.lld-sbody{display:grid;grid-template-columns:1fr;gap:24px;padding:26px 0 56px}
@media(min-width:920px){.lld-abody{display:block;padding:26px 0 60px}.lld-sbody{grid-template-columns:1fr 320px}}
.lld-panel{background:#fff;border:1px solid rgba(14,27,61,.13);border-radius:14px;padding:16px;align-self:start}
.lld-panel h3{font-family:Outfit,system-ui,sans-serif;font-size:10.5px;letter-spacing:.11em;text-transform:uppercase;color:#8494AC;margin:0 0 9px}
.lld-panel h3+h3,.lld-facet+h3{margin-top:18px}
.lld-facet{display:flex;align-items:center;gap:8px;font-size:14px;padding:5px 0;text-decoration:none;color:#16233F}
.lld-facet:hover{color:#0B8676}
.lld-facet .lld-n{margin-left:auto;font-size:12px;color:#8494AC}
.lld-facet.is-off{opacity:.45;pointer-events:none}
.lld-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:16px}
.lld-count{font-size:14px;color:#5B6B85;margin:0}
.lld-sortwrap{margin-left:auto;display:flex;align-items:center;gap:8px}
.lld-sortwrap label{font-size:12.5px;color:#5B6B85}
.lld-sortwrap select{font:inherit;font-size:14px;padding:8px 12px;border:1px solid rgba(14,27,61,.13);border-radius:9px;color:#16233F;background:#fff}
.lld-sortwrap select:focus{outline:2px solid #0E9F8B;outline-offset:1px}

/* card */
.lld-grid{display:grid;grid-template-columns:1fr;gap:15px}
@media(min-width:680px){.lld-grid{grid-template-columns:repeat(2,1fr)}}
.lld-card{background:#fff;border:1px solid rgba(14,27,61,.13);border-radius:14px;padding:16px;display:flex;flex-direction:column}
.lld-card:focus-within,.lld-btn:focus-visible,.lld-ico:focus-visible,.lld-facet:focus-visible,
.lld-sortwrap select:focus-visible{outline:3px solid #9FF0DF;outline-offset:2px}
@media(prefers-reduced-motion:no-preference){
  .lld-card{transition:border-color .16s ease,box-shadow .16s ease}
  .lld-card:hover{border-color:rgba(14,159,139,.4);box-shadow:0 8px 22px rgba(5,11,30,.07)}
}
.lld-eyebrow{font-family:Outfit,system-ui,sans-serif;font-size:10.5px;font-weight:600;letter-spacing:.11em;
  text-transform:uppercase;color:#0B8676;margin:0 0 9px}
.lld-top{display:flex;gap:13px;align-items:flex-start}
.lld-logo{width:104px;aspect-ratio:16/9;flex:none;border-radius:9px;border:1px solid rgba(14,27,61,.13);
  background:#fff;display:grid;place-items:center;overflow:hidden;padding:6px}
.lld-logo img{max-width:100%;max-height:100%;object-fit:contain;display:block}
.lld-logo.is-mono{border:0;padding:0;background:linear-gradient(135deg,#0E1B3D,#0F4A3E);color:#9FF0DF;
  font-family:Outfit,system-ui,sans-serif;font-weight:600;font-size:20px}
/* hero medallion — matches the live GD single (snippet 78 llh-badge/llh-medallion) */
.lld-hbadge{position:relative;display:inline-flex;flex:none}
.lld-hbadge::before{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:150px;height:150px;border-radius:50%;
  background:radial-gradient(circle,rgba(46,207,184,.45),rgba(46,207,184,0) 68%);filter:blur(6px);z-index:0}
.lld-medallion{position:relative;z-index:1;width:88px;height:88px;border-radius:22px;
  display:flex;align-items:center;justify-content:center;overflow:hidden;
  background:rgba(255,255,255,.92);border:1px solid rgba(255,255,255,.7);
  box-shadow:0 14px 30px rgba(7,16,38,.45),0 0 0 6px rgba(255,255,255,.06),inset 0 1px 0 rgba(255,255,255,.9)}
.lld-medallion img{width:100%;height:100%;object-fit:contain;display:block;padding:8px}
.lld-initials{width:100%;height:100%;display:flex;align-items:center;justify-content:center;
  font-family:Outfit,system-ui,sans-serif;font-weight:800;font-size:32px;letter-spacing:-.5px;
  text-transform:uppercase;color:#0E1B3D}
.lld-gatebox--main{margin-bottom:16px;text-align:left;padding:24px}
.lld-gatebox--main h3{font-size:19px;margin:0 0 6px}
.lld-t{min-width:0}
.lld-card h2{font-family:Outfit,system-ui,sans-serif;font-size:18.5px;line-height:1.2;margin:0;letter-spacing:-.01em}
.lld-card h2 a{color:inherit;text-decoration:none}
.lld-card h2 a:hover{color:#0B8676}
.lld-role{font-family:Fraunces,Georgia,serif;font-style:italic;font-size:14px;color:#5B6B85;margin:4px 0 0;line-height:1.35}
.lld-place{display:flex;align-items:center;gap:5px;font-size:13px;color:#8494AC;margin:12px 0 0}
.lld-badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:11px}
.lld-badge{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:500;color:#43536E;
  border:1px solid rgba(14,27,61,.13);background:#FBFCFD;border-radius:7px;padding:4px 8px}
.lld-badge svg{color:#0B8676}
.lld-facts{display:flex;flex-wrap:wrap;gap:0 18px;margin:13px 0 0;padding-top:12px;border-top:1px solid rgba(14,27,61,.13)}
.lld-facts dt{font-family:Outfit,system-ui,sans-serif;font-size:9.5px;font-weight:600;letter-spacing:.1em;
  text-transform:uppercase;color:#8494AC}
.lld-facts dd{margin:1px 0 0;font-size:14px;font-weight:500;white-space:nowrap}
.lld-foot{display:flex;align-items:center;gap:7px;margin-top:14px}
.lld-ico{width:32px;height:32px;border-radius:8px;border:1px solid rgba(14,27,61,.13);background:#fff;
  display:grid;place-items:center;color:#5B6B85;text-decoration:none;flex:none}
.lld-ico:hover{border-color:#0E9F8B;color:#0B8676}
.lld-ico.is-wa{border-color:rgba(31,168,85,.3);color:#1FA855;background:#F4FBF6}
.lld-go{margin-left:auto;font-family:Outfit,system-ui,sans-serif;font-weight:600;font-size:13.5px;color:#0B8676;text-decoration:none}
.lld-go:hover{text-decoration:underline}
.lld-lock{background:#F2F7F6;border:1px solid rgba(14,159,139,.22);border-radius:9px;padding:8px 11px;
  font-size:12.5px;color:#0B5E52;display:flex;gap:8px;align-items:center;margin:13px 0 0}
.lld-lock a{font-family:Outfit,system-ui,sans-serif;font-weight:600;color:#0B8676;margin-left:auto;text-decoration:none;white-space:nowrap}
.lld-pager{display:flex;gap:6px;justify-content:center;margin-top:26px}
.lld-pager .page-numbers{width:36px;height:36px;border-radius:9px;border:1px solid rgba(14,27,61,.13);background:#fff;
  display:grid;place-items:center;font-family:Outfit,system-ui,sans-serif;font-weight:600;font-size:14px;
  text-decoration:none;color:#5B6B85}
.lld-pager .page-numbers.current{background:#0E1B3D;color:#fff;border-color:#0E1B3D}
.lld-empty{background:#fff;border:1px solid rgba(14,27,61,.13);border-radius:14px;padding:34px;text-align:center}
.lld-empty h2{font-family:Outfit,system-ui,sans-serif;font-size:20px;margin:0 0 6px}
.lld-empty p{color:#5B6B85;margin:0 0 14px}

/* single */
.lld-shero{background:linear-gradient(126deg,#08243B 0%,#0E1B3D 44%,#0F4A3E 100%);color:#fff;padding:30px 0 26px}
.lld-sid{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap}
.lld-sid-t{flex:1 1 320px;min-width:0}
/* colour is EXPLICIT, never inherited: the theme ships its own h1 colour rule,
   and any matching selector beats inheritance from .lld-shero — which is why
   this title rendered near-black on the dark hero while every sibling (each
   carrying its own colour) was fine. */
.lld-shero h1{font-family:Outfit,system-ui,sans-serif;font-size:clamp(25px,3.4vw,34px);line-height:1.12;margin:0;color:#fff}
.lld-srole{font-family:Fraunces,Georgia,serif;font-style:italic;color:#FFE9B8;font-size:17px;margin:6px 0 0}
.lld-smeta{display:flex;gap:14px;flex-wrap:wrap;color:#C4D3E6;font-size:14px;margin:14px 0 0}
.lld-smeta b{color:#fff;font-weight:500}
.lld-sacts{display:flex;gap:9px;flex-wrap:wrap;margin:18px 0 0}
.lld-block{background:#fff;border:1px solid rgba(14,27,61,.13);border-radius:14px;padding:20px;margin-bottom:16px}
.lld-block h2{font-family:Outfit,system-ui,sans-serif;font-size:19px;margin:0 0 10px}
.lld-block h4{font-family:Outfit,system-ui,sans-serif;font-size:10.5px;letter-spacing:.11em;text-transform:uppercase;color:#8494AC;margin:0 0 9px}
.lld-block p{margin:0 0 12px;font-size:15.5px}
.lld-kv{display:grid;grid-template-columns:150px 1fr;gap:9px 16px;font-size:14.8px;margin:0}
.lld-kv.is-tight{grid-template-columns:74px 1fr;font-size:14px}
.lld-kv dt{color:#5B6B85}
.lld-kv dd{margin:0}
.lld-gal{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:6px}
.lld-gal img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:8px;display:block;background:#DDE6EA}
.lld-hours div{display:flex;justify-content:space-between;padding:5px 0;border-bottom:1px dashed rgba(14,27,61,.13);font-size:14.5px}
.lld-hours .is-today{font-weight:700;color:#0B8676}
.lld-sticky{position:sticky;top:16px}
.lld-gatebox{border:1px solid rgba(14,159,139,.3);background:#F4FAF9;border-radius:14px;padding:18px;text-align:center}
.lld-gatebox h3{font-family:Outfit,system-ui,sans-serif;font-size:17px;margin:0}
.lld-gatebox p{color:#5B6B85;font-size:14.5px;margin:6px 0 12px}
.lld-pills{display:flex;gap:6px;flex-wrap:wrap}
.lld-pills a{font-size:12.5px;background:#F1F5F7;border-radius:6px;padding:4px 9px;color:#3E4E68;font-weight:500;text-decoration:none}
.lld-pills a:hover{background:#E4F5F1;color:#0B5E52}
@media(max-width:520px){.lld-gal{grid-template-columns:repeat(2,1fr)}.lld-kv{grid-template-columns:1fr}}

/* ---- v1.4: absorbed single design (was snippets 66-79) ---- */
.lld-hero-col{display:flex;flex-direction:column;align-items:center;gap:13px;max-width:680px;margin:0 auto;text-align:center}
.lld-shero{text-align:center}
.lld-shero .lld-crumbs{text-align:left}
.lld-h-eyebrow{display:inline-flex;align-items:center;padding:6px 15px;border-radius:999px;
  border:1px solid rgba(94,208,191,.42);color:#3ECFB8;background:rgba(46,207,184,.06);
  font-family:Outfit,system-ui,sans-serif;font-size:.68rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase}
.lld-sloc{display:flex;align-items:center;gap:6px;font-size:.9rem;color:rgba(255,255,255,.72);margin:0}
.lld-creds{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}
.lld-cred{display:inline-flex;align-items:center;gap:6px;font-size:.74rem;font-weight:500;color:#DCE9F5;
  border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.06);border-radius:999px;padding:5px 12px}
.lld-cred svg{color:#9FF0DF}
.lld-glance{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:16px}
@media(min-width:620px){.lld-glance{grid-template-columns:repeat(4,1fr)}}
.lld-glance .lld-tile{background:#F7FAFC;border:1px solid rgba(14,27,61,.13);border-radius:12px;padding:13px 14px;text-align:center}
.lld-glance .lld-tile .k{font-family:Outfit,system-ui,sans-serif;font-size:.6rem;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:#8494AC;margin:0}
.lld-glance .lld-tile .v{font-family:Outfit,system-ui,sans-serif;font-weight:700;font-size:1rem;color:#0E1B3D;margin:4px 0 0}
.lld-sec-row{display:flex;justify-content:space-between;gap:16px;padding:9px 0;
  border-bottom:1px dashed rgba(14,27,61,.13);font-size:.94rem}
.lld-sec-row:last-of-type{border-bottom:0}
.lld-sec-row .k{color:#5B6B85;flex:none}
.lld-sec-row .v{text-align:right}
.lld-sec-row.is-today{font-weight:700;color:#0B8676}
.lld-toc a{display:block;font-size:.88rem;color:#3E4E68;padding:4px 0;text-decoration:none}
.lld-toc a:hover{color:#0B8676}
.lld-gatelist{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-bottom:18px}
.lld-gatelist span{font-size:.76rem;background:#fff;border:1px solid rgba(14,27,61,.13);border-radius:999px;
  padding:5px 12px;color:#5B6B85}
.lld-btn.is-wa{background:#1FA855}
.lld-btn.is-wa:hover{background:#17903f}

/* Single root per template: the theme's site-content-grid is a no-wrap flex row,
   so multiple top-level blocks became columns. One .lld-page child ends that. */
.lld-page{flex:1 1 100%;width:100%;max-width:100%;min-width:0;display:block}

/* ---- v1.4.2: containment inside the BuddyBoss content wrapper ----
   The theme lays its content area out with flex, which turned the hero and the
   body grid into flex siblings (hero became a tall left column) and let the card
   grid overflow. These rules force each top-level block to own a full row. */
.lld-ahero,.lld-shero,.lld-abody,.lld-sbody{width:100%;max-width:100%;flex:0 0 100%;float:none;clear:both}
.lld-ahero,.lld-shero{display:block}
.lld-abody,.lld-sbody{box-sizing:border-box}
.lld-abody>*,.lld-sbody>*{min-width:0}          /* stops grid children forcing overflow */
.lld-grid,.lld-panel,.lld-card{min-width:0;max-width:100%}
.lld-card *{min-width:0}
.lld-top{align-items:center}
.lld-t{flex:1 1 auto}
.lld-card h2{overflow-wrap:normal;word-break:normal;hyphens:none}
.lld-card .lld-t{flex:1 1 auto;min-width:8rem}
.lld-card .lld-logo{width:clamp(74px,26%,104px)}
.lld-facts{row-gap:10px}
.lld-facts>div{flex:0 0 auto}
/* the theme adds glows to some inline elements; keep chips flat */
.lld-badge,.lld-chip,.lld-facts,.lld-place{box-shadow:none !important;filter:none !important}
.lld-badge::before,.lld-badge::after{content:none}
@media(min-width:660px) and (max-width:1100px){.lld-grid{grid-template-columns:1fr}}

/* ---- v1.5: assisted search results, hero grammar, facet icons ---- */
.lld-locknote{display:flex;align-items:center;gap:8px;font-size:.85rem;color:rgba(255,255,255,.62);margin:16px 0 0}
.lld-locknote svg{color:#9FF0DF}
.lld-fic{flex:none;width:15px;height:15px;object-fit:contain;opacity:.85}
.lld-intent{font-family:Fraunces,Georgia,serif;font-style:italic;font-size:1.05rem;color:#3E4E68;margin:0 0 14px}
.lld-searching{color:#5B6B85;padding:24px 0}
.lld-resgrid{display:grid;grid-template-columns:1fr;gap:14px}
@media(min-width:680px){.lld-resgrid{grid-template-columns:repeat(2,1fr)}}
.lld-rescard{background:#fff;border:1px solid rgba(14,27,61,.13);border-radius:14px;padding:18px}
.lld-rescard h2{font-family:Outfit,system-ui,sans-serif;font-size:1.12rem;margin:0}
.lld-rescard h2 a{color:inherit;text-decoration:none}
.lld-rescard h2 a:hover{color:#0B8676}
.lld-why{font-family:Fraunces,Georgia,serif;font-style:italic;color:#0B5E52;font-size:.92rem;margin:6px 0 0}
.lld-resmeta{display:flex;gap:14px;flex-wrap:wrap;font-size:.82rem;color:#8494AC;margin:8px 0 0}
.lld-ressum{font-size:.92rem;color:#43536E;margin:9px 0 12px}
.lld-clearwrap{margin:18px 0 0}
.lld-clear{font-family:Outfit,system-ui,sans-serif;font-weight:600;font-size:.88rem;color:#0B8676;text-decoration:none}
.lld-clear:hover{text-decoration:underline}

/* ---- v1.5.2: spelling correction notice ---- */
.lld-corrected{font-size:.92rem;color:#5B6B85;margin:0 0 8px}
.lld-corrected b{color:#0B5E52;font-weight:600}

/* ============ v1.6: shortlist, featured, photo cards, map ============ */

/* --- save button --- */
.lld-save{margin-left:auto;flex:none;width:31px;height:31px;border-radius:9px;cursor:pointer;
  border:1px solid rgba(14,27,61,.13);background:#fff;color:#8494AC;
  display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0;
  transition:color .16s ease,border-color .16s ease,transform .16s ease}
.lld-save:hover{color:#E0526B;border-color:rgba(224,82,107,.4)}
.lld-save.is-on{color:#E0526B;border-color:rgba(224,82,107,.45);background:#FFF5F7}
.lld-save.is-on svg{fill:#E0526B}
.lld-save.has-label{width:auto;padding:0 16px;height:44px;border-radius:999px;
  font-family:Outfit,system-ui,sans-serif;font-weight:600;font-size:.95rem}
.lld-save.just-changed{transform:scale(1.14)}
.lld-savewrap{display:inline-flex}
.lld-sacts .lld-save{background:rgba(255,255,255,.09);border-color:rgba(255,255,255,.28);color:#fff}
.lld-sacts .lld-save.is-on{background:#fff;color:#E0526B}
.lld-viewlink{display:inline-flex;align-items:center;gap:7px;font-size:.85rem;color:#5B6B85;
  border:1px solid rgba(14,27,61,.13);background:#fff;border-radius:999px;padding:7px 14px;text-decoration:none}
.lld-viewlink:hover,.lld-viewlink.is-on{color:#0B5E52;border-color:rgba(14,159,139,.4)}
.lld-viewlink .lld-n{background:#EDF3F1;border-radius:999px;padding:1px 7px;font-size:.75rem;font-weight:600}

/* --- view toggle --- */
.lld-viewtoggle{display:inline-flex;border:1px solid rgba(14,27,61,.13);border-radius:999px;background:#fff;padding:3px}
.lld-viewtoggle button{border:0;background:none;cursor:pointer;border-radius:999px;padding:7px 15px;
  font-family:Outfit,system-ui,sans-serif;font-weight:600;font-size:.85rem;color:#5B6B85}
.lld-viewtoggle button.is-on{background:#0E1B3D;color:#fff}

/* --- featured --- */
.lld-rail{margin-bottom:26px}
.lld-railhead{font-family:Outfit,system-ui,sans-serif;font-size:.72rem;font-weight:700;letter-spacing:.13em;
  text-transform:uppercase;color:#8494AC;margin:0 0 12px;display:flex;align-items:center;gap:9px}
.lld-railhead::after{content:"";flex:1;height:1px;background:rgba(14,27,61,.13)}
.lld-railgrid{display:grid;grid-template-columns:1fr;gap:15px}
@media(min-width:680px){
  /* auto-fit so a single featured card fills the row instead of being crushed
     into a third of it, which was breaking the title onto one word per line */
  .lld-railgrid{grid-template-columns:repeat(auto-fit,minmax(330px,1fr))}
}
/* v1.20.1: v1.10's featured border retired — the Gilt below owns featured now. */
/* v1.20.1: the ribbon-era eyebrow clearance was removed with the ribbon. */
.lld-ribbon{position:absolute;top:12px;right:12px;z-index:2;background:#0E1B3D;color:#FFE9B8;
  font-family:Outfit,system-ui,sans-serif;font-size:.66rem;font-weight:700;letter-spacing:.09em;
  text-transform:uppercase;border-radius:999px;padding:5px 12px;box-shadow:0 4px 12px rgba(5,11,30,.28)}

/* --- photo-led card --- */
.lld-card{position:relative;padding:0;overflow:hidden}
.lld-cbody{padding:16px;display:flex;flex-direction:column;flex:1}
.lld-photo{display:block;position:relative;aspect-ratio:16/9;overflow:hidden;background:#DDE6EA}
.lld-photo img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease}
.lld-card.is-photo:hover .lld-photo img{transform:scale(1.045)}
.lld-photo::after{content:"";position:absolute;inset:auto 0 0 0;height:62%;
  background:linear-gradient(to top,rgba(6,14,32,.72),transparent)}
.lld-photo-logo{position:absolute;left:12px;bottom:12px;z-index:1;width:46px;height:46px;border-radius:12px;
  background:#fff;display:grid;place-items:center;padding:5px;box-shadow:0 6px 16px rgba(5,11,30,.3)}
.lld-photo-logo img{max-width:100%;max-height:100%;object-fit:contain}
.lld-photo-cat{position:absolute;left:12px;top:12px;z-index:1;font-family:Outfit,system-ui,sans-serif;
  font-size:.63rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:#fff;
  background:rgba(6,14,32,.55);backdrop-filter:blur(3px);border-radius:999px;padding:5px 11px}
.lld-card.is-photo .lld-top{gap:0}

/* --- map --- */
#lld-map{height:min(70vh,620px);border-radius:16px;overflow:hidden;border:1px solid rgba(14,27,61,.13);
  background:#EEF2F6;box-shadow:0 10px 30px rgba(5,11,30,.07)}
.lld-maploading{padding:40px;text-align:center;color:#8494AC}
.lld-pin{background:none;border:0}
.lld-pin-in{display:grid;place-items:center;width:34px;height:34px;border-radius:50% 50% 50% 6px;
  transform:rotate(-45deg);background:linear-gradient(135deg,#0E1B3D,#0F4A3E);
  border:2px solid #fff;box-shadow:0 5px 14px rgba(5,11,30,.35);overflow:hidden}
.lld-pin-in img,.lld-pin-in span{transform:rotate(45deg)}
.lld-pin-in img{width:22px;height:22px;object-fit:contain;background:#fff;border-radius:4px;padding:1px}
.lld-pin-in span{font-family:Outfit,system-ui,sans-serif;font-weight:700;font-size:.68rem;color:#9FF0DF}
.leaflet-popup-content-wrapper{border-radius:14px;box-shadow:0 12px 34px rgba(5,11,30,.2)}
.leaflet-popup-content{margin:14px 16px}
.lld-pop-cat{font-family:Outfit,system-ui,sans-serif;font-size:.6rem;font-weight:700;letter-spacing:.11em;
  text-transform:uppercase;color:#0B8676;margin:0 0 4px}
.lld-pop h3{font-family:Outfit,system-ui,sans-serif;font-size:1rem;margin:0 0 4px}
.lld-pop h3 a{color:#0E1B3D;text-decoration:none}
.lld-pop-meta{font-size:.82rem;color:#8494AC;margin:0}
.lld-pop-price{font-size:.85rem;font-weight:600;color:#16233F;margin:4px 0 0}
.lld-pop-approx{font-size:.72rem;color:#8494AC;font-style:italic;margin:5px 0 0}
.lld-pop-go{display:inline-block;margin-top:9px;font-family:Outfit,system-ui,sans-serif;font-weight:600;
  font-size:.82rem;color:#0B8676;text-decoration:none}
@media(prefers-reduced-motion:reduce){
  .lld-card.is-photo:hover .lld-photo img{transform:none}
  .lld-save.just-changed{transform:none}
}

/* ================= v1.6.2 ================= */

/* --- hero sits in its own column, centred against the parent ---
   The previous full-bleed used calc(50% - 50vw), which assumes the content
   column is centred in the viewport. BuddyBoss puts an icon rail down the left,
   so that maths over-shifted the hero. Bleeding relative to the parent keeps it
   correct whatever the theme does with the column. --- */
.lld-ahero,.lld-shero{margin-inline:0;padding-inline:0;max-width:100%}
.lld-ahero{border-radius:0 0 26px 26px}
.lld-shero{border-radius:0 0 22px 22px}

/* --- images: never stretch, never letterbox oddly --- */
.lld-logo img,.lld-photo-logo img,.lld-medallion img{object-fit:contain;object-position:center;
  width:100%;height:100%;display:block}
.lld-photo img,.lld-gal img{object-fit:cover;object-position:center}
.lld-fic{object-fit:contain}
.lld-pin-in img{object-fit:contain}

/* --- container queries: cards respond to their own column, not the viewport ---
   This is what makes a comfortable three-up possible: below 330px of card width
   the header stacks instead of squeezing the title beside the logo. */
.lld-grid,.lld-railgrid{container-type:inline-size}
.lld-card{container-type:inline-size;container-name:lldcard}
@container lldcard (max-width: 330px){
  .lld-top{flex-wrap:wrap;gap:10px}
  .lld-logo{width:64px}
  .lld-t{flex:1 1 100%;order:3}
  .lld-save{order:2}
  .lld-facts{gap:0 14px}
  .lld-facts dd{font-size:.85rem}
  .lld-badge{font-size:.68rem;padding:4px 7px}
}
@container lldcard (min-width: 331px){
  .lld-logo{width:96px}
}

/* three across, comfortably: 300px floor rather than a fixed fraction */
@media(min-width:1080px){
  .lld-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
}
.lld-cbody{gap:0}

/* --- why-line above the title on search results --- */
.lld-why{display:flex;align-items:flex-start;gap:7px;margin:0;padding:12px 16px;
  font-family:Fraunces,Georgia,serif;font-style:italic;font-size:.9rem;line-height:1.45;color:#0B5E52;
  background:linear-gradient(180deg,#F2FAF8,#FFF);border-bottom:1px solid rgba(14,159,139,.18)}
.lld-why svg{margin-top:3px;color:#0E9F8B}
.lld-card.has-why{border-color:rgba(14,159,139,.32)}

/* --- panel: grouped, capped, foldable --- */
.lld-facetgroup + .lld-facetgroup{margin-top:20px;padding-top:16px;border-top:1px solid rgba(14,27,61,.1)}
.lld-facet{gap:9px}
.lld-fname{flex:1;min-width:0}
.lld-facet.is-child{padding-left:22px;font-size:.86rem;color:#5B6B85}
.lld-facet.is-on{color:#0B5E52;font-weight:600}
.lld-more{margin-top:4px}
.lld-more summary{cursor:pointer;font-size:.8rem;color:#0B8676;padding:5px 0;list-style:none;
  font-family:Outfit,system-ui,sans-serif;font-weight:600}
.lld-more summary::-webkit-details-marker{display:none}
.lld-more summary::before{content:"+ ";}
.lld-more[open] summary::before{content:"– ";}
.lld-more.is-empty summary{color:#8494AC;font-weight:500}
.lld-more[open] summary{margin-bottom:2px}

/* --- active filter chips --- */
.lld-chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.lld-fchip{display:inline-flex;align-items:center;gap:8px;font-size:.84rem;color:#0B5E52;
  background:#EDF7F4;border:1px solid rgba(14,159,139,.28);border-radius:999px;padding:6px 13px;text-decoration:none}
.lld-fchip:hover{background:#E0F1EC}
.lld-fchip span[aria-hidden]{font-size:1rem;line-height:1;color:#0B8676}

/* --- content-visibility: only pays off past a screenful, harmless before --- */
.lld-grid > .lld-card:nth-child(n+7){content-visibility:auto;contain-intrinsic-size:auto 420px}

/* --- view transitions, where supported --- */
@view-transition{navigation:auto}
@media(prefers-reduced-motion:reduce){
  ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none !important}
}

/* --- :has() tidy-ups, no PHP branching needed --- */
.lld-card:has(.lld-photo) .lld-cbody{padding-top:14px}
.lld-card:not(:has(.lld-badges)) .lld-facts{margin-top:12px}
.lld-bar:has(.lld-viewtoggle) .lld-sortwrap{margin-left:0}

/* ---- v1.6.3: card geometry + panel without counts + needs chips ---- */
/* fixed-height photo band so photo and logo cards align in one row;
   foot pinned to the bottom so no variant leaves a well of white space */
.lld-photo{aspect-ratio:auto;height:150px}
.lld-rail .lld-photo,.lld-railgrid .lld-photo{height:220px}
.lld-card{display:flex;flex-direction:column}
.lld-cbody{display:flex;flex-direction:column;flex:1}
.lld-foot{margin-top:auto;padding-top:13px}
.lld-facts{margin-bottom:0}
/* panel counts gone; rows breathe a little more */
.lld-panel .lld-n{display:none}
.lld-facet{padding:7px 2px}
.lld-more.is-empty summary::before{content:""}
.lld-more.is-empty summary{font-style:italic}



/* ================= v1.7.0 — no panel, banner cards, poster rail ================= */

/* panel gone */
.lld-panel{display:none}

/* --- grid: three across on desktop --- */
.lld-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:18px}
@media(min-width:1120px){.lld-grid{grid-template-columns:repeat(3,1fr)}}

/* --- photo card: 16:9 banner, name over the fade --- */
.lld-media{position:relative;aspect-ratio:16/9;background:#DDE6EA;height:auto}
.lld-media>a{display:block;width:100%;height:100%}
.lld-media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease}
.lld-card.is-photo:hover .lld-media img{transform:scale(1.04)}
.lld-media::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(6,14,32,.4) 0%,rgba(6,14,32,0) 34%,rgba(6,14,32,.74) 100%)}
.lld-mcat{position:absolute;left:12px;top:11px;z-index:2;font-family:Outfit,system-ui,sans-serif;font-size:.6rem;
  font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#fff;background:rgba(6,14,32,.44);
  backdrop-filter:blur(4px);border-radius:999px;padding:5px 11px}
.lld-mover{position:absolute;left:14px;right:14px;bottom:11px;z-index:2;display:flex;align-items:flex-end;gap:11px}
.lld-mlogo{flex:none;width:46px;height:46px;border-radius:12px;background:#fff;display:grid;place-items:center;
  font-family:Outfit,system-ui,sans-serif;font-weight:700;font-size:.9rem;color:#0B5E52;overflow:hidden;
  box-shadow:0 5px 15px rgba(5,11,30,.32)}
.lld-mlogo img{width:100%;height:100%;object-fit:contain;padding:5px}
.lld-mover h2{font-family:Outfit,system-ui,sans-serif;font-size:1.06rem;line-height:1.2;margin:0}
.lld-mover h2 a{color:#fff;text-decoration:none;text-shadow:0 2px 10px rgba(5,11,30,.45)}
.lld-mover .lld-role{color:rgba(255,255,255,.85);font-size:.8rem;margin:2px 0 0;text-shadow:0 1px 8px rgba(5,11,30,.4)}
.lld-card.is-photo .lld-cbody{padding-top:13px}
.lld-savebar{display:flex;justify-content:flex-end;margin-bottom:-6px}

/* --- featured rail: two up, poster treatment --- */
.lld-railgrid{grid-template-columns:repeat(auto-fit,minmax(430px,1fr));gap:18px}
@media(max-width:900px){.lld-railgrid{grid-template-columns:1fr}}
.lld-poster{position:relative;border-radius:20px;overflow:hidden;aspect-ratio:16/10;display:flex;align-items:flex-end;
  border:1px solid rgba(14,27,61,.12);background:linear-gradient(140deg,#0A2A46,#0E1B3D 55%,#123F52)}
.lld-poster-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.lld-poster::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(6,14,32,.46) 0%,rgba(6,14,32,.04) 32%,rgba(6,14,32,.85) 76%)}
.lld-poster.is-mono::after{background:linear-gradient(180deg,rgba(6,14,32,.1),rgba(6,14,32,.62))}
.lld-poster-mark{position:absolute;top:42%;left:50%;transform:translate(-50%,-50%);z-index:2;width:96px;height:96px;
  border-radius:24px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.16);display:grid;
  place-items:center;font-family:Outfit,system-ui,sans-serif;font-weight:800;font-size:2rem;color:#9FF0DF;overflow:hidden}
.lld-poster-mark img{width:74%;height:74%;object-fit:contain}
.lld-poster-top{position:absolute;top:13px;left:14px;right:14px;z-index:3;display:flex;gap:10px;align-items:flex-start}
.lld-poster-top .lld-mcat{position:static}
.lld-poster-top .lld-save{margin-left:auto;background:rgba(255,255,255,.15);border-color:rgba(255,255,255,.3);color:#fff}
.lld-poster-top .lld-save.is-on{background:#fff;color:#E0526B}
.lld-ribbon.is-static{position:static}
.lld-poster-panel{position:relative;z-index:3;width:100%;padding:17px;color:#fff;display:flex;flex-direction:column;gap:10px}
.lld-poster-panel h2{font-family:Outfit,system-ui,sans-serif;font-size:1.35rem;line-height:1.16;margin:0}
.lld-poster-panel h2 a{color:#fff;text-decoration:none}
.lld-poster-panel .lld-role{color:rgba(255,255,255,.86);margin:3px 0 0}
.lld-poster-panel .lld-place{color:rgba(255,255,255,.7);margin:5px 0 0}
.lld-glass{background:rgba(255,255,255,.13);backdrop-filter:blur(9px);border:1px solid rgba(255,255,255,.22);
  border-radius:13px;padding:10px 13px;display:flex;align-items:center;gap:13px;flex-wrap:wrap}
.lld-gist{display:flex;flex-wrap:wrap;gap:4px 13px;font-size:.8rem;color:rgba(255,255,255,.9);margin:0}
.lld-pprice{font-family:Outfit,system-ui,sans-serif;font-weight:700;margin:0 0 0 auto;color:#fff}
.lld-pgo{color:#0A2A22;background:#9FF0DF;border-radius:999px;padding:7px 15px;
  font-family:Outfit,system-ui,sans-serif;font-weight:600;font-size:.83rem;text-decoration:none}
.lld-pgo:hover{background:#B9F6E9}
@media(prefers-reduced-motion:reduce){.lld-card.is-photo:hover .lld-media img{transform:none}}

/* ============ v1.7.2 — centre dial, Aurora (inside the hero) ============ */
.lld-dial{position:relative;margin-top:24px;overscroll-behavior:contain;padding:17px 18px 18px;display:flex;flex-direction:column;gap:12px;
  border-radius:20px 20px 0 0;border:1px solid rgba(255,255,255,.14);border-bottom:0;
  background:
    linear-gradient(180deg,rgba(255,255,255,.11) 0%,rgba(255,255,255,.045) 40%,rgba(255,255,255,.02) 100%),
    linear-gradient(180deg,rgba(3,12,26,.34),rgba(3,12,26,.10));
  backdrop-filter:blur(9px) saturate(1.15);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.22),
    inset 0 14px 26px -16px rgba(0,0,0,.6),
    0 -1px 0 rgba(0,0,0,.22),
    0 20px 44px -20px rgba(0,0,0,.6)}
/* dashed guide marking the selection point */
.lld-dial::before{content:"";position:absolute;left:50%;transform:translateX(-50%);width:1px;top:13px;bottom:56px;
  background:repeating-linear-gradient(180deg,rgba(159,240,223,.6) 0 4px,transparent 4px 9px);pointer-events:none;z-index:1}
/* mint seam where the panel meets the hero */
.lld-dial::after{content:"";position:absolute;left:18px;right:18px;top:0;height:1px;pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(159,240,223,.5),transparent)}
.lld-dialrow{display:flex;align-items:center;gap:12px;position:relative}
.lld-dlabel{flex:none;width:78px;font-family:Outfit,system-ui,sans-serif;font-size:.62rem;font-weight:700;
  letter-spacing:.13em;text-transform:uppercase;color:rgba(255,255,255,.5)}
.lld-dview{flex:1;min-width:0;position:relative;height:48px;display:flex;align-items:center;border-radius:13px;
  background:linear-gradient(180deg,rgba(3,12,26,.26),rgba(3,12,26,.07));
  box-shadow:inset 0 1px 7px rgba(0,0,0,.34),inset 0 -1px 0 rgba(255,255,255,.07)}
.lld-dview::before,.lld-dview::after{content:"";position:absolute;top:0;bottom:0;width:72px;pointer-events:none;z-index:2}
.lld-dview::before{left:0;border-radius:13px 0 0 13px;background:linear-gradient(90deg,rgba(7,22,44,.94) 18%,rgba(7,22,44,0))}
.lld-dview::after{right:0;border-radius:0 13px 13px 0;background:linear-gradient(270deg,rgba(13,47,62,.94) 18%,rgba(13,47,62,0))}
.lld-dtrack{display:flex;align-items:center;gap:6px;overflow-x:auto;scrollbar-width:none;
  scroll-snap-type:x mandatory;padding:0 42%;width:100%;outline:none;
  /* stops a horizontal drag or trackpad swipe chaining out to the page */
  overscroll-behavior-x:contain;overscroll-behavior-y:auto;touch-action:pan-x pinch-zoom}
.lld-dtrack::-webkit-scrollbar{display:none}
.lld-dtrack:focus-visible{box-shadow:0 0 0 2px rgba(159,240,223,.5);border-radius:13px}
/* focus lens: out-of-centre options recede */
.lld-ditem{flex:none;scroll-snap-align:center;white-space:nowrap;cursor:pointer;text-decoration:none;
  font-family:Outfit,system-ui,sans-serif;font-weight:600;font-size:.89rem;color:rgba(255,255,255,.74);
  padding:10px 16px;border-radius:12px;opacity:.42;transform:scale(.9);filter:blur(.35px);
  display:inline-flex;align-items:center;gap:7px;
  transition:opacity .22s cubic-bezier(.2,.7,.3,1),transform .22s cubic-bezier(.2,.7,.3,1),
             filter .22s ease,background .22s ease,color .22s ease}
.lld-ditem:hover{opacity:.8;filter:none;color:#fff}
.lld-ditem.is-sel{color:#06231D;opacity:1;transform:scale(1.03);filter:none;
  background:linear-gradient(180deg,#B9F7EA,#9FF0DF 52%,#7CE2CD);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.8),0 2px 3px rgba(4,20,16,.28),0 9px 24px rgba(159,240,223,.32)}
.lld-ditem.is-sel .lld-fic{filter:brightness(0)}
.lld-ditem.is-dim{opacity:.22;cursor:default;filter:none}
.lld-ditem.is-dim i{font-style:normal;font-weight:500;font-size:.76rem}
.lld-dhead{flex:none;font-family:Outfit,system-ui,sans-serif;font-size:.57rem;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:rgba(255,255,255,.32);padding:0 12px;pointer-events:none;align-self:center}
/* type-to-filter */
.lld-typebox{flex:none;display:flex;align-items:center;gap:7px;border:1px solid rgba(255,255,255,.2);
  background:rgba(255,255,255,.09);border-radius:999px;padding:8px 14px;font-size:.82rem;
  color:rgba(255,255,255,.6);min-width:158px}
.lld-typebox input{border:0;outline:0;font-family:inherit;font-size:.82rem;width:100%;background:none;color:#fff}
.lld-typebox input::placeholder{color:rgba(255,255,255,.42)}
/* A-Z: full alphabet always, 32px targets */
.lld-dial .lld-jump{display:flex;gap:4px;flex-wrap:wrap;justify-content:center;padding-top:3px}
.lld-jletter{width:32px;height:32px;border:1px solid rgba(255,255,255,.16);border-radius:9px;
  background:linear-gradient(180deg,rgba(255,255,255,.12),rgba(255,255,255,.035));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.17),0 1px 2px rgba(0,0,0,.24);
  font-family:Outfit,system-ui,sans-serif;font-weight:600;font-size:.82rem;color:rgba(255,255,255,.78);
  cursor:pointer;padding:0;transition:border-color .15s ease,color .15s ease}
.lld-jletter:hover:not(:disabled){border-color:#9FF0DF;color:#9FF0DF}
.lld-jletter.is-off{opacity:.24;cursor:default}
.lld-jletter:disabled{pointer-events:none}
/* search bar agrees with the dial's lift */
.lld-searchbar input{box-shadow:inset 0 1px 0 rgba(255,255,255,.6),0 12px 30px -12px rgba(0,0,0,.6)}
.lld-searchbar .lld-btn{box-shadow:inset 0 1px 0 rgba(255,255,255,.28),0 8px 22px -8px rgba(11,143,124,.7)}
@media(max-width:620px){
  .lld-dialrow{flex-wrap:wrap}
  .lld-dlabel{width:100%}
  .lld-typebox{width:100%}
  .lld-jletter{width:34px;height:34px}
}
@media(prefers-reduced-motion:reduce){
  .lld-ditem{filter:none;transition:none}
  .lld-dtrack{scroll-behavior:auto}
}

/* ---- featured rail at three across, portrait posters ---- */
.lld-rail{margin-top:30px}
.lld-railgrid{grid-template-columns:repeat(3,1fr);gap:18px}
@media(max-width:1000px){.lld-railgrid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:680px){.lld-railgrid{grid-template-columns:1fr}}
.lld-poster{aspect-ratio:4/5;border-radius:16px}
.lld-poster-panel{padding:14px}
.lld-poster-panel h2{font-size:1.06rem}
.lld-poster-panel .lld-role{font-size:.79rem}
.lld-poster-panel .lld-place{font-size:.75rem}
.lld-glass{padding:9px 11px;gap:9px;border-radius:11px}
.lld-gist{font-size:.73rem;gap:3px 10px}
.lld-pprice{font-size:.83rem}
.lld-pgo{padding:6px 12px;font-size:.77rem}
.lld-poster-mark{width:78px;height:78px;border-radius:20px;font-size:1.6rem;top:40%}
.lld-poster-top{top:11px;left:12px;right:12px}
.lld-poster-top .lld-mcat{font-size:.57rem;padding:4px 9px}
.lld-ribbon.is-static{font-size:.57rem;padding:4px 10px;margin-left:auto}
.lld-poster-top .lld-save{width:30px;height:30px}

/* ---- toolbar: sort beside the view toggle ---- */
.lld-barright{margin-left:auto;display:flex;align-items:center;gap:10px}
.lld-sortwrap{display:inline-flex;align-items:center;gap:8px;border:1px solid rgba(14,27,61,.12);border-radius:999px;
  background:#fff;padding:0 4px 0 14px;height:44px;margin:0}
.lld-sortwrap label{font-size:.78rem;color:#8494AC}
.lld-sortwrap select{border:0;background:none;font-family:Outfit,system-ui,sans-serif;font-weight:600;font-size:.85rem;
  color:#16233F;padding:8px 10px 8px 4px;cursor:pointer}
.lld-viewtoggle{height:44px;align-items:center}
.lld-bar{align-items:center}

/* ---- v1.7.4: seamless region swap ---- */
/* The swapped region animates as one piece; the hero and dial are outside it
   and never move. min-height is set inline during a swap to hold the floor. */
#lld-results{view-transition-name:lld-results;contain:layout style}
#lld-results[aria-busy="true"]{opacity:.72;transition:opacity .12s ease}
@media(prefers-reduced-motion:no-preference){
  ::view-transition-old(lld-results){animation:lld-out .16s ease both}
  ::view-transition-new(lld-results){animation:lld-in .22s ease both}
}
@keyframes lld-out{to{opacity:0}}
@keyframes lld-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
/* posters and card media already carry aspect-ratio, so images landing late
   cannot change the region's height mid-swap */
.lld-poster,.lld-media{contain:layout paint}

/* ================= v1.8.0 — cards fold to content, mobile fixes ================= */

/* Cards size to their own content instead of stretching to the tallest in the
   row. A tutor with two badges was being padded out to match a photo card with
   seven, which is the "elongated card with no data" — the foot was pinned to the
   bottom of a height it never needed. */
.lld-grid{align-items:start}
.lld-railgrid{align-items:start}
.lld-foot{margin-top:14px}          /* was auto: no longer pushing to a false floor */
.lld-cbody{flex:0 1 auto}

/* save button sits in the photo, not on a row of its own beneath it */
.lld-msave{position:absolute;top:10px;right:10px;z-index:3}
.lld-msave .lld-save{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.32);color:#fff;
  backdrop-filter:blur(4px)}
.lld-msave .lld-save.is-on{background:#fff;color:#E0526B;border-color:#fff}
.lld-savebar{display:none}

/* facts: let a long value wrap rather than forcing the card wider or spilling */
.lld-facts{gap:10px 18px}
.lld-facts dd{white-space:normal;overflow-wrap:anywhere}
.lld-facts>div{flex:0 1 auto;min-width:0}

/* ---- mobile: the grid floor was unconditional, so 340px overflowed a 360px
   phone and the whole page scrolled sideways ---- */
.lld-grid{grid-template-columns:1fr}
@media(min-width:700px){.lld-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}}
@media(min-width:1120px){.lld-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:400px){.lld-wrap{padding:0 14px}}

/* dial on a phone: 42% side padding left ~50px of visible centre, so the
   neighbouring options — the whole point of the dial — were invisible */
@media(max-width:620px){
  .lld-dtrack{padding:0 calc(50% - 92px)}
  .lld-ditem{font-size:.86rem;padding:9px 13px}
  .lld-dial{padding:14px 13px 15px}
  .lld-dview{height:44px}
}

/* iOS force-zooms any input under 16px and leaves the page zoomed */
.lld-typebox input,.lld-sortwrap select,.lld-searchbar input{font-size:16px}

/* tap targets */
.lld-ico{width:40px;height:40px}
.lld-save{width:40px;height:40px}
.lld-jletter{width:36px;height:36px}

/* v1.51.0 — the card heart was never reached by the rule above.
   .lld-card>.lld-save (child combinator + class, specificity 0,2,0) beats the
   bare .lld-save{width:40px} (0,1,0) regardless of source order, so the most-
   tapped icon in the directory stayed 32px on touch despite the tap-target fix
   existing two rules away. Scoped to pointer:coarse so the desktop 32px is
   untouched. Originally written against 1.49.x and lost when the asset moved
   on; re-applied here against the live file. */
@media(pointer:coarse){
  .lld-card>.lld-save{width:40px;height:40px}
}
@media(max-width:620px){.lld-jletter{width:38px;height:38px}}

/* iOS URL bar changes vh mid-scroll; dvh does not */
#lld-map{height:min(70dvh,620px)}
@supports not (height:1dvh){#lld-map{height:min(70vh,620px)}}

/* the aurora already steps down on small screens; the dial's blur did not */
@media(max-width:700px){
  .lld-dial{backdrop-filter:blur(4px)}
  .lld-glass{backdrop-filter:blur(5px)}
}

/* ================= v1.8.1 — non-scrollable dial, tidy grid, poster glass ================= */

/* The dial is a selector, not a scroller. overflow:hidden removes native
   scrolling and momentum entirely — the wheel, a swipe, a click, an arrow key
   and the A-Z are the only ways it moves, and every one steps the selection
   through centreOn(). scrollLeft remains programmable under overflow:hidden,
   so the existing positioning code is untouched. */
.lld-dtrack{overflow-x:hidden;scroll-snap-type:none;touch-action:pan-y;
  overscroll-behavior-x:none}

/* poster glass: the facts line owns row one; price and View share row two.
   Deliberate two rows instead of accidental wrapping — "View" can no longer
   end up orphaned under the facts. */
.lld-glass{flex-wrap:wrap;row-gap:8px}
.lld-gist-row{flex:1 1 100%;min-width:0}
.lld-pprice{margin-left:0}
.lld-poster .lld-pgo{margin-left:auto}

/* the +N overflow chip */
.lld-badge.is-more{color:#8494AC;border-style:dashed;background:transparent}

/* tidy grid: with badges capped the heights converge; keep cards on their own
   content but align the visual rhythm */
.lld-cbody{padding-bottom:14px}
.lld-foot{padding-top:12px;border-top:1px solid rgba(14,27,61,.08)}

/* search bar: full-width read as a void next to a 44px button */
.lld-searchbar{max-width:640px}
@media(max-width:700px){.lld-searchbar{max-width:none}}

/* ================= v1.9.0 — W2: search in the well ================= */

/* The dial holds three rungs now: Search, Browse, Location. Tighter gaps than
   1.8.1 because the panel is doing more work in less height. */
.lld-dial{gap:9px;padding:14px 16px 13px;margin-top:18px}
.lld-dial::before{bottom:11px}                      /* guide stops short of the A-Z */
.lld-dialrow{gap:11px}
.lld-dlabel{width:70px;font-size:.6rem}
.lld-dview{height:44px}

/* row zero: a real white input inside the dark well. The inner shadow is kept
   strong deliberately — a search field on a dark ground needs the contrast or
   it stops looking like the primary action. */
.lld-dialrow.is-search{display:flex;align-items:center;margin:0}
.lld-dview.is-input{background:none;box-shadow:none;overflow:visible;height:46px;display:flex;align-items:center}
.lld-dview.is-input input{width:100%;max-width:600px;height:46px;border:0;border-radius:12px;padding:0 16px;
  font:inherit;font-size:16px;color:#16233F;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.55),0 10px 24px -12px rgba(0,0,0,.6)}
.lld-dview.is-input input:focus{outline:2px solid #9FF0DF;outline-offset:2px}
.lld-dgo{flex:none;height:46px;padding:0 24px;border:0;border-radius:12px;cursor:pointer;
  font-family:Outfit,system-ui,sans-serif;font-weight:600;font-size:.92rem;color:#fff;
  background:linear-gradient(180deg,#14C4A9,#0B8F7C);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.28),0 8px 22px -10px rgba(11,143,124,.7)}
.lld-dgo:hover{background:linear-gradient(180deg,#17D3B6,#0C9C87)}
/* the old standalone bar is gone */

/* hero: less padding above, none below — the dial is now the last thing in it */
.lld-ahero{padding:30px 0 0}
.lld-ahero h1{font-size:clamp(1.6rem,3.1vw,2.15rem);margin:6px 0 4px}
.lld-lede{font-size:.9rem;max-width:640px}

/* A-Z hidden until the town filter is used */
.lld-dial .lld-jump[hidden]{display:none}
.lld-dial .lld-jump{padding-top:6px;margin-top:2px;border-top:1px solid rgba(255,255,255,.09)}

@media(max-width:700px){
  .lld-dialrow.is-search{flex-wrap:wrap}
  .lld-dialrow.is-search .lld-dlabel{width:100%}
  .lld-dview.is-input{flex:1 1 200px}
  .lld-dgo{padding:0 18px}
}
@media(max-width:620px){
  .lld-dial{padding:12px 12px 12px;gap:8px}
  .lld-dview{height:42px}
}

/* ================= v1.9.1 — cards on a fixed row structure ================= */
/*
 * The grid looked random because each card was free to be any height: badges
 * wrapped to one, two or three rows, roles to one or three lines, facts to one
 * or two. Nine cards, nine heights.
 *
 * Every card is now the same set of fixed-height slots — header, place, badges,
 * facts, foot — so a logo card is always the same height as another logo card,
 * and a photo card is that plus its 16:9 banner. Rows level up on their own and
 * equal-height stretch becomes safe again, which removes both the raggedness
 * and the white wells that stretching used to cause.
 */
.lld-grid{align-items:stretch}
.lld-card{display:flex;flex-direction:column}
.lld-cbody{display:flex;flex-direction:column;flex:1 1 auto;gap:0}

/* header: name one line, role two — clamped, not wrapped away */
.lld-top{align-items:flex-start;min-height:60px}
.lld-t{min-width:0;flex:1}
.lld-card h2{font-size:1.02rem;line-height:1.25;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;
  overflow:hidden;word-break:break-word}
.lld-card .lld-role{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  min-height:2.6em;margin-top:3px}
.lld-card.is-photo .lld-role{min-height:0;-webkit-line-clamp:1}

/* place: always one line */
.lld-place{min-height:20px;margin:11px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* badges: exactly one row, ever. Overflow becomes +N. */
.lld-badges{display:flex;flex-wrap:nowrap;overflow:hidden;gap:6px;margin-top:11px;min-height:30px;align-items:center}
.lld-badge{flex:none;white-space:nowrap}
.lld-badge.is-more{flex:none}

/* facts: four fixed columns on one line, values never wrap */
.lld-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 10px;margin-top:12px;padding-top:12px;
  border-top:1px solid rgba(14,27,61,.1);min-height:52px;align-content:start}
.lld-facts>div{min-width:0}
.lld-facts dt{font-size:.56rem;letter-spacing:.09em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lld-facts dd{font-size:.83rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}

/* foot: pinned, so every card ends on the same line */
.lld-foot{margin-top:auto;padding-top:13px;display:flex;align-items:center;gap:9px}

/* photo cards: banner plus the identical body below it */
.lld-card.is-photo .lld-cbody{padding-top:13px}
@media(max-width:520px){
  .lld-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 10px;min-height:0}
  .lld-top{min-height:0}
  .lld-card .lld-role{min-height:0}
}

/* ================= v1.9.2 — legibility + Aurora true to mockup D ================= */

/* town filter: the theme paints inputs white, so white text vanished into it.
   Both are now forced — dark translucent box, white text — beyond any theme rule. */
.lld-dial .lld-typebox{background:rgba(3,12,26,.36);border-color:rgba(255,255,255,.22)}
.lld-dial .lld-typebox input{background:transparent!important;color:#fff!important;
  -webkit-text-fill-color:#fff;caret-color:#9FF0DF}
.lld-dial .lld-typebox input::placeholder{color:rgba(255,255,255,.45);-webkit-text-fill-color:rgba(255,255,255,.45)}

/* search input: the track's edge-fade gradients were painting over the first
   word of the placeholder. The search row has no track, so no fades at all. */
.lld-dview.is-input::before,.lld-dview.is-input::after{display:none}

/* ---- Aurora, deeper (mockup D) ---- */
/* five layers: two auroral glows, a violet counter-glow, the depth vignette,
   and the base sweep */
.lld-ahero{background:
  radial-gradient(70% 100% at 78% -10%, rgba(46,207,184,.34) 0%, rgba(46,207,184,0) 55%),
  radial-gradient(60% 90% at 18% 6%, rgba(88,120,255,.24) 0%, rgba(88,120,255,0) 60%),
  radial-gradient(45% 70% at 55% 30%, rgba(20,196,169,.12) 0%, rgba(20,196,169,0) 65%),
  radial-gradient(120% 130% at 50% 130%, rgba(2,9,21,.97) 0%, rgba(2,9,21,0) 62%),
  linear-gradient(150deg,#040D1E 0%,#0A1A38 38%,#0D2F44 72%,#114B5F 100%)}
/* ribbons behind the type: bigger, brighter, slower blur */
.lld-aur{opacity:.65;filter:blur(34px);inset:-25% -12% auto -12%;height:165%;
  background:
    conic-gradient(from 210deg at 28% 18%, rgba(159,240,223,.22), transparent 30%),
    conic-gradient(from 15deg at 82% 28%, rgba(140,180,255,.17), transparent 26%)}
/* grain over the whole surface, not just the flats */
.lld-grain{opacity:.055;z-index:2}
.lld-ahero>.lld-wrap{z-index:3}

/* the dial: a deeper well with a brighter mint seam */
.lld-dial{border-color:rgba(255,255,255,.17);
  background:linear-gradient(180deg,rgba(255,255,255,.11),rgba(255,255,255,.02)),
    linear-gradient(180deg,rgba(2,9,21,.44),rgba(2,9,21,.10));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.24),inset 0 16px 30px -18px rgba(0,0,0,.7),
    0 18px 44px -22px rgba(0,0,0,.6)}
.lld-dial::before{background:repeating-linear-gradient(180deg,rgba(159,240,223,.7) 0 4px,transparent 4px 9px);
  box-shadow:0 0 12px rgba(159,240,223,.35)}
.lld-dview{background:linear-gradient(180deg,rgba(2,9,21,.34),rgba(2,9,21,.08));
  box-shadow:inset 0 1px 7px rgba(0,0,0,.38)}
@media(max-width:700px){.lld-aur{filter:blur(22px);opacity:.5}}

/* ================= v1.10.0 — the final card ================= */
/*
 * One structure for every listing. Three independent ceilings stop anything
 * overwhelming the body: the showcase sentence is capped by the field AND
 * clamped by line; pills shrink before they overflow; the tile rack is a fixed
 * height whatever it holds. Nothing can exceed its slot, so no clamp is ever
 * fighting content and rows level without help.
 */
.lld-card{position:relative;display:flex;flex-direction:column;background:#fff;border:1px solid rgba(14,27,61,.12);
  border-radius:16px;overflow:visible;
  transition:border-color .18s ease,box-shadow .18s ease}
.lld-card:hover{border-color:rgba(14,159,139,.42);box-shadow:0 10px 30px -16px rgba(5,11,30,.34)}
.lld-card:focus-within{border-color:#0E9F8B;box-shadow:0 0 0 3px rgba(14,159,139,.18)}
.lld-cbody{position:relative;display:flex;flex-direction:column;flex:1;padding:14px 15px 12px;gap:0}

/* the stretched link: one anchor, whole-card target, one tab stop */
.lld-card .lld-jump{color:inherit;text-decoration:none}
.lld-card .lld-jump::after{content:"";position:absolute;inset:0;z-index:1;border-radius:16px}
.lld-card .lld-save,.lld-strip,.lld-ico,.lld-go.is-up{position:relative;z-index:2}

/* heart: top-right, out of the content flow, larger than before */
.lld-card>.lld-save{position:absolute;top:11px;right:12px;width:32px;height:32px;border-radius:9px;
  border:1px solid rgba(14,27,61,.12);background:#fff;color:#C9D1DE;display:grid;place-items:center;cursor:pointer;
  transition:color .15s ease,border-color .15s ease,background .15s ease,transform .15s ease}
.lld-card>.lld-save svg{width:16px;height:16px}
.lld-card>.lld-save:hover{color:#E0526B;border-color:rgba(224,82,107,.38)}
.lld-card>.lld-save.is-on{background:#FFF5F7;color:#E0526B;border-color:rgba(224,82,107,.45)}
.lld-card>.lld-save.is-on svg{fill:currentColor;width:17px;height:17px}
.lld-savebar,.lld-msave{display:none}

/* eyebrow: larger — it is the card's category signpost. Right padding keeps a
   long category clear of the heart. */
.lld-eyebrow{font-family:Outfit,system-ui,sans-serif;font-size:.68rem;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:#0B5E52;padding-right:52px;min-height:16px;margin:0}

/* head: role sits under the title inside the text column, sharing the logo's
   height instead of starting a new row — about 14px off every card */
.lld-top{display:flex;gap:12px;align-items:flex-start;margin-top:9px;min-height:0}
.lld-logo{flex:none;width:62px;height:62px;border-radius:15px;display:grid;place-items:center;overflow:hidden;
  background:linear-gradient(135deg,#0E1B3D,#0F4A3E);color:#9FF0DF;
  font-family:Outfit,system-ui,sans-serif;font-weight:700;font-size:1.08rem}
.lld-logo img{width:100%;height:100%;object-fit:contain;padding:6px;background:#fff}
.lld-t{min-width:0;flex:1;padding-top:2px;display:block}
.lld-card h2{font-family:Outfit,system-ui,sans-serif;font-size:1.02rem;font-weight:700;line-height:1.22;
  letter-spacing:-.005em;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.lld-card .lld-role{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  font-family:'DM Sans',system-ui,sans-serif;font-style:normal;font-size:.83rem;font-weight:500;color:#5B6B85;
  line-height:1.3;margin-top:3px;min-height:2.1em}
.lld-place{font-size:.8rem;color:#8494AC;margin:9px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-height:19px}

/* ---- showcase slot: tile rack with the label ----
   1.40.0: these were bare `.lld-tile` — the same class the single's "At a
   glance" facts tiles use. Two owners, identical specificity, and this block
   sits later in the file, so it won every contested property: the facts tiles
   were being handed height:62px, padding:0, background:none and cursor:pointer.
   The .lld-jump collision of 1.11.4, repeated. Both families are now scoped to
   the container that actually emits them. No values changed. ---- */
.lld-slab{font-family:Outfit,system-ui,sans-serif;font-size:.53rem;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:#8494AC;margin:11px 0 0;min-height:13px}
.lld-strip{display:flex;gap:6px;margin-top:5px;min-height:62px}
.lld-strip .lld-tile{flex:1 1 0;min-width:0;height:62px;border-radius:10px;overflow:hidden;position:relative;
  border:1px solid rgba(14,27,61,.08);padding:0;background:none;cursor:pointer;display:block}
.lld-strip .lld-tile img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s ease}
.lld-strip .lld-tile:hover img{transform:scale(1.06)}
.lld-strip .lld-tile.is-count::after{content:attr(data-n);position:absolute;inset:0;display:grid;place-items:center;
  background:rgba(6,14,32,.55);color:#fff;font-family:Outfit,system-ui,sans-serif;font-weight:700;font-size:.86rem}
.lld-strip .lld-tile.is-said{flex:1 1 100%;border:0;padding:9px 12px;display:flex;align-items:center;cursor:default;
  background:linear-gradient(135deg,#0E1B3D 0%,#123A4A 58%,#0F5A4C 100%);color:#DCE9E6;text-align:left}
.lld-strip .lld-tile.is-said .lld-mark{font-family:Outfit,system-ui,sans-serif;font-size:1.45rem;font-weight:700;color:#9FF0DF;
  opacity:.55;line-height:1;margin-right:9px;align-self:flex-start}
.lld-strip .lld-tile.is-said>span:last-child{font-size:.78rem;line-height:1.4;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.lld-strip .lld-tile.is-empty{flex:1 1 100%;border-style:dashed;background:#FBFCFD;display:grid;place-items:center;
  color:#8494AC;font-size:.76rem;cursor:default}

/* ---- pills: one row; a long credential narrows instead of overflowing ---- */
.lld-badges{display:flex;flex-wrap:nowrap;gap:6px;margin-top:10px;min-height:28px;align-items:center;overflow:hidden}
.lld-badge{flex:0 1 auto;min-width:0;display:inline-flex;align-items:center;gap:5px;font-size:.74rem;font-weight:500;
  color:#43536E;border:1px solid rgba(14,27,61,.12);border-radius:9px;padding:5px 9px;background:#fff}
.lld-badge>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lld-badge svg{flex:none}
.lld-badge.is-more{flex:none;color:#8494AC;border-style:dashed;background:transparent}

.lld-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 10px;margin-top:10px;padding-top:10px;
  border-top:1px solid rgba(14,27,61,.09);min-height:0}
.lld-facts dt{font-size:.54rem;letter-spacing:.09em}
.lld-facts dd{font-size:.82rem;margin-top:2px}
.lld-foot{display:flex;align-items:center;gap:8px;margin-top:auto;padding-top:11px;border-top:0}
.lld-ico{width:38px;height:38px;border-radius:10px}
.lld-go{margin-left:auto;font-family:Outfit,system-ui,sans-serif;font-weight:600;font-size:.84rem;color:#0E9F8B;
  text-decoration:none}
.lld-card:hover .lld-go{text-decoration:underline}

/* ---- the gallery modal ---- */
.lld-modal{position:fixed;inset:0;z-index:9999;display:none;align-items:center;justify-content:center;padding:22px}
.lld-modal.is-open{display:flex}
.lld-mback{position:absolute;inset:0;background:rgba(4,11,26,.72);backdrop-filter:blur(6px)}
.lld-mbox{position:relative;z-index:1;width:min(720px,100%);background:#fff;border-radius:20px;overflow:hidden;
  box-shadow:0 30px 80px -20px rgba(2,8,20,.7)}
.lld-mstage{position:relative;aspect-ratio:4/3;background:#0B1730}
.lld-mstage img{width:100%;height:100%;object-fit:cover;display:block}
.lld-mx,.lld-mnav{position:absolute;z-index:3;border:0;cursor:pointer;color:#fff;background:rgba(6,14,32,.55);
  backdrop-filter:blur(4px)}
.lld-mx{top:12px;right:12px;width:40px;height:40px;border-radius:12px;font-size:1rem}
.lld-mnav{top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:12px;font-size:1.1rem}
.lld-mnav.is-prev{left:12px}.lld-mnav.is-next{right:12px}
.lld-mnav:hover,.lld-mx:hover{background:rgba(6,14,32,.78)}
.lld-mcount{position:absolute;left:14px;bottom:12px;z-index:3;font-family:Outfit,system-ui,sans-serif;font-size:.68rem;
  font-weight:700;color:#fff;background:rgba(6,14,32,.5);border-radius:999px;padding:5px 11px}
.lld-mbar{display:flex;align-items:center;gap:14px;padding:13px 16px}
.lld-mbar h3{font-family:Outfit,system-ui,sans-serif;font-size:.98rem;font-weight:700;margin:0}
.lld-mbar p{font-size:.76rem;color:#8494AC;margin:2px 0 0}
.lld-mgo{margin-left:auto;flex:none;height:40px;padding:0 18px;border-radius:11px;background:#0E1B3D;color:#fff;
  font-family:Outfit,system-ui,sans-serif;font-weight:600;font-size:.86rem;display:inline-flex;align-items:center;
  text-decoration:none}
.lld-mgo:hover{background:#16295A}

@media(max-width:520px){
  .lld-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 10px}
  .lld-card .lld-role{min-height:0}
  .lld-eyebrow{padding-right:56px}
}

/* ---- 1.10.0: the photo/logo card split is gone ----------------------------
   .lld-media, .lld-mover, .lld-mlogo, .lld-mcat and .is-photo are no longer
   emitted by card.php. The rules above are left in place because the featured
   poster still uses some of them; these two lines make sure nothing from the
   old variant can reappear on a grid card if a cached fragment survives. */
.lld-card .lld-media,.lld-card .lld-mover,.lld-card .lld-mcat{display:none}
.lld-card.is-photo .lld-cbody{padding-top:14px}

/* ================= v1.10.1 — make the live card match the mockup ================= */
/*
 * Two faults, both from rules written before the 1.10.0 card existed.
 *
 * 1. A container query at 330px stacked the head — logo on one row, title
 *    full-width below it with order:3. That was right for the old card, where
 *    the title sat beside a 64px logo AND a save button. The save button is out
 *    of the flow now, so the head has room and should never stack above 260px.
 *
 * 2. Badges were given flex:0 1 auto so a long credential could narrow. In
 *    practice four pills all narrowed at once and every label ellipsised to
 *    "Insur…". They do not shrink at all now — the row clips whole pills and
 *    the +N chip carries the remainder, which is what the mockup does.
 */
@container lldcard (max-width: 330px){
  .lld-top{flex-wrap:nowrap;gap:12px}
  .lld-logo{width:62px;height:62px}
  .lld-t{flex:1 1 auto;order:0;min-width:0}
}
@container lldcard (max-width: 260px){
  .lld-top{flex-wrap:wrap}
  .lld-t{flex:1 1 100%;order:0}
}
.lld-card .lld-t{min-width:0}

/* pills: never squeeze — clip whole chips instead */
.lld-badges{flex-wrap:nowrap;overflow:hidden}
.lld-badge{flex:none;min-width:0}
.lld-badge>span{overflow:visible;text-overflow:clip;white-space:nowrap}
.lld-badge.is-more{flex:none}

/* the theme centres headings and paragraphs inside articles on some templates;
   the card is always left-aligned */
.lld-card,.lld-cbody,.lld-card h2,.lld-card .lld-role,.lld-card .lld-place{text-align:left}
.lld-card h2 a{text-align:left}

/* wrap: match the mockup's measure rather than the theme's full-width column */
.lld-page .lld-wrap{max-width:1120px;margin-left:auto;margin-right:auto;padding-left:20px;padding-right:20px}
.lld-grid{grid-template-columns:repeat(3,1fr);gap:16px}
@media(max-width:1000px){.lld-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:660px){.lld-grid{grid-template-columns:1fr}}

/* ================= v1.10.2 — crown row, badge fitting, title alignment ================= */

/* Crown: category left, featured ribbon right, both clear of the heart. The
   ribbon was pinned top-right — the heart's corner — so featured cards had the
   two stacked on each other. */
.lld-crown{display:flex;align-items:center;gap:8px;padding-right:52px;min-height:22px}
.lld-crown .lld-eyebrow{padding-right:0;min-height:0;flex:0 1 auto;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lld-card .lld-ribbon.is-static{position:static;flex:none;margin-left:auto;
  font-family:Outfit,system-ui,sans-serif;font-size:.55rem;font-weight:700;letter-spacing:.09em;
  text-transform:uppercase;background:#0E1B3D;color:#FFE9B8;border-radius:999px;padding:4px 10px;white-space:nowrap}

/* Title and role share one left edge. Explicit rather than inherited: the h2 is
   a -webkit-box for line clamping, and box-pack decides alignment there. */
.lld-card .lld-t,.lld-card .lld-t h2,.lld-card .lld-t h2 a,.lld-card .lld-role{
  text-align:left;-webkit-box-pack:start;justify-content:flex-start}
.lld-card .lld-t h2{margin-left:0;padding-left:0}

/* Badges: JS hides whichever chips do not fit whole and rewrites the +N, so a
   partial chip can never be clipped at the card edge. These rules just make the
   measurement honest — no shrinking, no ellipsis. */
.lld-badges{flex-wrap:nowrap;overflow:hidden;min-height:30px}
.lld-badge{flex:none;min-width:0;white-space:nowrap}
.lld-badge[hidden]{display:none}
.lld-badge>span{overflow:visible;text-overflow:clip}

/* ================= v1.10.3 — the search row was invisible, not missing ================= */
/*
 * The input never had a background-color. It had border:0, a white inset
 * highlight and a drop shadow — everything except the white itself — so on the
 * dark well it rendered transparent and the row read as absent. The theme's own
 * input background had been the thing filling it before our stylesheet started
 * loading last, which is why it only became invisible after the load-order fix.
 *
 * Belt and braces: colour, caret and placeholder are forced past any theme rule,
 * the same way the town filter had to be.
 */
.lld-dial .lld-dview.is-input input{
  background:#fff!important;-webkit-text-fill-color:#16233F;color:#16233F!important;
  caret-color:#0E9F8B;border:0;appearance:none;-webkit-appearance:none}
.lld-dial .lld-dview.is-input input::placeholder{color:#7C8AA3;-webkit-text-fill-color:#7C8AA3;opacity:1}
.lld-dial .lld-dview.is-input input::-webkit-search-cancel-button{-webkit-appearance:none}
/* the Go button sits on the dark ground, so give it the same lift as the input */
.lld-dial .lld-dgo{box-shadow:inset 0 1px 0 rgba(255,255,255,.28),0 8px 22px -10px rgba(11,143,124,.7)}
/* the label was 78px wide and faint; match the other rows and lift the contrast */
.lld-dial .lld-dialrow.is-search .lld-dlabel{width:70px;color:rgba(255,255,255,.62)}

/* ================= v1.11.0 — hero true to mockup D, plus a sticky search ================= */

/* ---- D's typography ---- */
.lld-ahero h1 em{font-family:Fraunces,Georgia,serif;font-style:italic;font-weight:400;color:#9FF0DF}
.lld-eyebrow-hero::before{height:1px;background:#9FF0DF;opacity:.75;border-radius:0}
.lld-lede{color:rgba(255,255,255,.74)}
.lld-ahero{padding:40px 0 0}
.lld-ahero h1{font-size:clamp(2rem,4.3vw,2.95rem);margin:10px 0 6px}
.lld-lede{max-width:610px;font-size:.96rem}

/* ---- the standalone search bar is back ---- */
/* .lld-searchbar was display:none from the W2 fold-in; D puts it above the dial
   as its own object, so it is restored here rather than by deleting that rule —
   additive, and the W2 rule stays available if the fold-in is ever wanted back. */
.lld-searchbar{display:flex;gap:10px;margin-top:22px;max-width:none;align-items:stretch}
.lld-searchbar input{flex:1;min-width:0;height:58px;border:0;border-radius:15px;padding:0 20px;
  font:inherit;font-size:16px;background:#fff!important;color:#16233F!important;-webkit-text-fill-color:#16233F;
  caret-color:#0E9F8B;appearance:none;-webkit-appearance:none;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.6),0 12px 30px -12px rgba(0,0,0,.6)}
/* BuddyBoss puts a magnifier background-image and padding-left:2rem on every
   input[type=search]; the image is overridden above, the padding is not. */
.lld-searchbar input[type=search]{padding-left:20px;background-image:none!important}
.lld-searchbar input::placeholder{color:#7C8AA3;-webkit-text-fill-color:#7C8AA3;opacity:1}
.lld-searchbar input::-webkit-search-cancel-button{-webkit-appearance:none}
.lld-searchbar input:focus{outline:2px solid #9FF0DF;outline-offset:3px}
.lld-searchbar .lld-btn{flex:none;height:58px;padding:0 30px;border-radius:15px;font-size:1rem;
  background:linear-gradient(180deg,#14C4A9,#0B8F7C);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.28),0 8px 22px -8px rgba(11,143,124,.7)}
.lld-searchbar .lld-btn:hover{background:linear-gradient(180deg,#17D3B6,#0C9C87)}
.lld-dial{margin-top:22px}

/* the A-Z is part of the instrument again */
.lld-dial .lld-jump{padding-top:8px;margin-top:4px;border-top:1px solid rgba(255,255,255,.09)}

/* ---- sticky search ---- */
/* Fixed, not sticky: the hero is overflow:hidden for the aurora ribbons and
   position:sticky cannot escape that. z-index 611 sits one below BuddyBoss's
   fixed header (612) so it slides under rather than over it. */
.lld-stick{position:fixed;left:0;right:0;top:var(--lld-stick-top,0px);z-index:611;
  transform:translateY(-110%);opacity:0;pointer-events:none;
  transition:transform .24s cubic-bezier(.2,.7,.3,1),opacity .18s ease;
  background:linear-gradient(180deg,rgba(6,17,36,.96),rgba(6,17,36,.9));
  backdrop-filter:blur(10px) saturate(1.1);
  border-bottom:1px solid rgba(159,240,223,.18);
  box-shadow:0 14px 34px -18px rgba(0,0,0,.7)}
.lld-stick.is-on{transform:none;opacity:1;pointer-events:auto}
.lld-stick-in{max-width:1120px;margin:0 auto;padding:10px 20px}
.lld-stick form{display:flex;gap:9px;align-items:stretch}
.lld-stick input{flex:1;min-width:0;height:44px;border:0;border-radius:12px;padding:0 16px;
  font:inherit;font-size:16px;background:#fff!important;color:#16233F!important;-webkit-text-fill-color:#16233F;
  caret-color:#0E9F8B;appearance:none;-webkit-appearance:none;background-image:none!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5)}
.lld-stick input::placeholder{color:#7C8AA3;-webkit-text-fill-color:#7C8AA3;opacity:1}
.lld-stick input:focus{outline:2px solid #9FF0DF;outline-offset:2px}
.lld-stick .lld-btn{flex:none;height:44px;padding:0 22px;border-radius:12px;
  background:linear-gradient(180deg,#14C4A9,#0B8F7C)}
@media(prefers-reduced-motion:reduce){.lld-stick{transition:none}}

@media(max-width:700px){
  .lld-searchbar{flex-wrap:wrap}
  .lld-searchbar input{height:52px;flex:1 1 100%}
  .lld-searchbar .lld-btn{height:48px;flex:1 1 100%;padding:0 20px}
  .lld-stick-in{padding:8px 14px}
  .lld-stick .lld-btn{padding:0 16px}
}

/* ================= v1.11.1 — the search bar was being hidden by an inline rule ================= */
/*
 * ROOT CAUSE of the search bar never appearing, in W2 and in D alike.
 *
 * An inline <style> block on this site carries a rule of the shape
 *   .bb-header-search-toggle, .search-…  { display:none !important }
 * and our form matched that selector group because it carried role="search".
 * Confirmed from the browser: the form was in the DOM, our display:flex was
 * parsed, and the inline !important rule still won.
 *
 * The role has moved to a wrapper div, so the form no longer matches. These two
 * declarations are belt and braces in case the selector group is wider than the
 * console truncated it to — .lld-page .lld-searchbar (0,2,0) outranks any
 * single-class or element-plus-attribute selector in that rule.
 */
.lld-page .lld-searchwrap{display:block}
.lld-page .lld-searchbar{display:flex!important}
.lld-stick .lld-stick-in{display:block}
.lld-stick form{display:flex!important}

/* ================= v1.11.4 — forensic fixes ================= */
/*
 * 1. NAMING COLLISION, root cause of "Select town not clickable".
 *    .lld-jump was BOTH the A-Z strip (1.7.1) and the card's stretched-link
 *    anchor (1.10.0). The anchor's ::after{inset:0} positions against the
 *    nearest positioned ancestor — for the strip that is .lld-dial — so from
 *    the moment 1.11.0 removed the strip's hidden attribute, an invisible
 *    overlay at z-index:1 covered the entire dial. Every click and mousedown
 *    landed on the strip div: pills, A-Z letters and the town filter were all
 *    dead, while the wheel (delegated by pointer Y on the dial) kept working —
 *    exactly the reported symptom. The same collision leaked the strip's
 *    justify-content:center onto card title anchors (the "centred titles"
 *    1.10.2 patched around) and, since 1.11.0, a border-top + padding-top on
 *    every card title. Both rule families are now scoped to their owners
 *    above; no markup or JS changed, so every existing listener works as
 *    written the moment the overlay is gone.
 *
 * 2. The sticky bar was tabbable while hidden (transform offscreen +
 *    aria-hidden, but focusable). visibility gates it out of the tab order.
 */
.lld-stick{visibility:hidden;transition:transform .24s cubic-bezier(.2,.7,.3,1),opacity .18s ease,visibility .24s}
.lld-stick.is-on{visibility:visible}

/* ================= v1.11.5 — breathing room around the results ================= */
/*
 * The grid and the map ran edge to edge against the 20px wrap gutter, so cards
 * touched the page rule and the map's rounded corners sat flush with the hero
 * above. Padding goes on the two blocks rather than on #lld-results, because
 * that region is swapped wholesale by lldGo() and is also the view-transition
 * root — changing its box would animate the padding on every search.
 *
 * Values are inset from the existing 1120px measure, not added to it, so the
 * cards' outer edges still line up with the hero, dial and bar above them.
 */
.lld-page .lld-grid{padding:6px 4px 4px;margin-inline:-4px}
.lld-page #lld-map{margin-top:6px;margin-bottom:6px}
@media(max-width:660px){
  .lld-page .lld-grid{padding:4px 0 2px;margin-inline:0}
}

/* ================= v1.12.0 — provider-declared vocabulary ================= */
/*
 * COMPLIANCE surface. LifeLearn does not verify, vet or endorse providers, so
 * nothing here may be styled to look like a LifeLearn endorsement — declared
 * chips are deliberately NOT green ticks. They read as neutral statements with
 * a dotted underline that signals "there is an explanation behind this", and
 * the explanation is the title attribute on the chip itself.
 */
.lld-badge.is-declared{border-style:solid;border-color:rgba(14,27,61,.16);background:#FBFCFD;cursor:help}
.lld-badge.is-declared>span{border-bottom:1px dotted rgba(91,107,133,.55)}
.lld-badge.is-declared svg{opacity:.7}

/* the labels are long now — let a few more fit before the fitter hides them */
.lld-card .lld-badge{font-size:.7rem;padding:5px 8px;gap:4px}
.lld-card .lld-badges{gap:5px}

/* the sub-line under the directory introduction — must stay readable */
.lld-lede-note{color:rgba(255,255,255,.66);font-size:.82rem;line-height:1.5;max-width:66ch;margin:9px 0 0}

/* the full disclaimer, archive foot and listing foot */
.lld-disclaimer{margin:26px 0 4px;padding:20px 22px;border:1px solid var(--line,rgba(14,27,61,.12));
  border-radius:14px;background:#FBFCFD}
.lld-disclaimer h2{font-family:Outfit,system-ui,sans-serif;font-size:.82rem;font-weight:700;
  letter-spacing:.02em;color:#0E1B3D;margin:0 0 8px}
.lld-disclaimer p{font-size:.82rem;line-height:1.6;color:#5B6B85;margin:0 0 8px}
.lld-disclaimer p:last-child{margin-bottom:0}

/* v1.12.1 — the single's hero chips carry the declaration note like every
   other surface. Dark ground here, so the cue is a dotted underline and a
   help cursor rather than the card's light treatment. */
.lld-cred.is-declared{cursor:help}
.lld-cred.is-declared{text-decoration:underline dotted rgba(220,233,245,.45);text-underline-offset:3px}

/* v1.13.0 — the showreel band on the single. Film leads when there is one;
   the band never renders without a playable film. 16:9 fills the measure;
   a portrait film sits tall and centred with soft borders, matching the
   promise made on the upload form. */
.lld-sfilm{margin-top:22px}
.lld-sfilm-frame{position:relative;border-radius:16px;overflow:hidden;background:#071A2C;
  box-shadow:0 18px 44px -22px rgba(7,26,44,.55);aspect-ratio:16/9}
.lld-sfilm-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.lld-sfilm.is-portrait .lld-sfilm-frame{aspect-ratio:9/16;max-width:400px;margin:0 auto;
  border:6px solid rgba(255,255,255,.75);border-radius:22px;
  box-shadow:0 18px 44px -20px rgba(7,26,44,.45)}
.lld-sfilm-prompt{margin:16px 0 0;font-size:.84rem;color:#5B6B85}
.lld-sfilm-prompt a{color:#0B8676;font-weight:600;text-decoration:none}
.lld-sfilm-prompt a:hover{text-decoration:underline}
@media(max-width:700px){.lld-sfilm{margin-top:14px}.lld-sfilm.is-portrait .lld-sfilm-frame{max-width:320px}}

/* v1.14.0 — the photo mosaic: the public rung of the media ladder. The film is
   a Parent Premium benefit; everyone else sees the provider's own photographs,
   which is the shop window. One lead image, up to four beside it. */
.lld-smos{display:grid;grid-template-columns:1.6fr 1fr;gap:8px;margin-top:22px}
.lld-smos.is-solo{grid-template-columns:1fr}
.lld-smos-lead{margin:0;border-radius:16px;overflow:hidden;background:#DDE6EA;aspect-ratio:16/10}
.lld-smos-lead img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}
.lld-smos-rest{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.lld-smos-rest img{width:100%;height:100%;object-fit:cover;object-position:center;display:block;
  border-radius:12px;background:#DDE6EA;aspect-ratio:4/3}
.lld-smos-note{margin:11px 0 0;font-size:.84rem;color:#5B6B85}
.lld-smos-note a{color:#0B8676;font-weight:600;text-decoration:none}
.lld-smos-note a:hover{text-decoration:underline}
@media(max-width:760px){
  .lld-smos{grid-template-columns:1fr;margin-top:14px}
  .lld-smos-lead{aspect-ratio:16/9}
  .lld-smos-rest{grid-template-columns:repeat(4,1fr)}
  .lld-smos-rest img{aspect-ratio:1/1;border-radius:9px}
}

/* v1.15.0 — the grouped declaration block. One heading, one note, short chips.
   Public by design: the hero states the same claims to everyone, so gating the
   detail behind Premium while advertising the chip would be the wrong way
   round. Neutral styling — no green, no ticks — because nothing here has been
   verified by LifeLearn. */
.lld-declared .lld-hint{margin:0 0 12px}
.lld-dchips{display:flex;flex-wrap:wrap;gap:8px}
.lld-dchip{display:inline-flex;align-items:center;gap:7px;font-size:.86rem;color:#16233F;
  background:#F2F5F8;border:1px solid rgba(14,27,61,.14);border-radius:999px;padding:7px 14px}
.lld-dchip svg{flex:none;opacity:.62}

/* v1.16.0 — the (i) note in the archive hero. Click, never hover: hover does
   not exist on a phone, and this carries compliance text. The panel is real
   markup hidden with clip, so screen readers and search engines still get it.
   The FULL disclaimer remains visible below the results — this is the second
   statement, not the only one. */
.lld-inote{position:relative;display:inline-block;margin-left:7px;vertical-align:baseline}
.lld-inote-btn{width:19px;height:19px;border-radius:50%;border:1px solid rgba(255,255,255,.42);
  background:rgba(255,255,255,.1);color:#fff;font-family:Fraunces,Georgia,serif;font-style:italic;
  font-size:.74rem;line-height:1;cursor:pointer;padding:0;display:inline-flex;align-items:center;
  justify-content:center;transition:background .15s ease,border-color .15s ease}
.lld-inote-btn:hover,.lld-inote-btn:focus-visible{background:rgba(255,255,255,.22);border-color:rgba(255,255,255,.7)}
.lld-inote-panel{position:absolute;left:0;top:calc(100% + 9px);z-index:6;width:min(330px,78vw);
  clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;white-space:nowrap}
.lld-inote.is-open .lld-inote-panel{position:absolute;clip:auto;clip-path:none;height:auto;
  overflow:visible;white-space:normal;display:block;
  background:#0B1F38;color:rgba(255,255,255,.86);border:1px solid rgba(255,255,255,.16);
  border-radius:11px;padding:12px 14px;font-size:.78rem;line-height:1.5;
  box-shadow:0 16px 38px -18px rgba(0,0,0,.7)}
@media(max-width:520px){.lld-inote-panel{left:auto;right:0}}

/* v1.16.0 — heart trimmed a touch; the labelled pill and the hero variant keep their size. */
.lld-save svg{width:15px;height:15px}
.lld-save.has-label svg{width:17px;height:17px}

/* v1.17.0 — the ask sits on the row it belongs to. Quiet enough not to shout
   over the value, close enough that it plainly refers to it. Right-aligned to
   follow the value, and left-aligned once the row stacks on a phone. */
.lld-sec-row .v .lld-ask{display:block;font-size:.76rem;line-height:1.45;color:#8494AC;
  font-style:italic;margin-top:3px;max-width:34ch;margin-left:auto}
@media(max-width:560px){
  .lld-sec-row{flex-direction:column;align-items:flex-start;gap:2px}
  .lld-sec-row .v{text-align:left}
  .lld-sec-row .v .lld-ask{margin-left:0;max-width:none}
}

/* ================= v1.18.0 — The Window: stage + floating identity card =================
 *
 * The centred hero and the two-column body are gone. The stage carries the
 * media at 21:9; the identity card floats across its lower edge and holds the
 * contact actions, so the primary action sits beside the name instead of in a
 * column that empties as the reader scrolls. One 860px measure beneath.
 *
 * Three stage states, decided in PHP by $band: film, photos (66/33), or a
 * typographic plate when the provider has neither — never an empty frame.
 */
.lld-stage{position:relative;overflow:visible;color:#fff;padding:18px 0 92px;border-radius:0 0 22px 22px;
  background:
    radial-gradient(80% 110% at 80% -10%, rgba(46,207,184,.24) 0%, transparent 55%),
    radial-gradient(55% 90% at 15% 0%, rgba(88,120,255,.16) 0%, transparent 60%),
    linear-gradient(150deg,#040D1E 0%,#0A1A38 40%,#0D2F44 76%,#114B5F 100%)}
.lld-stage .lld-crumbs{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.lld-stagepill{margin-left:auto;font-family:Outfit,system-ui,sans-serif;font-size:.56rem;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;color:#9FF0DF;border:1px solid rgba(159,240,223,.4);
  border-radius:999px;padding:5px 12px}

/* film */
.lld-screen{position:relative;border-radius:16px;overflow:hidden;aspect-ratio:21/9;background:#071A2C;
  box-shadow:0 22px 50px -26px rgba(0,0,0,.8)}
.lld-screen iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.lld-screen.is-portrait{aspect-ratio:9/16;max-width:380px;margin:0 auto;border:6px solid rgba(255,255,255,.72);
  border-radius:22px}

/* photographs — 66/33, two stacked on the short side */
.lld-trip{display:grid;grid-template-columns:2fr 1fr;gap:9px;aspect-ratio:21/9}
.lld-trip.is-solo{grid-template-columns:1fr}
.lld-trip-l{margin:0;border-radius:16px;overflow:hidden;background:#0B2036}
.lld-trip-l img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}
.lld-trip-r{display:grid;grid-template-rows:1fr 1fr;gap:9px;min-height:0}
.lld-trip-r img{width:100%;height:100%;object-fit:cover;object-position:center;display:block;
  border-radius:14px;background:#0B2036;min-height:0}

/* neither — the plate. Shorter than the media stages, so no dead space. */
.lld-plate{position:relative;overflow:hidden;border-radius:16px;padding:30px 28px;display:flex;align-items:center;
  gap:22px;border:1px solid rgba(159,240,223,.2);
  background:linear-gradient(120deg,rgba(255,255,255,.05),transparent 45%),rgba(3,12,26,.3)}
.lld-plate::before{content:"";position:absolute;inset:-40%;pointer-events:none;filter:blur(50px);opacity:.5;
  background:conic-gradient(from 210deg at 30% 40%,rgba(46,207,184,.4),transparent 40%)}
.lld-plate-mono{position:relative;flex:none;width:92px;height:92px;border-radius:24px;display:grid;place-items:center;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);
  font-family:Outfit,system-ui,sans-serif;font-weight:800;font-size:2rem;color:#9FF0DF}
.lld-plate-say{position:relative;min-width:0}
.lld-plate-say p{font-family:Fraunces,Georgia,serif;font-style:italic;font-size:1.18rem;line-height:1.45;
  color:rgba(255,255,255,.92);margin:0;max-width:44ch}
.lld-plate-say span{display:block;margin-top:8px;font-size:.74rem;color:rgba(255,255,255,.55)}

/* ---- the identity card ---- */
.lld-idwrap{position:relative;z-index:3;margin-top:-74px}
.lld-idcard{background:#fff;border:1px solid rgba(14,27,61,.12);border-radius:18px;padding:20px 22px;
  box-shadow:0 26px 60px -24px rgba(7,21,40,.45);
  display:grid;grid-template-columns:auto 1fr minmax(210px,auto);gap:18px;align-items:start}
.lld-idmark{width:60px;height:60px;border-radius:16px;overflow:hidden;display:grid;place-items:center;
  background:linear-gradient(135deg,#0E1B3D,#0F4A3E);color:#9FF0DF;
  font-family:Outfit,system-ui,sans-serif;font-weight:800;font-size:1.3rem}
.lld-idmark img{width:100%;height:100%;object-fit:contain;background:#fff;padding:6px}
.lld-idmain{min-width:0}
.lld-idmain .lld-h-eyebrow{margin-bottom:7px;border-color:rgba(14,159,139,.35);color:#0B8676;
  background:rgba(14,159,139,.07)}
.lld-idcard h1{font-family:Outfit,system-ui,sans-serif;font-size:1.5rem;font-weight:800;letter-spacing:-.015em;
  line-height:1.15;margin:0;color:#0E1B3D}
.lld-idcard .lld-srole{font-family:Fraunces,Georgia,serif;font-style:italic;color:#5B6B85;font-size:.97rem;margin:3px 0 0}
.lld-idmeta{display:flex;gap:12px;flex-wrap:wrap;font-size:.8rem;color:#8494AC;margin:8px 0 0}
.lld-idmeta b{color:#16233F;font-weight:600}
.lld-iddecl{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin-top:13px;padding-top:13px;
  border-top:1px dashed rgba(14,27,61,.12)}
.lld-iddecl-lead{font-family:Outfit,system-ui,sans-serif;font-size:.58rem;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:#8494AC}
.lld-iddecl-c{font-size:.76rem;border:1px solid rgba(14,27,61,.16);background:#F6F8FA;border-radius:999px;padding:4px 11px}
.lld-iddecl-i{width:17px;height:17px;border-radius:50%;border:1px solid rgba(14,27,61,.3);color:#5B6B85;
  font-family:Fraunces,Georgia,serif;font-style:italic;font-size:.68rem;display:grid;place-items:center;cursor:help}
.lld-idcta{display:flex;flex-direction:column;gap:8px;align-items:stretch}
.lld-idprice{margin:0 0 2px;text-align:right;font-size:.74rem;color:#8494AC}
.lld-idprice b{display:block;font-family:Outfit,system-ui,sans-serif;font-size:1.02rem;color:#16233F}
.lld-idnote{margin:2px 0 0;font-size:.74rem;color:#8494AC;text-align:center}
.lld-idcta .lld-btn{height:46px;padding:0 18px}
.lld-idcta .lld-savewrap{display:block}
.lld-idcta .lld-save.has-label{width:100%;height:46px}
@media(max-width:900px){
  .lld-idcard{grid-template-columns:auto 1fr}
  .lld-idcta{grid-column:1/-1}
  .lld-idprice{text-align:left}
}
@media(max-width:620px){
  .lld-stage{padding-bottom:78px}
  .lld-screen,.lld-trip{aspect-ratio:16/9}
  .lld-trip{grid-template-columns:1fr;aspect-ratio:auto}
  .lld-trip-l{aspect-ratio:16/9}
  .lld-trip-r{grid-template-rows:none;grid-template-columns:1fr 1fr}
  .lld-trip-r img{aspect-ratio:4/3}
  .lld-plate{flex-direction:column;align-items:flex-start;gap:14px;padding:22px 20px}
  .lld-plate-mono{width:64px;height:64px;border-radius:18px;font-size:1.4rem}
  .lld-plate-say p{font-size:1rem}
  .lld-idwrap{margin-top:-62px}
  .lld-idcard{grid-template-columns:1fr;gap:14px}
}

/* ---- one measure, no sidebar ---- */
.lld-sbody.is-one{display:block;max-width:880px;margin-inline:auto;padding-top:26px}
.lld-sbody.is-one > main{min-width:0}

/* ---- the sticky contact strip ---- */
.lld-stickbar{position:sticky;bottom:14px;z-index:5;margin-top:18px;display:flex;align-items:center;gap:10px;
  padding:10px 12px;border-radius:15px;color:#fff;
  background:rgba(6,17,36,.94);backdrop-filter:blur(8px);border:1px solid rgba(159,240,223,.2);
  box-shadow:0 18px 40px -18px rgba(0,0,0,.6)}
.lld-stickwho{font-family:Outfit,system-ui,sans-serif;font-weight:700;font-size:.9rem;margin:0 auto 0 6px;min-width:0}
.lld-stickwho span{display:block;font-weight:400;font-size:.7rem;color:rgba(255,255,255,.6);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lld-stickbar .lld-btn{height:40px;padding:0 16px;font-size:.84rem;flex:none}
.lld-stickbar .lld-btn.is-ghost{background:rgba(255,255,255,.09);color:#fff;border-color:rgba(255,255,255,.28)}
@media(max-width:560px){
  .lld-stickbar{gap:7px;padding:9px}
  .lld-stickwho{font-size:.8rem}
  .lld-stickwho span{display:none}
  .lld-stickbar .lld-btn{padding:0 12px;font-size:.8rem}
}
.lld-wrongline{margin:16px 0 0;font-size:.8rem;color:#8494AC}
.lld-wrongline a{color:#0B8676;font-weight:600;text-decoration:none}
.lld-wrongline a:hover{text-decoration:underline}

/* the disclaimer follows the same measure as the body it belongs to */
.lld-disclaimer{max-width:880px;margin-inline:auto}

/* v1.18.1 — Where and when: the map band, and the doors.
   The map draws an approximate circle, never a precise pin — many providers
   work from home and the exact point belongs in the enquiry. */
.lld-whenwhere{padding:0;overflow:hidden}
.lld-whenwhere h2{padding:20px 20px 0;margin-bottom:14px}
.lld-mapband{position:relative;background:#EEF2F6}
#lld-smap{height:260px;width:100%;background:#EEF2F6}
.lld-addr{position:absolute;right:18px;top:18px;z-index:500;width:min(320px,calc(100% - 36px));
  background:#fff;border:1px solid rgba(14,27,61,.12);border-radius:15px;padding:15px 16px;
  box-shadow:0 20px 44px -22px rgba(7,21,40,.45)}
.lld-addr h4{font-family:Outfit,system-ui,sans-serif;font-size:.56rem;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:#8494AC;margin:0 0 7px}
.lld-addr p{margin:0;font-size:.9rem;line-height:1.45}
.lld-addr .lld-hint{display:block;margin:8px 0 11px}
.lld-addr .lld-btn{height:40px;font-size:.83rem}
.lld-whenrows{padding:14px 20px 4px}
.lld-whenwhere > .lld-sec-row,.lld-whenwhere > .lld-btn,.lld-whenwhere > .lld-hint,.lld-whenwhere > p{margin-inline:20px}
.lld-whenwhere > p:last-child{padding-bottom:16px}
.lld-whenrows + .lld-hint{padding:0 20px 16px}
@media(max-width:620px){
  .lld-addr{position:static;width:auto;margin:0;border:0;border-top:1px solid rgba(14,27,61,.12);
    border-radius:0;box-shadow:none;padding:15px 20px}
  #lld-smap{height:200px}
}

/* doors */
.lld-doors{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.lld-door{position:relative;overflow:hidden;border-radius:15px;padding:15px 16px;min-height:96px;
  display:flex;flex-direction:column;justify-content:flex-end;text-decoration:none;color:#fff;
  background:linear-gradient(150deg,#0E1B3D,#123A4A 60%,#0F5A4C)}
.lld-door::before{content:"";position:absolute;inset:0;
  background:radial-gradient(90% 90% at 85% 0%,rgba(159,240,223,.16),transparent 55%)}
.lld-door .k{position:relative;font-family:Outfit,system-ui,sans-serif;font-size:.53rem;font-weight:700;
  letter-spacing:.13em;text-transform:uppercase;color:#9FF0DF;margin-bottom:5px}
.lld-door b{position:relative;font-family:Outfit,system-ui,sans-serif;font-size:.95rem;line-height:1.25}
.lld-door .d{position:relative;font-size:.76rem;color:rgba(255,255,255,.7);margin-top:3px}
.lld-door:hover b{text-decoration:underline}

/* ================= v1.19.0 — the Plaque card =================
 *
 * The tile rack is gone. The card identifies and ranks; the quick view shows
 * the work; the single answers everything. A shallow cap of the CATEGORY HUE
 * carries the plaque across its lower edge — the single's identity card at grid
 * scale, so card -> quick view -> single are one object at three depths.
 *
 * The hue arrives as --lld-hue / --lld-hue2 on the article, set inline from
 * LLD_Display::hue_vars() because the taxonomy is user-editable and a
 * stylesheet cannot know the terms.
 */
.lld-card.is-plaque{padding:0;overflow:hidden}
/* INK AND PAPER (v1.39.0). The cap held a saturated gradient of the category
   hue; in a grid that pulled the eye to colour before content. It is now paper,
   and the category survives as a 2px hairline along the lower edge. The sheen
   ::after belonged to the gradient and went with it.
   --lld-line and --lld-wash are fixed hex values from LLD_Display::hue_vars();
   no colour function is used, so nothing falls back to transparent. */
.lld-cap{height:38px;position:relative;background:#FBFAF7;
  box-shadow:inset 0 -2px 0 var(--lld-line,#3A4557)}
.lld-plaque{position:relative;z-index:1;margin:-26px 12px 0;background:#fff;
  border:1px solid rgba(14,27,61,.12);border-radius:12px;padding:10px 12px;
  display:flex;gap:10px;align-items:flex-start;box-shadow:0 12px 26px -16px rgba(7,21,40,.35)}
.lld-card.is-plaque .lld-logo{width:42px;height:42px;flex:none;border-radius:11px;overflow:hidden;
  display:grid;place-items:center;font-family:Outfit,system-ui,sans-serif;font-weight:800;font-size:.88rem;
  color:#16233F;background:var(--lld-wash,#F1F3F6);
  box-shadow:inset 0 0 0 1px var(--lld-line,#3A4557)}
.lld-card.is-plaque .lld-logo img{width:100%;height:100%;object-fit:contain;background:#fff;padding:4px}
.lld-idcol{min-width:0;flex:1;display:block}
.lld-eyeline{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:2px}
.lld-card.is-plaque .lld-eyebrow{margin:0;color:#5B6B85}
.lld-card.is-plaque h2{margin:0;font-size:1rem;line-height:1.2}
.lld-sub{display:block;font-size:.78rem;color:#8494AC;margin-top:2px;line-height:1.35}
.lld-card.is-plaque .lld-role{font-family:Fraunces,Georgia,serif;font-style:italic;color:#5B6B85;font-size:.78rem}
.lld-card.is-plaque .lld-cbody{padding:11px 14px 13px}

/* declarations: the qualifier once, then abbreviations */
.lld-blead{font-family:Outfit,system-ui,sans-serif;font-size:.52rem;font-weight:700;letter-spacing:.11em;
  text-transform:uppercase;color:#8494AC;flex:none}
.lld-card.is-plaque .lld-badge{font-size:.7rem;padding:3px 9px;gap:0}
.lld-card.is-plaque .lld-badge svg{display:none}

/* facts as one inline run */
.lld-runs{margin:9px 0 0;font-size:.8rem;color:#16233F;line-height:1.5}
.lld-runs .sep{color:#8494AC;margin:0 5px}
.lld-runs .is-price{font-weight:600}

/* the foot: quick view, then contact, then the way in */
.lld-card.is-plaque .lld-foot{margin-top:11px;padding-top:10px;border-top:1px solid rgba(14,27,61,.12);
  display:flex;align-items:center;gap:8px;position:relative;z-index:1}
.lld-qview{display:inline-flex;align-items:center;gap:7px;border:1px solid rgba(14,27,61,.12);border-radius:9px;
  background:#fff;padding:7px 12px;font-family:Outfit,system-ui,sans-serif;font-size:.76rem;font-weight:600;
  color:#5B6B85;cursor:pointer;position:relative;z-index:2}
.lld-qview:hover{border-color:rgba(14,159,139,.45);color:#0B8676}
.lld-qview svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;flex:none}
.lld-qview .n{font-size:.68rem;color:#0B8676;font-weight:600}
.lld-open{margin-left:auto;font-size:.78rem;font-weight:600;color:#0B8676;text-decoration:none;position:relative;z-index:2}
.lld-open.is-quiet{color:#5B6B85}
.lld-open:hover{text-decoration:underline}

/* the modal's bar becomes the same plaque, floating over the stage */
.lld-modal .lld-mbar{position:relative;z-index:2;margin:-26px 16px 0;background:#fff;
  border:1px solid rgba(14,27,61,.12);border-radius:12px;padding:11px 13px;
  box-shadow:0 14px 30px -16px rgba(7,21,40,.4);display:flex;align-items:center;gap:12px}
.lld-modal .lld-mbar h3{margin:0;font-family:Outfit,system-ui,sans-serif;font-size:1rem}
.lld-modal .lld-mbar p{margin:2px 0 0;font-size:.78rem;color:#8494AC}
.lld-modal .lld-mgo{margin-left:auto;flex:none}
/* film state: one frame, nothing beside it, and never autoplaying */
.lld-mfilm{position:relative;width:100%;aspect-ratio:16/9;border:0;display:block;background:#08182B}
.lld-mstage.is-film{aspect-ratio:auto;background:#08182B}
.lld-mstage.is-film.is-portrait .lld-mfilm{aspect-ratio:9/16;max-width:340px;margin:0 auto;
  border:5px solid rgba(255,255,255,.6);border-radius:14px}
/* a film exists but this viewer may not watch it — stated, not dangled */
.lld-mlock{display:flex;align-items:center;gap:12px;padding:12px 16px;color:#fff;
  background:linear-gradient(120deg,#0A1A38,#0F4A3E)}
.lld-mlock p{margin:0;font-size:.82rem;color:rgba(255,255,255,.84)}
.lld-mlock a{margin-left:auto;flex:none;font-family:Outfit,system-ui,sans-serif;font-weight:600;font-size:.8rem;
  color:#08322A;background:#9FF0DF;border-radius:9px;padding:8px 13px;text-decoration:none}
@media(max-width:620px){
  .lld-plaque{margin:-24px 10px 0;padding:9px 11px}
  .lld-card.is-plaque .lld-foot{flex-wrap:wrap}
  .lld-modal .lld-mbar{flex-wrap:wrap}
  .lld-modal .lld-mgo{margin-left:0}
}

/* the search fallback card, when the endpoint could not send server markup */
.lld-card.is-bare{padding:14px}
.lld-card.is-bare h2{margin:0 0 4px;font-size:1rem}
.lld-card.is-bare .lld-ressum{margin:6px 0 10px;font-size:.85rem;color:#5B6B85;line-height:1.5}

/* ================= v1.19.1 — the modal must fit the window =================
 *
 * FAULT: .lld-mbox had a width but no height ceiling, and .lld-mstage carried a
 * fixed 4/3 ratio. At 720px wide the stage alone computed to 540px, and with
 * the plaque and body beneath it the box grew taller than the viewport. Because
 * .lld-modal is fixed and centres with align-items:center, the overflow spilled
 * BOTH ways — so the top of the image ran under the site header.
 *
 * A centred dialog needs a ceiling and a scroll of its own. The stage now takes
 * whichever is smaller, its ratio or a share of the window, and the image is
 * contained rather than cropped so nothing is lost when it shrinks.
 */
.lld-modal{overflow-y:auto;overscroll-behavior:contain;padding:clamp(12px,3vw,28px)}
.lld-mbox{margin:auto;display:flex;flex-direction:column;
  max-height:calc(100vh - 2 * clamp(12px, 3vw, 28px))}
@supports (height:100dvh){
  .lld-mbox{max-height:calc(100dvh - 2 * clamp(12px, 3vw, 28px))}
}
/* the stage keeps its ratio until the window says otherwise */
.lld-mstage{flex:none;max-height:58vh}
@supports (height:100dvh){ .lld-mstage{max-height:58dvh} }
/* contained, not cropped: a shrunk stage should lose framing, not content */
.lld-mstage img{object-fit:contain;background:#0B1730}
.lld-mstage.is-film{max-height:none}
.lld-mfilm{aspect-ratio:16/9;max-height:58vh}
@supports (height:100dvh){ .lld-mfilm{max-height:58dvh} }
.lld-mstage.is-film.is-portrait .lld-mfilm{max-height:64vh}
@supports (height:100dvh){ .lld-mstage.is-film.is-portrait .lld-mfilm{max-height:64dvh} }
/* everything under the stage scrolls if a long name or lock strip needs it */
.lld-modal .lld-mbar{flex:none}
.lld-mlock{flex:none}
@media(max-height:560px){
  .lld-mstage,.lld-mfilm{max-height:46vh}
  .lld-modal .lld-mbar{margin-top:-20px}
}

/* ================= v1.19.2 — two faults in the quick view =================
 *
 * FAULT 1: the film and the photograph showed AT THE SAME TIME.
 * The JS toggles the `hidden` attribute, which the browser implements as
 * display:none in the USER-AGENT stylesheet — and any author `display` rule
 * beats it. `.lld-mstage img{display:block}`, `.lld-mfilm{display:block}` and
 * `.lld-mlock{display:flex}` each quietly cancelled their own hidden state, so
 * every element was permanently visible and precedence never applied.
 * Author rules must therefore restore it explicitly.
 */
.lld-mstage img[hidden],.lld-mfilm[hidden],.lld-mlock[hidden],
.lld-mpills[hidden],.lld-meyebrow[hidden]{display:none!important}

/* FAULT 2: the modal did not match the drawing. The bar was a plain name and
   link; it is now the same plaque the card wears — monogram in the category
   hue, eyebrow, name, place — with the declarations beneath it. */
.lld-modal .lld-mbar{align-items:flex-start}
/* Ink and paper (v1.39.0) — the quick view's monogram follows the card's. */
.lld-mmono{flex:none;width:42px;height:42px;border-radius:11px;display:grid;place-items:center;
  font-family:Outfit,system-ui,sans-serif;font-weight:800;font-size:.88rem;color:#16233F;
  background:var(--lld-wash,#F1F3F6);box-shadow:inset 0 0 0 1px var(--lld-line,#3A4557)}
.lld-mid{min-width:0;flex:1}
.lld-meyebrow{display:block;font-family:Outfit,system-ui,sans-serif;font-size:.53rem;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;color:#5B6B85;margin-bottom:2px}
.lld-mfoot{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 18px 16px}
.lld-mpills{margin:0;flex:1;min-width:0}
.lld-mfoot .lld-mgo{margin-left:auto;flex:none;font-family:Outfit,system-ui,sans-serif;font-weight:600;
  font-size:.85rem;color:#0B8676;text-decoration:none}
.lld-mfoot .lld-mgo:hover{text-decoration:underline}
@media(max-width:620px){
  .lld-mfoot{padding:11px 14px 14px}
  .lld-mfoot .lld-mgo{margin-left:0}
}

/* ================= v1.20.0 — plaque polish =================
 * Four small corrections from her review of 1.19.2 live. */

/* 1. The logo tile: the white mat (contain + padding + white ground) made
   every mark look small and boxed. The image now fills its tile. */
.lld-card.is-plaque .lld-logo img{object-fit:cover;background:transparent;padding:0;border:0}

/* 2. The ribbon is retired: no card renders it, but the rule stays inert for
   the poster rail which still uses one. */
.lld-card.is-plaque .lld-ribbon{display:none}

/* 3. The quick-view button, restacked: action on top, medium beneath.
   Hover inverts to the navy with white text — a button, unmistakably. */
.lld-qview{flex-direction:column;align-items:flex-start;gap:1px;padding:7px 13px;line-height:1.25}
.lld-qview .qt{display:inline-flex;align-items:center;gap:6px;font-size:.76rem}
.lld-qview .n{font-size:.66rem}
.lld-qview:hover{background:#0E1B3D;border-color:#0E1B3D;color:#fff}
.lld-qview:hover .n{color:#9FF0DF}

/* ================= v1.51.0 — THE NEGATIVE (replaces THE GILT) ==============
 *
 * THE GILT turned the whole card over to night navy inside a double gold
 * keyline. It worked against the old grid, where every card carried a
 * saturated cap and a featured card had to shout over eight competitors. Ink
 * and paper (1.39.0) removed that competition: the grid is now paper and
 * hairlines, and a fully dark card in it reads as a different component
 * rather than the same one dressed up.
 *
 * THE NEGATIVE inverts one block instead of the whole card. The card, the cap
 * and the entire card BODY keep the ordinary ink-and-paper treatment; only the
 * identity plaque turns to ink, and it is lifted off the paper rather than cut
 * out of it. Figure and ground swap exactly where the business name sits,
 * which is the thing a featured listing is paying to have read.
 *
 * WHY THE BODY IS DELIBERATELY UNTOUCHED. Declared badges, the facts run and
 * the footer are the fields a parent compares ACROSS cards. The Gilt restyled
 * all of them, so a featured listing's ages, price and badges looked different
 * from everyone else's — which is precisely the comparison a directory exists
 * to make easy. Those rules are gone rather than overridden: nothing below
 * .lld-plaque is styled by .is-featured any more.
 *
 * CONTRAST IS FLAT, NOT LAYERED. The Gilt set white on a three-radial
 * gradient, so the real ratio depended on where a glyph landed. Every value
 * here is measured against one flat navy: cream on navy 15.7:1, gold eyebrow
 * 9.2:1, gold rule 6.6:1, and every untouched body value keeps its ink-on-
 * paper 14.9:1.
 *
 * The category survives in the eyebrow, which still names it in words. The
 * hue ring on the monogram is dropped because a gold ring and a category ring
 * on one 42px tile read as a mistake; restoring it is one rule if wanted.
 */
.lld-card.is-plaque.is-featured{position:relative;background:#FBFAF7;border-color:#DDD9D0}

/* the cap stays (the Gilt hid it) and swaps its category hairline for gold.
   Its side margins are why the gold line shows either side of the plaque. */
.lld-card.is-plaque.is-featured .lld-cap{background:#FBFAF7;
  box-shadow:inset 0 -2px 0 #C99A3A}

/* the mark moves out of the plaque and into the cap, where it sits opposite
   the heart rather than competing with the business name */
.lld-card.is-plaque.is-featured .lld-cap::before{content:"\2605 FEATURED";
  position:absolute;left:14px;top:11px;
  font-family:Outfit,system-ui,sans-serif;font-size:.54rem;font-weight:800;
  letter-spacing:.14em;text-transform:uppercase;color:#8A6A18}

/* the plate, lifted: a white top edge for the sheet it sits on, a tight
   shadow for contact and a wide one for depth. The tight one is what makes it
   read as lifted rather than merely dark. Margin is inherited, so the plaque
   still overlaps the cap exactly as on every other card. */
.lld-card.is-plaque.is-featured .lld-plaque{background:#0E1B3D;border-color:#0E1B3D;
  box-shadow:
    0 1px 0 rgba(255,255,255,.55),
    0 10px 18px -10px rgba(7,17,38,.45),
    0 26px 44px -22px rgba(7,17,38,.55),
    inset 0 -2px 0 #C99A3A}
.lld-card.is-plaque.is-featured .lld-plaque h2,
.lld-card.is-plaque.is-featured .lld-plaque h2 a{color:#FFF6E3}
.lld-card.is-plaque.is-featured .lld-eyebrow{color:#E8B84B}
.lld-card.is-plaque.is-featured .lld-role{color:#D8C9A8}
.lld-card.is-plaque.is-featured .lld-sub{color:#B9C4D6}
.lld-card.is-plaque.is-featured .lld-logo{background:#16294F;color:#FFF6E3;
  box-shadow:inset 0 0 0 1px #C99A3A;outline:none}
/* a real logo fills its tile: the gold ring boxes a mark that has its own edge */
.lld-card.is-plaque.is-featured .lld-logo:has(img){background:#FFFFFF;box-shadow:none}

/* ================= v1.21.0 — the enquiry modal =================
 * Reuses .lld-modal / .lld-mbox, so it inherits the viewport ceiling and the
 * scroll containment fixed in 1.19.1. [hidden] rules are explicit here for the
 * same reason they were needed in the quick view: an author `display` beats the
 * UA stylesheet, and a form that will not hide is a form that sends twice. */
.lld-enqform[hidden],.lld-enqsent[hidden],.lld-enqerr[hidden]{display:none!important}
.lld-enqbox .lld-mbox{max-width:520px}
.lld-enqhead{position:relative;padding:16px 20px;color:#fff;
  background:linear-gradient(140deg,#0A1A38,#0F4A3E)}
.lld-enqhead h3{margin:0;font-family:Outfit,system-ui,sans-serif;font-size:1.05rem}
.lld-enqhead p{margin:3px 0 0;font-size:.78rem;color:rgba(255,255,255,.66)}
.lld-enqhead .lld-mx{position:absolute;top:12px;right:12px;width:32px;height:32px;border-radius:50%;
  background:rgba(255,255,255,.14);color:#fff;border:0;cursor:pointer;font-size:.9rem}
.lld-enqform{padding:18px 20px 20px}
.lld-enqform label{display:block;font-family:Outfit,system-ui,sans-serif;font-size:.58rem;font-weight:700;
  letter-spacing:.11em;text-transform:uppercase;color:#8494AC;margin-bottom:6px}
.lld-enqform textarea{width:100%;border:1px solid rgba(14,27,61,.12);border-radius:10px;padding:11px 13px;
  font-family:inherit;font-size:.9rem;background:#FBFCFD;resize:vertical;min-height:118px;color:#16233F}
.lld-enqform textarea:focus{outline:2px solid rgba(14,159,139,.5);outline-offset:1px}
.lld-enqerr{margin:9px 0 0;font-size:.82rem;color:#B4453F}
.lld-enqfoot{display:flex;align-items:center;gap:12px;margin-top:14px;flex-wrap:wrap}
.lld-enqfoot .lld-btn{height:44px}
.lld-enqfoot .lld-hint{margin:0 0 0 auto;text-align:right;max-width:24ch;font-size:.72rem}
.lld-enqsend[disabled]{opacity:.6;cursor:default}
.lld-enqsent{padding:20px;text-align:center}
.lld-enqsent b{font-family:Outfit,system-ui,sans-serif;font-size:1.05rem;display:block}
.lld-enqsent p{margin:7px 0 15px;font-size:.86rem;color:#5B6B85;line-height:1.55}
@media(max-width:560px){
  .lld-enqfoot .lld-hint{margin-left:0;text-align:left;max-width:none}
}

/* ================= v1.22.0 — W2 hero and the shuttle =================
 *
 * W2: the title and lede share a baseline and the search became the dial's
 * first rung, so the hero is one instrument instead of three stacked bands.
 */
.lld-w2row{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap}
.lld-w2row h1{font-size:clamp(1.45rem,2.6vw,1.85rem)}
.lld-w2row .lld-lede{font-size:.84rem;flex:1;min-width:260px;margin:0}
@media(max-width:700px){.lld-w2row{gap:8px}.lld-w2row .lld-lede{min-width:0}}
/* the search rung: the form fills the row, the well itself draws nothing */
.lld-dialrow.is-search .lld-dview.is-input{background:none;box-shadow:none;overflow:visible;height:46px}
.lld-dialrow.is-search .lld-searchbar{margin:0;width:100%;gap:9px}
.lld-dialrow.is-search .lld-searchbar input{height:46px;padding:0 16px}
.lld-dialrow.is-search .lld-btn{height:46px}

/* The shuttle's gauge. Drawn in the mint already used for the panel seam and
 * the selected pill, so it reads as the dial lighting up rather than a new
 * control arriving. Pointer-events none throughout: it reports, never steers. */
/* The shuttle is a drag on top of text and anchors, so both of the browser's
 * own drag behaviours have to be refused or a hold-and-drag paints the pills
 * blue and starts a native link-drag instead of shuttling. */
.lld-dtrack{cursor:grab;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.lld-dtrack.is-held{cursor:grabbing}
.lld-dtrack .lld-ditem{-webkit-user-drag:none;user-select:none;-webkit-user-select:none}
.lld-shgauge{position:absolute;left:14px;right:14px;bottom:3px;height:2px;border-radius:2px;z-index:3;
  background:rgba(255,255,255,.08);pointer-events:none}
.lld-shgauge i{position:absolute;top:0;bottom:0;left:50%;width:0;border-radius:2px;
  background:linear-gradient(90deg,#7CE2CD,#9FF0DF);box-shadow:0 0 8px rgba(159,240,223,.5)}
.lld-shchev{position:absolute;top:50%;transform:translateY(-50%);z-index:4;pointer-events:none;
  font-family:Outfit,system-ui,sans-serif;font-weight:800;font-size:.85rem;color:#9FF0DF;
  opacity:0;transition:opacity .1s}
.lld-shchev.l{left:9px}
.lld-shchev.r{right:9px}
@media(prefers-reduced-motion:reduce){
  .lld-shgauge i,.lld-shchev{transition:none}
}

/* ================= v1.23.0 — corners, and the single's new bands =================
 *
 * Her call: the declaration strip, the save button in the ID card, and the
 * eyebrow pill all move to a 20px radius. They were three different corners
 * (dashed rule with none, 9px, and a 999px pill) sitting within 60px of each
 * other in the ID card, which read as three unrelated parts rather than one
 * object. */
.lld-iddecl{border:1px solid rgba(14,27,61,.12);border-radius:20px;padding:11px 14px;margin-top:13px}
.lld-iddecl-c{border-radius:20px}
.lld-savewrap .lld-save,
.lld-savewrap .lld-save.has-label{border-radius:20px}
.lld-h-eyebrow{border-radius:20px}

/* ---- THE PLACE: the gallery as an editorial band ---- */
.lld-place{position:relative;margin:18px 0 0;border-radius:20px;overflow:hidden;
  display:grid;grid-template-columns:1.35fr 1fr;gap:3px;background:rgba(14,27,61,.12);min-height:330px}
.lld-place figure{margin:0;position:relative;overflow:hidden;background:#DDE7EC}
.lld-place figure:first-child{grid-row:span 2}
.lld-ph{position:absolute;inset:0;background-size:cover;background-position:center;
  transition:transform .5s cubic-bezier(.2,.7,.3,1)}
.lld-place figure:hover .lld-ph{transform:scale(1.04)}
.lld-quote{position:absolute;left:0;right:0;bottom:0;padding:24px 24px 20px;z-index:2;
  background:linear-gradient(0deg,rgba(4,12,26,.9) 12%,rgba(4,12,26,.55) 55%,transparent)}
.lld-quote p{margin:0;font-family:Fraunces,Georgia,serif;font-style:italic;font-weight:300;
  font-size:clamp(1.1rem,2vw,1.55rem);line-height:1.32;color:#fff;max-width:22ch}
.lld-quote cite{display:block;margin-top:9px;font-family:Outfit,system-ui,sans-serif;font-style:normal;
  font-size:.6rem;font-weight:800;letter-spacing:.15em;text-transform:uppercase;color:#9FF0DF}
.lld-placecount{position:absolute;top:13px;right:13px;z-index:3;background:rgba(4,12,26,.6);color:#fff;
  border:1px solid rgba(255,255,255,.2);border-radius:20px;padding:5px 12px;
  font-family:Outfit,system-ui,sans-serif;font-size:.68rem;font-weight:600;backdrop-filter:blur(4px)}
@media(max-width:700px){
  .lld-place{grid-template-columns:1fr;min-height:0}
  .lld-place figure:first-child{grid-row:auto;height:230px}
  .lld-place figure:not(:first-child){height:125px}
  .lld-quote{padding:17px}
}

/* ---- THE WEEK: the same hours, read at a glance ---- */
.lld-days{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-top:4px}
.lld-day{border-radius:20px;padding:12px 8px 13px;text-align:center;min-height:92px;
  display:flex;flex-direction:column;justify-content:space-between;gap:8px;
  background:#F6F8FA;border:1px solid rgba(14,27,61,.09)}
.lld-day .d{font-family:Outfit,system-ui,sans-serif;font-size:.56rem;font-weight:800;letter-spacing:.14em;
  text-transform:uppercase;color:#A6B1C2}
.lld-day .h{font-family:Outfit,system-ui,sans-serif;font-size:.8rem;font-weight:600;color:#B3BECD;line-height:1.3}
.lld-day.is-open{background:linear-gradient(180deg,rgba(14,159,139,.1),rgba(14,159,139,.03));
  border-color:rgba(14,159,139,.3)}
.lld-day.is-open .d{color:#0B7A6B}
.lld-day.is-open .h{color:#16233F}
.lld-day.is-next{background:linear-gradient(180deg,#0E9F8B,#0B7A6B);border-color:#0B7A6B;
  box-shadow:0 10px 26px -14px rgba(14,159,139,.7)}
.lld-day.is-next .d{color:rgba(255,255,255,.75)}
.lld-day.is-next .h{color:#fff;font-weight:700}
@media(max-width:700px){
  .lld-days{grid-template-columns:repeat(4,1fr)}
}

/* ================= v1.24.0 — the register and the practical grid =================
 *
 * The chips said WHAT was claimed. The register says what it means, who said
 * it, and what to ask — and it shows ABSENCE, which the chips could not: a
 * missing row and a declined claim looked identical when the row simply was
 * not rendered. */
.lld-reghead{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.lld-reghead .lab{font-family:Outfit,system-ui,sans-serif;font-size:.58rem;font-weight:800;letter-spacing:.14em;
  text-transform:uppercase;color:#0E1B3D}
.lld-reghead .by{font-size:.78rem;color:#5B6B85}
.lld-reg{display:flex;flex-direction:column;margin:0;border-top:1px solid rgba(14,27,61,.09)}
.lld-regrow{display:grid;grid-template-columns:34px 1fr auto;gap:14px;align-items:start;
  padding:14px 0;border-bottom:1px solid rgba(14,27,61,.09)}
.lld-regno{font-family:Outfit,system-ui,sans-serif;font-size:.72rem;font-weight:800;color:#B3BECD;padding-top:2px}
.lld-regmain b{display:block;font-family:Outfit,system-ui,sans-serif;font-size:.95rem;color:#16233F;font-weight:600}
.lld-regmain span{display:block;font-size:.8rem;color:#5B6B85;margin-top:3px;line-height:1.5}
.lld-regask{font-size:.75rem;color:#0B7A6B;white-space:nowrap;padding-top:3px}
.lld-regrow.is-absent .lld-regmain b{color:#8494AC;font-weight:500}
.lld-regrow.is-absent .lld-regask{color:#93A1B8}
.lld-regfoot{margin:12px 0 0;font-size:.78rem;color:#5B6B85;line-height:1.6}
@media(max-width:620px){
  .lld-regrow{grid-template-columns:28px 1fr;gap:10px}
  .lld-regask{grid-column:2;white-space:normal;padding-top:6px}
}

/* Practical as a grid: a parent scans for one or two answers, so let the eye
 * jump to a label rather than read down a list of rows. */
.lld-pgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;
  background:rgba(14,27,61,.09);border:1px solid rgba(14,27,61,.09);border-radius:20px;overflow:hidden}
.lld-pcell{background:#fff;padding:12px 14px}
.lld-pcell .k{display:block;font-family:Outfit,system-ui,sans-serif;font-size:.55rem;font-weight:800;
  letter-spacing:.13em;text-transform:uppercase;color:#8494AC;margin-bottom:4px}
.lld-pcell .v{font-size:.9rem;color:#16233F;font-weight:600}
.lld-pcell.is-absent .v{color:#93A1B8;font-weight:500}

/* ---- v1.24.0 — the map pin, both modes ----
 * Drawn in CSS so there is no image to ship and it takes the brand colour.
 * A venue pin is solid on its address. A town pin is hollow inside a soft halo,
 * so it reads as "around here" rather than "at this point" — the visual has to
 * agree with the label, because a pin looks precise even when its coordinates
 * deliberately are not. */
.lld-pin{display:grid;place-items:center}
.lld-pindot{display:block;border-radius:50%}
.lld-pin.is-venue .lld-pindot{width:16px;height:16px;background:#0E9F8B;
  border:3px solid #fff;box-shadow:0 2px 6px rgba(4,20,16,.45)}
.lld-pin.is-town{position:relative}
.lld-pin.is-town::before{content:"";position:absolute;left:50%;top:50%;width:28px;height:28px;
  transform:translate(-50%,-50%);border-radius:50%;background:rgba(14,159,139,.16)}
.lld-pin.is-town .lld-pindot{width:13px;height:13px;background:#fff;
  border:3px solid #0E9F8B;box-shadow:0 1px 4px rgba(4,20,16,.3);position:relative;z-index:1}

/* ============================================================================
   PROVIDER PORTAL — pass 1, read only (v1.25.0)

   Prefixed .llp- rather than .lld- so the portal can never inherit an archive
   rule by accident: the real card is included INSIDE this markup, and it must
   keep looking exactly as it does in the grid. Anything here that leaked into
   .lld- space would change the card in the portal only, which is the one place
   a provider is trying to judge how their card really looks.
   ========================================================================= */
.llp{display:flex;flex-direction:column;gap:26px;margin:0 auto;max-width:1080px}
.llp-top{display:flex;flex-direction:column;gap:2px}
.llp-hi{margin:0;font-size:.8rem;color:#8494AC}
.llp-h{font-family:Outfit,sans-serif;font-size:1.4rem;margin:0}
.llp-note,.llp-empty{background:#fff;border:1px solid rgba(14,27,61,.1);border-radius:20px;padding:20px 22px}
.llp-note p,.llp-empty p{margin:0 0 10px;font-size:.92rem;line-height:1.6}
.llp-note p:last-child,.llp-empty p:last-child{margin-bottom:0}

.llp-row{display:grid;grid-template-columns:320px 1fr;gap:24px;align-items:start;
  background:#fff;border:1px solid rgba(14,27,61,.1);border-radius:20px;padding:20px}
@media(max-width:820px){.llp-row{grid-template-columns:1fr}}
/* v1.43.2 — the 820px collapse above keys on the VIEWPORT, but /my-listings/
   renders inside a ~640px boxed Elementor section on a full desktop: the
   320px/1fr grid (~780px minimum) overflowed its container while the media
   query, watching a 1500px viewport, never fired. Container queries key on
   the width the grid actually has. The media query stays as the fallback. */
.llp{container-type:inline-size}
@container (max-width:820px){.llp-row{grid-template-columns:1fr}}
.llp-row>*{min-width:0}

.llp-cap{font-family:Outfit,sans-serif;font-size:.55rem;font-weight:800;letter-spacing:.14em;
  text-transform:uppercase;color:#8494AC;margin:0 0 8px}
.llp-title{font-family:Outfit,sans-serif;font-size:1.05rem;margin:0 0 6px}
.llp-state{display:inline-block;font-size:.72rem;font-weight:700;border-radius:20px;padding:3px 10px;
  background:rgba(14,27,61,.07);color:#5B6B85;margin:0 0 16px}
.llp-state.is-live{background:rgba(14,159,139,.12);color:#0B7A6B}

.llp-appears{list-style:none;margin:0 0 16px;padding:0;display:flex;flex-direction:column;
  border-top:1px solid rgba(14,27,61,.08)}
.llp-appears li{display:grid;grid-template-columns:190px 1fr;gap:14px;padding:9px 0;
  border-bottom:1px solid rgba(14,27,61,.08);align-items:baseline}
@media(max-width:560px){.llp-appears li{grid-template-columns:1fr;gap:2px}}
.llp-a-label{font-size:.86rem;font-weight:600;display:flex;align-items:center;gap:8px}
.llp-a-label::before{content:"";width:8px;height:8px;border-radius:50%;flex:none;
  background:rgba(14,27,61,.18)}
.llp-appears li.is-on .llp-a-label::before{background:#0E9F8B}
/* "not linked yet" is a THIRD state, not a failure: hollow, so it reads as
   absent rather than off. */
.llp-appears li.is-none .llp-a-label{color:#8494AC;font-weight:500}
.llp-appears li.is-none .llp-a-label::before{background:transparent;border:1px dashed rgba(14,27,61,.3)}
.llp-a-note{font-size:.82rem;color:#5B6B85;line-height:1.5}

.llp-hint{margin:10px 0 0;font-size:.78rem;color:#8494AC}

/* ---- v1.26.0 — the portal's first editable field ---- */
.llp-edit{border-top:1px solid rgba(14,27,61,.08);padding-top:14px}
.llp-guide{margin:0 0 8px;font-size:.82rem;color:#5B6B85;line-height:1.5}
.llp-ta{width:100%;border:1px solid rgba(14,27,61,.18);border-radius:20px;padding:11px 14px;
  font:inherit;font-size:.9rem;line-height:1.55;color:#16233F;background:#fff;resize:vertical}
.llp-ta:focus-visible{outline:2px solid #0E9F8B;outline-offset:1px;border-color:transparent}
.llp-editfoot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:9px;flex-wrap:wrap}
.llp-count{font-size:.76rem;color:#8494AC;font-variant-numeric:tabular-nums}
.llp-msg{margin:9px 0 0;font-size:.82rem;line-height:1.5}
.llp-msg.is-good{color:#0B7A6B}
.llp-msg.is-bad{color:#A32F2F}
.llp-msg[hidden]{display:none}

/* ---- v1.27.0 — the portal's practical-details form ---- */
.llp-prac{margin-top:16px}
.llp-fs{border:1px solid rgba(14,27,61,.12);border-radius:20px;padding:12px 14px 13px;margin:0 0 12px}
.llp-fs legend{font-family:Outfit,sans-serif;font-size:.55rem;font-weight:800;letter-spacing:.14em;
  text-transform:uppercase;color:#8494AC;padding:0 6px}
.llp-chk{display:inline-flex;align-items:center;gap:7px;margin:4px 12px 4px 0;font-size:.86rem;cursor:pointer}
.llp-chk input{width:16px;height:16px;accent-color:#0E9F8B;flex:none}
.llp-price{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.llp-f{display:flex;flex-direction:column;gap:4px;font-size:.78rem;color:#5B6B85}
.llp-f.is-wide{width:100%}
.llp-f input,.llp-f select{border:1px solid rgba(14,27,61,.18);border-radius:20px;padding:8px 12px;
  font:inherit;font-size:.88rem;background:#fff;color:#16233F;min-width:120px}
.llp-f.is-wide input{width:100%}
.llp-f input:focus-visible,.llp-f select:focus-visible{outline:2px solid #0E9F8B;outline-offset:1px;border-color:transparent}
.llp-tri{display:grid;grid-template-columns:160px 1fr;gap:10px;align-items:center;padding:6px 0;
  border-bottom:1px solid rgba(14,27,61,.07)}
.llp-tri:last-child{border-bottom:0}
@media(max-width:560px){.llp-tri{grid-template-columns:1fr;gap:3px}}
.llp-tri-l{font-size:.86rem;font-weight:600}
.llp-tri-o{display:flex;gap:14px;flex-wrap:wrap}
.llp-tri-o label{display:inline-flex;align-items:center;gap:6px;font-size:.82rem;color:#5B6B85;cursor:pointer}
.llp-tri-o input{width:15px;height:15px;accent-color:#0E9F8B;flex:none}

/* ---- v1.28.0 — the portal's map-precision setting ----
 * The chosen option is drawn as a card, not a bare radio: this is the one
 * provider setting that can reduce their own privacy, so the consequence has
 * to be legible at the moment of choosing rather than in a help page. */
.llp-venue{margin-top:16px}
.llp-mode{display:flex;gap:11px;align-items:flex-start;padding:11px 13px;margin-bottom:8px;cursor:pointer;
  border:1px solid rgba(14,27,61,.14);border-radius:20px;background:#fff}
.llp-mode:hover{border-color:rgba(14,159,139,.4)}
.llp-mode.is-on{border-color:#0E9F8B;background:rgba(14,159,139,.05)}
.llp-mode input{width:16px;height:16px;margin-top:3px;accent-color:#0E9F8B;flex:none}
.llp-mode-b{display:flex;flex-direction:column;gap:3px;min-width:0}
.llp-mode-t{font-size:.88rem;font-weight:600}
.llp-mode-d{font-size:.8rem;color:#5B6B85;line-height:1.5}
.llp-confirm{display:flex;gap:9px;align-items:flex-start;margin:4px 0 2px;padding:10px 13px;
  border:1px dashed rgba(176,122,32,.5);border-radius:20px;background:rgba(255,233,184,.16);
  font-size:.83rem;line-height:1.5;cursor:pointer}
.llp-confirm[hidden]{display:none}
.llp-confirm input{width:16px;height:16px;margin-top:2px;accent-color:#B07A20;flex:none}

/* ---- v1.29.0 — the declarations form ----
 * Affirmations are drawn as statements, not as a list of labelled boxes: the
 * sentence is the safeguard, so it has to be the thing being read. */
.llp-decl{margin-top:16px}
.llp-aff{display:flex;gap:11px;align-items:flex-start;padding:12px 13px;margin-bottom:8px;cursor:pointer;
  border:1px solid rgba(14,27,61,.14);border-radius:20px;background:#fff}
.llp-aff:hover{border-color:rgba(14,159,139,.4)}
.llp-aff.is-on{border-color:#0E9F8B;background:rgba(14,159,139,.05)}
.llp-aff input{width:17px;height:17px;margin-top:2px;accent-color:#0E9F8B;flex:none}
.llp-aff-b{display:flex;flex-direction:column;gap:3px;min-width:0}
.llp-aff-t{font-size:.89rem;line-height:1.45}
.llp-aff-d{font-size:.78rem;color:#8494AC;line-height:1.5}
.llp-aff.is-on .llp-aff-d{color:#5B6B85}
.llp-decl .llp-f{margin-bottom:11px}
.llp-decl .llp-ta{margin-top:0}
.llp-note{margin:6px 0 0;font-size:.78rem;color:#8494AC;line-height:1.55}

/* ---- v1.31.0 — the portal's photo manager ---- */
.llp-photos{margin-top:16px}
.llp-plist{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-direction:column;gap:8px}
.llp-pitem{display:grid;grid-template-columns:64px 1fr auto;gap:12px;align-items:center;
  border:1px solid rgba(14,27,61,.12);border-radius:20px;padding:8px 10px;background:#fff}
.llp-pitem.is-gone{opacity:.45;border-style:dashed}
.llp-pthumb{display:block;width:64px;height:48px;border-radius:20px;background-size:cover;
  background-position:center;background-color:#EDF0F4}
.llp-pwhere{min-width:0;display:flex;flex-direction:column;gap:1px}
.llp-pwhere b{font-size:.82rem;font-weight:600}
.llp-pwhere span{font-size:.76rem;color:#8494AC;line-height:1.4}
.llp-pitem.is-gone .llp-pwhere b{color:#A32F2F}
.llp-pacts{display:flex;gap:5px}
.llp-pacts button{width:30px;height:30px;border-radius:20px;border:1px solid rgba(14,27,61,.16);
  background:#fff;color:#3A4A66;font-size:.9rem;line-height:1;cursor:pointer;padding:0}
.llp-pacts button:hover{border-color:#0E9F8B;color:#0B7A6B}
.llp-pacts button:focus-visible{outline:2px solid #0E9F8B;outline-offset:1px}
.llp-pdel:hover{border-color:#A32F2F !important;color:#A32F2F !important}
@media(max-width:560px){.llp-pitem{grid-template-columns:52px 1fr}.llp-pacts{grid-column:2;justify-content:flex-end}
  .llp-pthumb{width:52px;height:40px}}

/* ---- v1.33.0 — provider photo upload ---- */
.llp-pheld{margin-top:6px}
.llp-pitem.is-held{border-style:dashed;border-color:rgba(176,122,32,.5);background:rgba(255,233,184,.14)}
.llp-pitem.is-held .llp-pwhere b{color:#8B5C16}
.llp-add{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px;padding-top:12px;
  border-top:1px solid rgba(14,27,61,.08)}
.llp-addbtn{display:inline-flex;align-items:center;gap:8px;cursor:pointer;border-radius:20px;
  border:1px dashed rgba(14,159,139,.55);background:rgba(14,159,139,.06);padding:9px 16px;
  font-family:Outfit,sans-serif;font-size:.85rem;font-weight:600;color:#0B7A6B}
.llp-addbtn:hover{background:rgba(14,159,139,.12)}
.llp-addbtn input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}
.llp-addbtn:focus-within{outline:2px solid #0E9F8B;outline-offset:2px}
.llp-addnote{font-size:.76rem;color:#8494AC;line-height:1.45}

/* ---- v1.35.0 — the create form ---- */
.llc{max-width:640px}
.llc-form{border-top:0;padding-top:0}
.llc-form .llp-f{margin-bottom:13px}
.llc-form .llp-f select{width:100%}
.llc-form .llp-aff{margin-top:4px}
.llc-form .llp-note{margin:2px 0 14px}

/* ---- v1.36.0 — progressive disclosure + the member offer ----
 * Five stacked forms ran to several screens. The chips show one subject at a
 * time; everything is still in the DOM and still saves independently. */
.llp-chips{display:flex;gap:7px;flex-wrap:wrap;margin:0 0 14px;padding-bottom:12px;
  border-bottom:1px solid rgba(14,27,61,.1)}
.llp-chip{font-family:Outfit,sans-serif;font-size:.8rem;font-weight:600;color:#3A4A66;
  background:#fff;border:1px solid rgba(14,27,61,.14);border-radius:20px;padding:7px 14px;cursor:pointer}
.llp-chip:hover{border-color:rgba(14,159,139,.45);color:#0B7A6B}
.llp-chip.is-on{background:#0E1B3D;border-color:#0E1B3D;color:#fff}
.llp-chip:focus-visible{outline:2px solid #0E9F8B;outline-offset:2px}
.llp-panel,.llp-step{display:none}
.llp-panel.is-on,.llp-step.is-on{display:block}
.llp-panel{border-top:0;padding-top:0;margin-top:0}
.llp-offerrow{display:block}
.llp-offer .llp-chips{margin-bottom:12px}

/* ---- v1.36.2 — the portal stops being a dead end ---- */
.llp-hub{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;margin:0 0 22px}
.llp-hubcard{display:flex;flex-direction:column;gap:3px;padding:13px 15px;text-decoration:none;
  background:#fff;border:1px solid rgba(14,27,61,.1);border-radius:20px;transition:border-color .18s ease,transform .18s ease}
.llp-hubcard:hover{border-color:rgba(14,159,139,.45);transform:translateY(-2px)}
.llp-hubcard:focus-visible{outline:2px solid #0E9F8B;outline-offset:2px}
.llp-hub-t{font-family:Outfit,sans-serif;font-size:.9rem;font-weight:700;color:#16233F}
.llp-hub-d{font-size:.78rem;color:#5B6B85;line-height:1.45}
@media(prefers-reduced-motion:reduce){.llp-hubcard{transition:none}}

/* ═════════════════ v1.41.0 — the portal tool rail, offer tab, modal ═════════════════
   The rail reuses the llp-chip dress; panels reuse .llp-panel. New here: the
   voucher preview (scoped llp-vch — the board stylesheet is not loaded on the
   portal), the modal shell, chip picks inside forms, and the featured state. */

/* v1.43.1 — the tools wrapper carries .llp-row so the tab machinery can
   scope to it, but .llp-row is the portal's 320px/1fr GRID: inherited here it
   laid the rail and all six panels out as grid cells, nested each listing's
   own row grid inside one collapsed column, and overflowed the page. The
   class stays (JS contract); the grid does not. */
.llp-row.llp-tools{display:block}
.llp-toolrail{margin:18px 0 20px;position:sticky;top:0;z-index:30;background:linear-gradient(#EDF0F5 82%,rgba(237,240,245,0));padding:8px 0 10px}
.llp-tools > .llp-panel{display:none}
.llp-tools > .llp-panel.is-on{display:block}

.llp-tool-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:0 0 14px}
.llp-status{display:inline-flex;align-items:center;gap:8px;font-family:'Outfit',sans-serif;font-size:12.5px;font-weight:600;color:#5B6B87}
.llp-status b{color:#0B8676;font-weight:700}
.llp-dot{width:8px;height:8px;border-radius:50%;background:#0E9F8B;flex:none}
.llp-dot--wait{background:#D9A93F}
.llp-dot--off{background:#C6CFDD}

.llp-stage{display:flex;justify-content:center;padding:26px;border:1px solid #EDF0F5;border-radius:10px;background:repeating-linear-gradient(45deg,#F7F9FC 0 14px,#F2F5F9 14px 28px)}
.llp-stage-note{margin:10px 2px 0;font-size:12px;color:#8896AF}

.llp-vch{position:relative;background:#fff;border:1px solid #EAE6DC;border-radius:18px;padding:22px 22px 18px;display:flex;flex-direction:column;gap:12px;width:min(340px,100%);box-shadow:0 14px 30px rgba(14,27,61,.10)}
.llp-vch-val{font-family:'Caveat',cursive;font-weight:700;font-size:44px;color:#8A5E10;line-height:1}
.llp-vch-val small{display:block;font-family:'Outfit',sans-serif;font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#8A94A6;margin-top:2px}
.llp-vch-desc{margin:0;font-size:13.5px;line-height:1.65;color:#5B6B87}
.llp-vch-biz{margin:0;font-family:'Outfit',sans-serif;font-size:13px;font-weight:600;color:#0B8676}
.llp-vch-code{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#F6F4EE;border:1.5px dashed #CBD4CF;border-radius:14px;padding:11px 14px}
.llp-vch-code code{font-family:'Outfit',sans-serif;font-weight:800;letter-spacing:.14em;color:#0E1B3D}
.llp-vch-code span{font-size:11px;color:#8A94A6}
.llp-vch-ends{font-family:'Outfit',sans-serif;font-size:12px;font-weight:600;color:#8A94A6}

.llp-modal{position:fixed;inset:0;z-index:80;background:rgba(5,11,30,.55);display:flex;align-items:center;justify-content:center;padding:20px}
.llp-modal[hidden]{display:none}
.llp-modal-box{width:min(560px,100%);max-height:88vh;overflow:auto;background:#FFFEFB;border-radius:14px;box-shadow:0 30px 70px rgba(5,11,30,.45);padding:0 0 18px;position:relative}
.llp-modal-box::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#D9BC6B,#FFE9B8 35%,#E3C97F 70%,#C9A94F);border-radius:14px 14px 0 0}
.llp-modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 20px 0}
.llp-modal-head h3{font-family:'Outfit',sans-serif;font-size:18px;font-weight:800;color:#0E1B3D;margin:0}
.llp-modal-x{width:32px;height:32px;border-radius:50%;border:1.5px solid #E4E9F2;background:#fff;color:#0E1B3D;font-size:13px;cursor:pointer}
.llp-modal .llp-chips{padding:14px 20px 0;margin:0}
.llp-modal .llp-panel{padding:16px 20px 0}
.llp-modal-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:18px 20px 0}
.llp-lab{display:block;font-family:'Outfit',sans-serif;font-size:11px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:#5B6B87;margin:14px 0 6px 2px}
.llp-lab:first-child{margin-top:0}
.llp-opt{font-weight:600;letter-spacing:.04em;text-transform:none;color:#A6B1C4}
.llp-in{width:100%;border:1.5px solid #E4E9F2;background:#fff;border-radius:8px;padding:10px 12px;font-family:'DM Sans',sans-serif;font-size:14px;color:#20304F;box-sizing:border-box}
.llp-in:focus{outline:none;border-color:#0E9F8B;box-shadow:0 0 0 3px rgba(14,159,139,.14)}
textarea.llp-in{resize:vertical}
.llp-picks{display:flex;gap:7px;flex-wrap:wrap}
.llp-pick{border:1.5px solid #E4E9F2;background:#FBFCFE;border-radius:999px;padding:8px 14px;font-family:'Outfit',sans-serif;font-size:12.5px;font-weight:600;color:#5B6B87;cursor:pointer;transition:all .15s}
.llp-pick:hover{border-color:#0E9F8B;color:#0B8676}
.llp-pick[aria-pressed="true"]{background:#0E1B3D;border-color:#0E1B3D;color:#FFE9B8}
.llp-sum{border:1px solid #E4E9F2;border-radius:10px;overflow:hidden;margin:0 0 12px}
.llp-sum div{display:flex;justify-content:space-between;gap:14px;padding:10px 13px;font-size:13px;border-bottom:1px solid #F0F3F8}
.llp-sum div:last-child{border-bottom:0}
.llp-sum div:nth-child(odd){background:#FBFCFE}
.llp-sum dt{color:#5B6B87;font-size:12px}
.llp-sum dd{margin:0;font-family:'Outfit',sans-serif;font-weight:700;color:#0E1B3D;text-align:right}
.llp-note{padding:12px 14px;border-radius:9px;background:rgba(14,159,139,.07);border:1px solid rgba(14,159,139,.18);font-size:12.5px;line-height:1.6;color:#134E44;margin:0 0 8px}
.llp-err{color:#B3261E;font-size:13px;margin:6px 0 0}

.llp-featstate{display:flex;align-items:center;gap:16px;padding:18px;border-radius:10px;background:linear-gradient(155deg,#0A1530 0%,#0E1B3D 45%,#123240 100%);border:1px solid rgba(232,184,75,.45);color:#fff;position:relative;overflow:hidden}
.llp-featstate::after{content:"";position:absolute;inset:6px;border-radius:7px;border:1px solid rgba(232,184,75,.22);pointer-events:none}
.llp-featstar{flex:none;width:44px;height:44px;border-radius:12px;background:rgba(255,255,255,.08);border:1px solid rgba(232,184,75,.45);display:grid;place-items:center;color:#FFE9B8;font-size:19px}
.llp-featstate b{display:block;font-family:'Outfit',sans-serif;font-size:15px;font-weight:800;color:#FFE9B8}
.llp-featstate p{margin:3px 0 0;font-size:12.5px;color:rgba(255,255,255,.7)}
@media(prefers-reduced-motion:reduce){.llp-pick{transition:none}}

/* ═════ v1.42.0 — update + showreel previews in the portal tool tabs ═════ */
.llp-buc{position:relative;background:#FBF8F1;border:1px solid #E7E0D0;border-radius:4px;padding:22px 24px 18px;width:min(420px,100%);box-shadow:0 10px 26px rgba(14,27,61,.09)}
.llp-buc::before{content:"";position:absolute;top:0;left:24px;right:24px;height:2px;background:#0E1B3D}
.llp-buc-ed{display:block;font-family:'Outfit',sans-serif;font-size:10px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:#8A5E10;margin:4px 0 8px}
.llp-buc-h{font-family:Georgia,'Times New Roman',serif;font-size:21px;font-weight:700;line-height:1.25;color:#1A2438;margin:0 0 8px}
.llp-buc-x{margin:0 0 12px;font-size:13.5px;line-height:1.7;color:#4C5A74}
.llp-buc-biz{margin:0;padding-top:10px;border-top:1px solid #E7E0D0;font-family:'Outfit',sans-serif;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#0B8676}
.llp-reel{position:relative;margin:0;width:min(340px,100%);aspect-ratio:9/14;border-radius:16px;overflow:hidden;background:linear-gradient(160deg,#0A1530,#123240 70%,#0E1B3D);background-size:cover;background-position:center;box-shadow:0 16px 36px rgba(5,11,30,.35);border:1px solid rgba(232,184,75,.35)}
.llp-reel::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(5,11,30,0) 40%,rgba(5,11,30,.82))}
.llp-reel-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-60%);width:54px;height:54px;border-radius:50%;border:2px solid rgba(255,233,184,.85);background:rgba(10,21,48,.45);z-index:1}
.llp-reel-play::before{content:"";position:absolute;top:50%;left:53%;transform:translate(-50%,-50%);border-style:solid;border-width:9px 0 9px 15px;border-color:transparent transparent transparent #FFE9B8}
.llp-reel figcaption{position:absolute;left:16px;right:16px;bottom:14px;z-index:1;color:#fff}
.llp-reel figcaption b{display:block;font-family:'Outfit',sans-serif;font-size:15px;font-weight:800}
.llp-reel figcaption span{display:block;font-size:11.5px;color:rgba(255,255,255,.75);margin-top:2px}

/* ═════ v1.44.0 — showreel tool: player, consent ticks, upload progress ═════ */
.llp-reel.is-land{aspect-ratio:16/9}
.llp-reel.is-playing{background:#050B1E}
.llp-reel.is-playing::after{display:none}
.llp-reel.is-playing figcaption{display:none}
.llp-reel-frame{position:absolute;inset:0;width:100%;height:100%;border:0;z-index:2}
button.llp-reel-play{cursor:pointer;padding:0;z-index:2}
button.llp-reel-play:hover{background:rgba(10,21,48,.7);border-color:#FFE9B8}
button.llp-reel-play:focus-visible{outline:2px solid #0E9F8B;outline-offset:3px}
.llp-reel figcaption span{display:block}

.llp-ticks{display:flex;flex-direction:column;gap:2px;margin:0 0 12px}
.llp-tick{display:flex;align-items:flex-start;gap:11px;width:100%;text-align:left;background:none;border:0;border-radius:9px;padding:11px 12px;cursor:pointer;transition:background .15s}
.llp-tick:hover{background:#F7FAFC}
.llp-tick:focus-visible{outline:2px solid #0E9F8B;outline-offset:2px}
.llp-tick-box{flex:none;width:20px;height:20px;border-radius:6px;border:1.5px solid #E4E9F2;background:#fff;margin-top:1px;position:relative;transition:all .15s}
.llp-tick[aria-pressed="true"] .llp-tick-box{background:#0E9F8B;border-color:#0E9F8B}
.llp-tick[aria-pressed="true"] .llp-tick-box::after{content:"";position:absolute;left:5px;top:2px;width:6px;height:11px;border:solid #fff;border-width:0 2.5px 2.5px 0;transform:rotate(42deg)}
.llp-tick b{display:block;font-family:'Outfit',sans-serif;font-size:13.5px;font-weight:700;color:#0E1B3D}
.llp-tick span span,.llp-tick > span{font-size:12px;color:#5B6B87;line-height:1.55}

.llp-prog{display:flex;align-items:center;gap:10px;margin:10px 0 0}
.llp-prog i{flex:1;height:6px;border-radius:99px;background:#E7EBF2;overflow:hidden;position:relative;display:block}
.llp-prog i::after{content:"";position:absolute;inset:0;width:var(--p,0%);background:linear-gradient(90deg,#0E9F8B,#3ECFB8);transition:width .2s}
.llp-prog span{font-family:'Outfit',sans-serif;font-size:12px;font-weight:700;color:#0B7A6B;min-width:34px;text-align:right}
.llp-note--warn{background:rgba(217,169,63,.10);border-color:rgba(217,169,63,.34);color:#6B4E12}
input.llp-in[type="file"]{padding:8px 10px;font-size:13px}

/* ═════ v1.46.0 — What's On inside the portal: rows + modal extras ═════ */
.llp-evlist{list-style:none;margin:0;padding:0}
.llp-evrow{display:flex;align-items:center;gap:14px;padding:12px 2px;border-top:1px solid #EDF0F5}
.llp-evrow:first-child{border-top:0}
.llp-evrow.is-past{opacity:.55}
.llp-evdate{flex:none;width:44px;text-align:center;font-family:'Outfit',sans-serif}
.llp-evdate b{display:block;font-size:19px;font-weight:800;color:#0E1B3D;line-height:1}
.llp-evdate span{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#8896AF}
.llp-evmain{flex:1;min-width:0}
.llp-evmain b{display:block;font-family:'Outfit',sans-serif;font-size:14px;font-weight:700;color:#0E1B3D;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.llp-evmain span{display:block;font-size:12px;color:#5B6B87;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.llp-evstate{flex:none;font-family:'Outfit',sans-serif;font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:4px 10px;border-radius:999px}
.llp-evstate.is-live{color:#0B7A6B;background:rgba(14,159,139,.1)}
.llp-evstate.is-wait{color:#8A5E10;background:rgba(217,169,63,.14)}
.llp-evstate.is-past{color:#8896AF;background:#F0F3F8}
.llp-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.llp-two > span{min-width:0}
.llp-venue-tick{margin:0 0 4px}
.llp-file{padding:8px 12px;border-radius:8px}
@container (max-width:560px){.llp-evrow{flex-wrap:wrap}.llp-evstate{order:3}}

/* ═════ v1.47.0 — featured placement as a product ═════ */
.llp-featdays{flex:none;text-align:center;font-family:'Outfit',sans-serif}
.llp-featdays b{display:block;font-size:24px;color:#fff}
.llp-featdays span{font-size:9.5px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:#3ECFB8}
.llp-featslots{display:flex;align-items:center;gap:10px;margin:16px 0 0;padding:12px 14px;border-radius:9px;background:#FBFCFE;border:1px solid #E4E9F2;font-size:12.5px;color:#5B6B87}
.llp-featbar{flex:1;height:6px;border-radius:99px;background:#E7EBF2;overflow:hidden;min-width:80px}
.llp-featbar i{display:block;height:100%;background:linear-gradient(90deg,#D9BC6B,#C9A94F)}
.llp-packgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:16px 0}
.llp-pack{position:relative;text-align:left;background:#FFFEFB;border:1.5px solid #E4E9F2;border-radius:10px;padding:16px;cursor:pointer;transition:all .16s}
.llp-pack:hover{border-color:#0E9F8B;transform:translateY(-2px);box-shadow:0 12px 24px rgba(14,27,61,.1)}
.llp-pack[aria-pressed="true"]{border-color:#0E1B3D;box-shadow:0 0 0 3px rgba(14,27,61,.1)}
.llp-pack em{display:block;font-family:'Outfit',sans-serif;font-size:10px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:#B08A2E;font-style:normal}
.llp-pack b{display:block;font-family:'Outfit',sans-serif;font-size:24px;font-weight:800;color:#0E1B3D;margin:5px 0 2px}
.llp-pack span{font-size:11.5px;color:#5B6B87;line-height:1.5}
.llp-featcap{margin:14px 2px 0;font-size:11.5px;color:#8896AF;line-height:1.6}
@media(prefers-reduced-motion:reduce){.llp-pack{transition:none;transform:none}}

/* ═════ v1.48.0 — Save → Preview → Publish ═════ */
.llp-draftbar{display:flex;align-items:center;gap:10px;margin:10px 0 0;padding:12px 14px;border-radius:9px;background:#FFF9EC;border:1px solid #EBD9A8}
.llp-draftdot{color:#C9A94F;font-size:10px}
.llp-drafttext{flex:1;font-size:12.5px;color:#6B5A24}
.llp-drafttext b{font-family:'Outfit',sans-serif;font-weight:800;letter-spacing:.02em}
.llp-evstate.is-draft{color:#8A6D1B;background:#FBF3DD}
.llp-evrow .llp-publish{padding:7px 14px;font-size:12px}
.llp-featmini{position:relative;margin:0 0 14px;padding:20px 16px 16px;border-radius:12px;background:linear-gradient(150deg,#0E1B3D,#173A63);border:1.5px solid #C9A94F;box-shadow:0 10px 26px rgba(14,27,61,.24)}
.llp-featmini b{display:block;font-family:'Outfit',sans-serif;font-size:16px;font-weight:800;color:#fff}
.llp-featmini-rib{position:absolute;top:-10px;left:14px;font-family:'Outfit',sans-serif;font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#2B2205;background:linear-gradient(90deg,#E5C56E,#C9A94F);padding:4px 12px;border-radius:999px}
.llp-featmini-note{display:block;margin-top:4px;font-size:11.5px;color:#9FB2D4}

/* ═════ v1.49.0 — THE CONSOLE (her pick) · mobile-first shell ═════
   Base = phone: horizontal snap rail, compact identity, full-bleed panels.
   The container query (not viewport — /my-listings/ lives in a boxed
   Elementor section) upgrades to the two-column console at ≥760px. */

/* frame */
.llp-row.llp-tools{display:block;background:#fff;border:1px solid #E4E9F2;border-radius:16px;overflow:hidden;box-shadow:0 18px 44px rgba(14,27,61,.07);
  /* v1.49.1 — .llp-tools inherits gap:24px and padding:20px from .llp-row.
     Harmless while display:block, but as a GRID the rail spans grid-row 1/50,
     so the grid materialises 49 rows and charges 48 ROW GAPS of dead air:
     48 × 24px = 1152px of empty space under the panel. The padding also held
     the rail's gradient 20px off the card edge, which read as a broken shell.
     Both are reset here, once, for both layouts. */
  gap:0;padding:0}

/* identity — compact strip on phones */
.llp-rail{background:linear-gradient(180deg,#FBFCFE,#F4F7FB);border-bottom:1px solid #E4E9F2}
.llp-who{display:flex;align-items:center;gap:12px;padding:14px 16px 10px}
.llp-ring{position:relative;flex:none;width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(#0E9F8B calc(var(--pct)*1%),#E2E8F1 0)}
.llp-ring i{width:40px;height:40px;border-radius:50%;background:#0E1B3D;color:#fff;display:grid;place-items:center;font:800 15px 'Outfit',sans-serif;font-style:normal}
.llp-ring em{position:absolute;bottom:-5px;left:50%;transform:translateX(-50%);font:700 9px 'Outfit',sans-serif;font-style:normal;background:#0E9F8B;color:#fff;padding:1px 6px;border-radius:99px;white-space:nowrap}
.llp-who b{font-family:'Outfit',sans-serif;font-size:14.5px;font-weight:800;color:#0E1B3D;display:block;line-height:1.25}
.llp-who-sub{display:block;font-size:11.5px;color:#8896AF}

/* rail — horizontal snap strip on phones, every chip a ≥44px target */
.llp-chips.llp-toolrail{display:flex;gap:6px;margin:0;padding:6px 10px 12px;overflow-x:auto;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;scrollbar-width:none}
.llp-chips.llp-toolrail::-webkit-scrollbar{display:none}
.llp-toolrail .llp-chip{flex:none;scroll-snap-align:start;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:10px 15px;border-radius:11px;background:transparent;border:0;font:600 13.5px 'Outfit',sans-serif;color:#5B6B87}
.llp-toolrail .llp-chip svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:1.9;flex:none}
.llp-toolrail .llp-chip.is-on{background:#0E1B3D;color:#fff}
.llp-toolrail .llp-chip:not(.is-on):hover{background:#EDF1F7;color:#0E1B3D}

/* panels — comfortable phone padding */
.llp-tools > .llp-panel{padding:18px 16px 24px}

/* ≥760px of CONTAINER: the two-column console */
@container (min-width:760px){
  .llp-row.llp-tools{display:grid;grid-template-columns:216px 1fr;align-items:stretch}
  /* the rail sits beside the ONE visible panel: row 1. The old 1/50 span was
     a guard against several panels showing at once, which the tab machinery
     never does — and it was what created the phantom rows. */
  .llp-rail{grid-row:1;border-bottom:0;border-right:1px solid #E4E9F2;padding:22px 12px}
  .llp-who{flex-direction:column;text-align:center;gap:0;padding:4px 4px 18px;border-bottom:1px solid #E4E9F2;margin-bottom:12px}
  .llp-ring{width:74px;height:74px;margin-bottom:12px}
  .llp-ring i{width:62px;height:62px;font-size:22px}
  .llp-ring em{font-size:10px;bottom:-6px}
  .llp-chips.llp-toolrail{flex-direction:column;overflow:visible;padding:0;gap:4px}
  .llp-toolrail .llp-chip{width:100%;justify-content:flex-start;border-radius:10px}
  .llp-tools > .llp-panel{padding:26px 30px 34px}
}

/* fallback for browsers without container queries (viewport approximation) */
@supports not (container-type:inline-size){
  @media (min-width:1000px){
    .llp-row.llp-tools{display:grid;grid-template-columns:216px 1fr}
    .llp-rail{grid-row:1;border-bottom:0;border-right:1px solid #E4E9F2}
    .llp-chips.llp-toolrail{flex-direction:column;overflow:visible}
  }
}

@media (prefers-reduced-motion:reduce){.llp-toolrail .llp-chip{transition:none}}

/* ═════ v1.49.0 audit fixes — phones ═════ */
@media (pointer:coarse){
  .llp-in{font-size:16px} /* under 16px, iOS Safari zooms the page on focus */
}
@media (max-width:640px){
  .llp-modal{padding:0;align-items:flex-end}
  .llp-modal-box{width:100%;max-height:92dvh;border-radius:16px 16px 0 0;padding-bottom:max(18px,env(safe-area-inset-bottom))}
  .llp-modal-foot{position:sticky;bottom:0;background:#FFFEFB;padding-top:10px}
}

/* ═════ v1.50.0 — rail state badges (mobile-first, like the shell) ═════
   A draft is invisible until you open its tab; the badge carries the prompt
   out to the rail. Phone: a pill trailing the label on the snap strip.
   Console: pushed to the rail's right edge. Text lives inside the button, so
   a screen reader hears "Member offer Draft" as one name. */
.llp-chip-tag{font-family:'Outfit',sans-serif;font-size:9.5px;font-weight:800;letter-spacing:.08em;
  text-transform:uppercase;padding:3px 7px;border-radius:999px;white-space:nowrap;flex:none;line-height:1.35}
.llp-chip-tag.is-draft{color:#8A6D1B;background:#FBF3DD}
.llp-chip-tag.is-wait{color:#8A5E10;background:rgba(217,169,63,.18)}
.llp-chip-tag.is-back{color:#A5401F;background:rgba(190,74,42,.12)}
.llp-chip.is-on .llp-chip-tag{background:rgba(255,255,255,.16);color:#fff}
@container (min-width:760px){
  .llp-toolrail .llp-chip .llp-chip-tag{margin-left:auto}
}
@supports not (container-type:inline-size){
  @media (min-width:1000px){.llp-toolrail .llp-chip .llp-chip-tag{margin-left:auto}}
}

/* ═════════════════════════════════════════════════════════════════════════
   MOBILE: the dial as a bottom sheet (v1.51.0)

   Mobile-first in the sense that matters: below 760px the dial stops being a
   block the reader must scroll past and becomes a control they open when they
   want it. It is the SAME element with the same glass, the same mint selection
   and the same Go button — moved, not rebuilt — so a parent who used the
   directory on a laptop meets exactly the control they already know.

   Everything here is scoped to .is-sheet, a class the script only adds below
   the breakpoint. Above it, not one of these rules can match.
   ═════════════════════════════════════════════════════════════════════════ */

/* the trigger: the dial's own glass, shrunk to a pill */
.lld-fpill{display:inline-flex;align-items:center;gap:8px;margin-left:auto;cursor:pointer;
  font-family:Outfit,system-ui,sans-serif;font-weight:600;font-size:.82rem;color:#fff;
  padding:9px 16px;border-radius:12px;border:1px solid rgba(255,255,255,.16);
  background:
    linear-gradient(180deg,rgba(255,255,255,.11) 0%,rgba(255,255,255,.045) 40%,rgba(255,255,255,.02) 100%),
    linear-gradient(150deg,#0A1A38,#0D2F44);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 8px 20px -12px rgba(5,15,34,.7)}
.lld-fpill:focus-visible{outline:2px solid #9FF0DF;outline-offset:2px}
.lld-fpill-dot{width:7px;height:7px;border-radius:50%;background:#9FF0DF;flex:none;
  box-shadow:0 0 0 3px rgba(159,240,223,.22)}
.lld-fpill-dot[hidden]{display:none}

.lld-fscrim{position:fixed;inset:0;z-index:78;background:rgba(3,10,24,.55);
  backdrop-filter:blur(2px)}
.lld-fscrim[hidden]{display:none}

/* the sheet — the dial's own panel, docked to the bottom edge */
.lld-dial.is-sheet{position:fixed;left:0;right:0;bottom:0;top:auto;z-index:79;
  margin:0;max-height:82dvh;overflow-y:auto;overscroll-behavior:contain;
  border-radius:20px 20px 0 0;
  padding:14px 14px max(14px,env(safe-area-inset-bottom));
  transform:translateY(101%);transition:transform .26s cubic-bezier(.2,.7,.3,1);
  visibility:hidden}
.lld-dial.is-sheet.is-open{transform:translateY(0);visibility:visible}
@supports not (max-height:1dvh){.lld-dial.is-sheet{max-height:82vh}}

/* the close control, matching .lld-jletter rather than inventing a button */
.lld-dclose{position:absolute;top:12px;right:12px;width:34px;height:34px;cursor:pointer;
  border:1px solid rgba(255,255,255,.16);border-radius:9px;color:#fff;font-size:.85rem;
  background:linear-gradient(180deg,rgba(255,255,255,.12),rgba(255,255,255,.035));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.17);
  display:grid;place-items:center;z-index:2}
.lld-dclose:focus-visible{outline:2px solid #9FF0DF;outline-offset:2px}
.lld-dial.is-sheet .lld-dialrow:first-of-type{padding-right:42px}

/* the dashed selection guide is a hero flourish; in a sheet it reads as debris */
.lld-dial.is-sheet::before{display:none}

.lld-noscroll,.lld-noscroll body{overflow:hidden}

/* a sheet that slides is pleasant; a sheet that slides for someone who asked it
   not to is not. It still appears — it simply arrives rather than travels. */
@media(prefers-reduced-motion:reduce){
  .lld-dial.is-sheet{transition:none}
}

/* ═════════════════════════════════════════════════════════════════════════
   v1.52.0 — W3: SEARCH IN THE HERO, DIAL IN THE SHEET  (mobile, <=760px)

   Companion to the v1.52.0 change in ll-directory-ui-v1.js: toSheet() leaves
   the search rung behind in a .lld-hsearch wrapper standing exactly where the
   dial stood, so the phone hero keeps the desktop search field in the same
   place while Browse / Location / A-Z keep the familiar bottom sheet.

   Also repairs three faults measured on the unmodified assets at 390x844:
   F1  the stacked search form (101px) overflowing .lld-dview.is-input's fixed
       46px height — the Search button rendered on top of the Browse track;
   F2  .lld-ahero's missing bottom padding once the dial leaves (the locknote
       clipped on the 26px corner radius);
   F3  .lld-fpill at 120x35 — under the 44px touch minimum enforced elsewhere —
       while being the only route into the dial on a phone.

   Everything below is scoped to max-width:760px; above the breakpoint not one
   rule can match, and the dial module's own toHero() restores the desktop DOM.
   ═════════════════════════════════════════════════════════════════════════ */
@media (max-width:760px){

  /* ═══════════ 1. HERO ═══════════ */
  .lld-page .lld-ahero{padding:20px 0 18px;border-radius:0 0 20px 20px}      /* F2 */
  .lld-page .lld-w2row{display:block}
  .lld-page .lld-w2row h1{font-size:clamp(1.7rem,7.2vw,2.15rem);line-height:1.14;
    margin:4px 0 5px;letter-spacing:-.015em}
  .lld-page .lld-w2row .lld-lede{font-size:.9rem;line-height:1.52;max-width:37ch;margin:0}
  .lld-page .lld-eyebrow-hero{font-size:.6rem;letter-spacing:.16em}
  .lld-page .lld-locknote{margin-top:10px;font-size:.75rem;color:rgba(255,255,255,.48)}
  .lld-page .lld-inote-panel{width:min(330px,86vw)}

  /* ═══════════ 2. F1 — THE SEARCH RUNG, LIFTED INTO THE HERO ═══════════
     Given its own glass so it reads as a control in its own right rather than
     an orphan of the panel it came from — the same gradient and inset the dial
     uses, so it is recognisably the same material. Side by side rather than
     stacked, because in the hero it sits under a headline and a lede and the
     height matters more than the button being full width. */
  .lld-page .lld-hsearch{margin-top:14px;padding:12px;border-radius:16px;
    border:1px solid rgba(255,255,255,.15);
    background:
      linear-gradient(180deg,rgba(255,255,255,.1) 0%,rgba(255,255,255,.03) 100%),
      linear-gradient(180deg,rgba(2,9,21,.4),rgba(2,9,21,.1));
    box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 14px 34px -20px rgba(0,0,0,.6);
    backdrop-filter:blur(4px)}
  .lld-page .lld-hsearch .lld-dialrow.is-search{display:flex;align-items:stretch;
    margin:0;flex-wrap:nowrap}
  .lld-page .lld-hsearch .lld-dlabel{display:none}
  .lld-page .lld-hsearch .lld-dview.is-input{flex:1 1 auto;height:auto;min-height:48px;
    display:block;background:none;box-shadow:none;min-width:0}
  .lld-page .lld-hsearch .lld-searchbar{display:flex;flex-wrap:nowrap;gap:8px;
    width:100%;max-width:none;margin:0;align-items:stretch}
  .lld-page .lld-hsearch .lld-searchbar input{flex:1 1 auto;width:auto;min-width:0;
    height:50px;border-radius:12px}
  .lld-page .lld-hsearch .lld-searchbar .lld-btn{flex:0 0 auto;width:auto;height:50px;
    padding:0 20px;border-radius:12px;font-size:.95rem}

  /* ═══════════ 3. THE BAR — docked, and holding the way back in ═══════════
     The pill keeps a light glass here rather than teal: this option already has
     a teal primary in the hero a few pixels above, and two primaries compete.
     It still gets the 44px target it was missing. */
  .lld-bar{position:sticky;top:0;z-index:20;margin:0 -14px 14px;padding:10px 12px;
    background:rgba(255,255,255,.94);backdrop-filter:blur(8px);
    border-bottom:1px solid rgba(14,27,61,.08);gap:8px;flex-wrap:nowrap}
  .lld-count{flex:0 0 auto;order:1}
  .lld-barright{flex:1 1 auto;order:2;justify-content:flex-end;min-width:0;gap:8px}
  .lld-sortwrap select{max-width:7.5rem}
  .lld-fpill{order:3;flex:0 0 auto}
  .lld-fpill{min-height:44px;padding:10px 15px;font-size:.88rem;                /* F3 */
    color:#0B2138;border-color:rgba(14,27,61,.16);
    background:linear-gradient(180deg,#fff,#F2F6FA);
    box-shadow:inset 0 1px 0 #fff,0 6px 16px -10px rgba(5,15,34,.4)}
  .lld-fpill-dot{background:#0B8F7C;box-shadow:0 0 0 3px rgba(11,143,124,.18)}

  /* ═══════════ 4. THE SHEET — now holding only what it should ═══════════ */
  #lld-dial.is-sheet{padding-top:22px}
  #lld-dial.is-sheet::after{content:"";position:absolute;top:8px;left:50%;
    width:38px;height:4px;margin-left:-19px;border-radius:3px;
    background:rgba(255,255,255,.26);pointer-events:none}
  #lld-dial.is-sheet::before{display:none}
  #lld-dial.is-sheet .lld-dclose{top:16px}
  #lld-dial.is-sheet .lld-dialrow:first-of-type{padding-right:42px}

  #lld-dial.is-sheet .lld-dialrow{flex-wrap:wrap;gap:6px;row-gap:6px;align-items:stretch}
  #lld-dial.is-sheet .lld-dlabel{width:100%;font-size:.64rem;letter-spacing:.15em;
    color:rgba(255,255,255,.55)}
  #lld-dial.is-sheet .lld-dview{flex:1 1 100%;height:48px}
  #lld-dial.is-sheet .lld-dtrack{padding:0 calc(50% - 118px)}
  #lld-dial.is-sheet .lld-ditem{font-size:.9rem;padding:10px 15px}
  #lld-dial.is-sheet .lld-typebox{width:100%;min-height:44px}
  #lld-dial.is-sheet .lld-jump{display:grid;grid-template-columns:repeat(7,1fr);
    gap:5px;justify-content:stretch;padding-top:10px;margin-top:6px}
  #lld-dial.is-sheet .lld-jletter{width:100%;height:40px}
}

@media (max-width:760px) and (max-height:700px){
  #lld-dial.is-sheet{max-height:92dvh}
}