/* =========================================================================
   THE BEACHES — "Shoreline" design system
   scottwagner.com.au · beachfront profile pages + directory
   Bold Swiss-editorial / modern-luxury magazine cover.
   Bondi + Ink colour fields on an off-white ground. Montserrat throughout,
   Cormorant Garamond reserved for editorial pull-quotes.
   All classes scoped under .shore-* so nothing collides with site CSS.
   ========================================================================= */

/* Dakota handwriting — used for the hand-noted EXIF on the negative frames */
@font-face{
  font-family:'Handwriting Dakota';
  src:url('../fonts/HandwritingDakota.ttf') format('truetype');
  font-weight:normal;font-style:normal;font-display:swap;
}

:root{
  --shore-bondi:#007f86;
  --neg-base:#17120c;          /* warm film-base black */
  --neg-orange:#e8742a;        /* grease-pencil orange */
  --shore-aqua:#6fb5c1;
  --shore-saffron:#d9763d;
  --shore-coral:#ff5a4e;
  --shore-ink:#0c2126;
  --shore-cream:#f3e7db;
  --shore-navy:#1d3757;
  --shore-oxford:#768d9b;
  --shore-paper:#f6f3ee;        /* off-white ground */
  --shore-paper-pure:#fbfaf7;
  /* nav is fixed top (--nav-h 112px); on a beach page the bottom stack is the
     OCEAN ticker (44) + social bar (48) only — no LAND ticker. */
  --shore-top-clear:calc(var(--nav-h, 112px) + 16px);
  --shore-bottom-clear:104px;
  --shore-gut:clamp(16px,4vw,56px);
}

/* The page ground — off-white, hard light, no atmosphere. */
.shore{
  background:var(--shore-paper);
  color:var(--shore-ink);
  font-family:"Montserrat",system-ui,sans-serif;
  font-weight:400;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  padding-top:var(--shore-top-clear);
  padding-bottom:var(--shore-bottom-clear);
  overflow-x:clip;
}
.shore *{box-sizing:border-box;}
.shore img{display:block;}

/* On beach pages only the OCEAN ticker shows — drop it directly above the
   social bar (the default position assumes a LAND ticker sits below it). */
.shore.beach-page .ticker--ocean,
.shore.beaches-page .ticker--ocean{ bottom:var(--social-h); top:auto; }

/* Shared layout shell — a deliberate Swiss column with hard margins. */
.shore-wrap{
  width:min(1480px,100% - calc(var(--shore-gut) * 2));
  margin-inline:auto;
}

/* The baseline-grid rule used between bands. */
.shore-rule{ border:0;height:3px;background:var(--shore-ink);margin:0; }

/* ---- Big numbered section bands (01 / 02 / 03) ---------------------- */
.shore-band{
  display:flex;align-items:flex-end;gap:clamp(14px,2vw,30px);
  padding:clamp(34px,5vw,60px) 0 clamp(18px,2vw,26px);
}
.shore-band__no{
  font-weight:900;
  font-size:clamp(3.4rem,11vw,9rem);
  line-height:.78;letter-spacing:-.04em;
  color:var(--shore-bondi);flex:none;
}
.shore-band__txt{flex:1 1 auto;min-width:0;padding-bottom:.55em;}
.shore-band__kicker{
  display:block;
  font-weight:700;font-size:clamp(.66rem,1.2vw,.8rem);
  letter-spacing:.42em;text-transform:uppercase;
  color:var(--shore-saffron);margin-bottom:.55em;
}
.shore-band__title{
  margin:0;font-weight:900;
  font-size:clamp(1.7rem,5vw,3.8rem);
  line-height:.92;letter-spacing:-.025em;text-transform:uppercase;
}

/* =====================================================================
   HERO — full-bleed cover with type colliding over the edge
   ===================================================================== */
.shore-hero{
  position:relative;width:100%;
  margin-top:calc(var(--shore-top-clear) * -1);
  padding-top:var(--shore-top-clear);
  background:var(--shore-ink);overflow:hidden;
}
.shore-hero__frame{
  position:relative;width:100%;
  aspect-ratio:16/9;
  min-height:clamp(440px,86vh,1040px);
  max-height:1180px;overflow:hidden;background:var(--shore-ink);
}
/* portrait poster: full image contained over a blurred fill of itself (desktop);
   on phones the tall hero lets it cover edge-to-edge (see responsive). */
.shore-hero__bg{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:center;
  filter:blur(42px) brightness(.42) saturate(1.15);
  transform:scale(1.18);z-index:0;
}
.shore-hero__img{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:50% 50%;z-index:1;
}
.shore-hero__video{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:50% 42%;z-index:1;
}
.shore-hero__scrim{
  position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,
    rgba(12,33,38,.12) 0%, rgba(12,33,38,0) 30%,
    rgba(12,33,38,0) 50%, rgba(12,33,38,.80) 100%);
}
.shore-hero__tab{
  position:absolute;top:0;left:0;z-index:3;
  background:var(--shore-bondi);color:#fff;
  padding:clamp(10px,1.4vw,18px) clamp(16px,2.2vw,30px) clamp(12px,1.6vw,20px);
  font-weight:900;letter-spacing:.06em;
  font-size:clamp(.66rem,1.3vw,.84rem);text-transform:uppercase;line-height:1.25;
}
.shore-hero__tab b{display:block;font-size:1.15em;letter-spacing:.02em;}
.shore-hero__tab span{font-weight:600;letter-spacing:.3em;opacity:.85;}
.shore-hero__issue{
  position:absolute;top:clamp(16px,3vw,40px);right:clamp(10px,1.6vw,22px);z-index:3;
  writing-mode:vertical-rl;
  font-weight:700;letter-spacing:.4em;text-transform:uppercase;
  font-size:clamp(.6rem,1vw,.74rem);color:#fff;mix-blend-mode:difference;
}
.shore-hero__type{
  position:absolute;left:0;right:0;bottom:0;z-index:4;
  padding:0 var(--shore-gut) clamp(20px,4vw,56px);
}
.shore-hero__type-inner{ width:min(1480px,100%);margin-inline:auto; }
.shore-hero__eyebrow{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  margin:0 0 .35em;color:#fff;
  font-weight:700;letter-spacing:.34em;text-transform:uppercase;
  font-size:clamp(.6rem,1.3vw,.82rem);
}
.shore-hero__eyebrow .dot{
  width:9px;height:9px;background:var(--shore-saffron);border-radius:50%;flex:none;
}
.shore-hero h1{
  margin:0;color:#fff;font-weight:900;
  font-size:clamp(3.4rem,18vw,17rem);
  line-height:.8;letter-spacing:-.045em;text-transform:uppercase;
  margin-left:clamp(-6px,-1.4vw,-26px);
}
.shore-hero h1 .em{color:var(--shore-saffron);}
.shore-hero__sub{
  display:flex;flex-wrap:wrap;gap:clamp(10px,2vw,30px);
  align-items:baseline;margin-top:clamp(12px,1.6vw,22px);color:#fff;
}
.shore-hero__sub b{font-weight:900;font-size:clamp(.9rem,1.7vw,1.25rem);letter-spacing:-.01em;}
.shore-hero__sub span{
  font-weight:600;font-size:clamp(.66rem,1.2vw,.84rem);
  letter-spacing:.18em;text-transform:uppercase;color:var(--shore-aqua);
}

/* coordinate / fact strip beneath the hero — Swiss data line. */
.shore-coords{ background:var(--shore-ink);color:#fff; }
.shore-coords__inner{
  width:min(1480px,100% - calc(var(--shore-gut) * 2));margin-inline:auto;
  display:flex;flex-wrap:wrap;gap:clamp(14px,3vw,48px);
  padding:clamp(14px,1.8vw,22px) 0;
  font-weight:600;letter-spacing:.16em;text-transform:uppercase;
  font-size:clamp(.6rem,1.1vw,.76rem);
}
.shore-coords__inner i{font-style:normal;color:var(--shore-aqua);}
.shore-coords__inner b{color:var(--shore-saffron);font-weight:900;}

/* Banksia (Premier Listing) — render the fact strip as feature DATA PANELS.
   Scoped to .shore-coords--panels so currumbin's plain coordinate strip is
   untouched. Each stat becomes a centred tile: caps label + big value + unit. */
.shore-coords--panels .shore-coords__inner{
  display:grid;grid-template-columns:repeat(6,1fr);gap:0;flex-wrap:nowrap;
  padding:clamp(20px,3vw,40px) 0;
  letter-spacing:normal;text-transform:none;font-size:inherit;font-weight:400;
}
.shore-coords--panels .shore-coords__inner span{
  display:flex;flex-direction:column;align-items:center;justify-content:flex-start;
  gap:.55em;text-align:center;
  padding:clamp(6px,1.2vw,14px) clamp(6px,1.4vw,20px);
  border-left:1px solid rgba(255,255,255,.12);
}
.shore-coords--panels .shore-coords__inner span:first-child{border-left:0;}
.shore-coords--panels .shore-coords__inner i{
  color:var(--shore-aqua);font-style:normal;font-weight:700;
  font-size:clamp(.56rem,.9vw,.72rem);letter-spacing:.26em;text-transform:uppercase;
}
.shore-coords--panels .shore-coords__inner b{
  color:var(--shore-saffron);font-weight:900;line-height:1;letter-spacing:-.02em;
  font-size:clamp(1.9rem,3.3vw,3rem);
  display:flex;align-items:baseline;justify-content:center;gap:.14em;
}
.shore-coords--panels .shore-coords__inner b em{
  font-style:normal;color:rgba(255,255,255,.72);font-weight:600;
  font-size:.4em;letter-spacing:.02em;
}
@media (max-width:860px){
  .shore-coords--panels .shore-coords__inner{grid-template-columns:repeat(3,1fr);}
  .shore-coords--panels .shore-coords__inner span:nth-child(3n+1){border-left:0;}
  .shore-coords--panels .shore-coords__inner span:nth-child(n+4){border-top:1px solid rgba(255,255,255,.12);padding-top:clamp(14px,3vw,20px);}
}
@media (max-width:480px){
  .shore-coords--panels .shore-coords__inner{grid-template-columns:repeat(2,1fr);}
  .shore-coords--panels .shore-coords__inner span:nth-child(odd){border-left:0;}
  .shore-coords--panels .shore-coords__inner span:not(:nth-child(-n+2)){border-top:1px solid rgba(255,255,255,.12);}
}

/* =====================================================================
   INTRO STATEMENT — the positioning line in Scott's own voice
   ===================================================================== */
.shore-intro{ padding:clamp(40px,6vw,84px) 0 clamp(20px,3vw,30px); }
.shore-intro__kicker{
  font-weight:700;letter-spacing:.4em;text-transform:uppercase;
  font-size:clamp(.62rem,1.1vw,.78rem);color:var(--shore-saffron);margin:0 0 1.1em;
}
.shore-intro__h{
  margin:0;font-weight:900;text-transform:uppercase;
  font-size:clamp(2.2rem,8vw,6.6rem);line-height:.84;letter-spacing:-.035em;
  max-width:14ch;
}
.shore-intro__h em{color:var(--shore-bondi);font-style:normal;}
.shore-intro__lede{
  margin:clamp(20px,2.4vw,34px) 0 0;max-width:40ch;
  font-family:"Cormorant Garamond",serif;font-style:italic;font-weight:500;
  font-size:clamp(1.3rem,2.6vw,2.1rem);line-height:1.18;color:var(--shore-ink);
}

/* =====================================================================
   SPLIT EDITORIAL BLOCKS — photo one side, solid colour the other
   ===================================================================== */
.shore-split{
  display:grid;grid-template-columns:1fr 1fr;align-items:stretch;
  min-height:clamp(440px,62vh,760px);
}
.shore-split--flip .shore-split__media{order:2;}
.shore-split__media{position:relative;overflow:hidden;background:var(--shore-ink);}
.shore-split__media img{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:center;
}
.shore-split__panel{
  display:flex;flex-direction:column;justify-content:center;
  padding:clamp(28px,5vw,76px) clamp(24px,5vw,80px);
}
.shore-split__panel--bondi{background:var(--shore-bondi);color:#fff;}
.shore-split__panel--ink{background:var(--shore-ink);color:#fff;}
.shore-split__panel--cream{background:var(--shore-cream);color:var(--shore-ink);}
.shore-split__panel--navy{background:var(--shore-navy);color:#fff;}
.shore-split__no{
  font-weight:900;font-size:clamp(2.6rem,7vw,6.2rem);line-height:.78;
  letter-spacing:-.04em;margin:0 0 .12em;opacity:.94;
}
.shore-split__panel--bondi .shore-split__no{color:var(--shore-cream);}
.shore-split__panel--ink .shore-split__no,
.shore-split__panel--navy .shore-split__no{color:var(--shore-bondi);}
.shore-split__kicker{
  font-weight:700;letter-spacing:.38em;text-transform:uppercase;
  font-size:clamp(.62rem,1.1vw,.76rem);margin:0 0 1em;color:var(--shore-saffron);
}
.shore-split__panel--cream .shore-split__kicker{color:var(--shore-bondi);}
.shore-split__h{
  margin:0 0 .7em;font-weight:900;
  font-size:clamp(1.5rem,3.4vw,2.9rem);line-height:.95;
  letter-spacing:-.02em;text-transform:uppercase;
}
.shore-copy p{
  margin:0 0 .85em;
  font-size:clamp(.96rem,1.15vw,1.12rem);line-height:1.55;font-weight:400;
  max-width:46ch;
}
.shore-copy p:last-child{margin-bottom:0;}
.shore-copy strong{font-weight:900;}
.shore-split__panel--bondi .shore-copy strong{color:var(--shore-cream);}
.shore-split__panel--ink .shore-copy strong,
.shore-split__panel--navy .shore-copy strong,
.shore-split__panel--cream .shore-copy strong{color:var(--shore-saffron);}

/* caption that crosses the seam (overlaps onto the photo). */
.shore-seam{position:relative;}
.shore-seam__tag{
  position:absolute;z-index:5;top:clamp(16px,3vw,40px);
  background:var(--shore-saffron);color:var(--shore-ink);
  font-weight:900;letter-spacing:.04em;text-transform:uppercase;
  font-size:clamp(.66rem,1.2vw,.86rem);padding:.55em .9em;line-height:1;
}
.shore-split .shore-seam__tag{left:-1px;}
.shore-seam__tag--right{left:auto;right:-1px;}

/* =====================================================================
   SANCTUARY TIMELINE — milestone ledger, Swiss hairline rows
   ===================================================================== */
.shore-timeline{ background:var(--shore-paper-pure);padding:clamp(34px,5vw,72px) 0; }
.shore-tl{
  list-style:none;margin:clamp(20px,3vw,36px) 0 0;padding:0;
  border-top:3px solid var(--shore-ink);
}
.shore-tl__row{
  display:grid;grid-template-columns:minmax(120px,1fr) 3fr;
  gap:clamp(14px,3vw,48px);align-items:baseline;
  padding:clamp(16px,2vw,26px) 0;
  border-bottom:1px solid rgba(12,33,38,.16);
}
.shore-tl__year{
  font-weight:900;font-size:clamp(1.8rem,4.4vw,3.4rem);line-height:.9;
  letter-spacing:-.03em;color:var(--shore-bondi);font-variant-numeric:tabular-nums;
}
.shore-tl__event{ min-width:0; }
.shore-tl__event b{
  display:block;font-weight:900;text-transform:uppercase;letter-spacing:.01em;
  font-size:clamp(.92rem,1.5vw,1.25rem);margin-bottom:.25em;
}
.shore-tl__event span{
  font-weight:400;font-size:clamp(.9rem,1.1vw,1.04rem);line-height:1.5;
  color:rgba(12,33,38,.72);
}
.shore-tl__row--world{background:linear-gradient(90deg,rgba(0,127,134,.08),transparent 70%);}
.shore-tl__row--world .shore-tl__event b{color:var(--shore-bondi);}

/* =====================================================================
   GIANT EDITORIAL PULL — Cormorant serif quote band over a colour field
   ===================================================================== */
.shore-pull{ background:var(--shore-cream);padding:clamp(44px,7vw,100px) 0; }
.shore-pull--ink{background:var(--shore-ink);}
.shore-pull__q{
  margin:0;font-family:"Cormorant Garamond",serif;font-weight:500;font-style:italic;
  font-size:clamp(1.6rem,4.4vw,3.6rem);line-height:1.08;letter-spacing:-.01em;
  color:var(--shore-ink);max-width:26ch;
}
.shore-pull--ink .shore-pull__q{color:#fff;}
.shore-pull__q b{color:var(--shore-bondi);font-style:normal;font-weight:600;}
.shore-pull--ink .shore-pull__q b{color:var(--shore-aqua);}
.shore-pull__cite{
  display:block;margin-top:1.2em;font-family:"Montserrat",sans-serif;
  font-weight:700;letter-spacing:.3em;text-transform:uppercase;
  font-size:clamp(.62rem,1vw,.76rem);color:var(--shore-saffron);font-style:normal;
}

/* =====================================================================
   DATA / NUMBERS — Swiss-poster figure grid, huge numerals
   ===================================================================== */
.shore-data{ background:var(--shore-ink);color:#fff;padding:clamp(40px,6vw,96px) 0; }
.shore-data .shore-band__no{color:var(--shore-aqua);}
.shore-data .shore-band__title{color:#fff;}
.shore-data .shore-band__kicker{color:var(--shore-saffron);}
.shore-data__lede{
  max-width:62ch;margin:0 0 clamp(28px,4vw,52px);
  font-size:clamp(.98rem,1.2vw,1.16rem);line-height:1.55;color:var(--shore-aqua);font-weight:500;
}
.shore-data__lede strong{color:#fff;font-weight:900;}
.shore-grid{
  display:grid;grid-template-columns:repeat(2,1fr);gap:1px;
  background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.16);
}
.shore-cell{
  background:var(--shore-ink);
  padding:clamp(20px,2.6vw,38px) clamp(18px,2.4vw,34px);
  display:flex;flex-direction:column;gap:.3em;
}
.shore-cell--accent{background:var(--shore-bondi);}
.shore-cell__label{
  font-weight:700;letter-spacing:.26em;text-transform:uppercase;
  font-size:clamp(.58rem,.9vw,.72rem);color:var(--shore-aqua);
}
.shore-cell--accent .shore-cell__label{color:var(--shore-cream);}
.shore-cell__fig{
  font-weight:900;line-height:.86;letter-spacing:-.03em;
  font-size:clamp(2.2rem,5.2vw,4.6rem);font-variant-numeric:tabular-nums;
}
.shore-cell__fig sup{font-size:.42em;vertical-align:.72em;font-weight:700;}
.shore-cell__fig small{font-size:.34em;font-weight:700;letter-spacing:0;}
.shore-cell--accent .shore-cell__fig{color:#fff;}
.shore-cell__note{
  font-weight:500;font-size:clamp(.74rem,1vw,.9rem);
  color:rgba(255,255,255,.7);letter-spacing:.01em;margin-top:.2em;
}
.shore-cell--accent .shore-cell__note{color:rgba(255,255,255,.92);}
.shore-cell__delta{font-weight:900;color:var(--shore-saffron);}
.shore-cell--accent .shore-cell__delta{color:var(--shore-cream);}
.shore-data__foot{
  margin-top:clamp(20px,2.6vw,34px);font-weight:600;letter-spacing:.04em;
  font-size:clamp(.74rem,1vw,.9rem);color:rgba(255,255,255,.62);
}
/* census strip — secondary figure row, lighter weight */
.shore-census{
  display:grid;grid-template-columns:repeat(4,1fr);gap:1px;
  margin-top:1px;background:rgba(255,255,255,.16);
}
.shore-census .shore-cell__fig{font-size:clamp(1.7rem,3.6vw,3rem);}

/* neighbour comparison — three outlined mini-cards */
.shore-compare{
  display:grid;grid-template-columns:repeat(3,1fr);gap:1px;
  margin-top:clamp(28px,4vw,44px);
  background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.16);
}
.shore-compare__cell{ background:var(--shore-ink);padding:clamp(18px,2.2vw,30px); }
.shore-compare__cell--here{ background:var(--shore-navy); }
.shore-compare__name{
  font-weight:900;text-transform:uppercase;letter-spacing:.02em;
  font-size:clamp(.9rem,1.5vw,1.18rem);margin-bottom:.6em;
}
.shore-compare__name span{display:block;font-weight:600;font-size:.6em;letter-spacing:.2em;color:var(--shore-aqua);margin-top:.4em;}
.shore-compare__price{
  font-weight:900;font-size:clamp(1.3rem,2.6vw,2rem);
  letter-spacing:-.02em;color:#fff;font-variant-numeric:tabular-nums;
}
.shore-compare__sub{
  font-weight:500;font-size:clamp(.72rem,1vw,.86rem);
  color:rgba(255,255,255,.66);margin-top:.4em;
}
.shore-compare__sub b{color:var(--shore-saffron);font-weight:900;}

/* =====================================================================
   THE PLATES — photo gallery on an ink light-table, hard frames
   ===================================================================== */
.shore-plates{ background:#0a1417;padding:clamp(40px,6vw,96px) 0; }
.shore-plates .shore-band__no{color:var(--shore-aqua);}
.shore-plates .shore-band__title{color:#fff;}
.shore-plates .shore-band__kicker{color:var(--shore-saffron);}

/* a contact sheet of square Hasselblad-style negatives */
.shore-plates__grid{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:clamp(14px,2vw,30px);margin-top:clamp(24px,3vw,44px);
}

/* one film frame */
.neg{
  position:relative;display:block;width:100%;text-align:left;cursor:zoom-in;
  background:var(--neg-base);padding:clamp(11px,1vw,15px);
  border:1px solid #000;
  box-shadow:0 14px 34px rgba(0,0,0,.5), inset 0 0 0 1px rgba(232,116,42,.06);
  transition:transform .25s ease, box-shadow .25s ease;
}
.neg:hover,.neg:focus-visible{
  transform:translateY(-3px);
  box-shadow:0 20px 46px rgba(0,0,0,.6), inset 0 0 0 1px rgba(232,116,42,.22);outline:none;
}
.neg:focus-visible{box-shadow:0 0 0 3px var(--shore-saffron);}

/* top rebate — frame number + camera 'stock' */
.neg__rebate{
  display:flex;justify-content:space-between;align-items:baseline;gap:10px;
  font-family:'Handwriting Dakota','Caveat',cursive;font-variant-ligatures:none;
  margin-bottom:9px;padding:0 2px;line-height:1;
  font-size:clamp(.95rem,1.3vw,1.18rem);color:var(--neg-orange);
}
.neg__rebate .num{color:#fff;}
.neg__rebate .stock{color:rgba(244,239,229,.5);font-size:.86em;letter-spacing:.02em;}

/* the square 6×6 window */
.neg__win{
  display:block;                 /* span needs block for aspect-ratio to apply */
  position:relative;aspect-ratio:1/1;overflow:hidden;
  background:#0c0a07;border-radius:4px;
  box-shadow:inset 0 0 0 1.5px #000, inset 0 0 0 3px rgba(255,255,255,.05);
}
.neg__win img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .6s ease;}
.neg:hover .neg__win img,.neg:focus-visible .neg__win img{transform:scale(1.05);}

/* hand-noted EXIF */
.neg__notes{
  font-family:'Handwriting Dakota','Caveat',cursive;font-variant-ligatures:none;
  margin-top:10px;padding:0 2px;line-height:1.16;
}
.neg__loc{display:block;color:#fff;font-size:clamp(1.2rem,1.9vw,1.55rem);}
.neg__spec{display:block;color:var(--neg-orange);font-size:clamp(.96rem,1.35vw,1.16rem);margin-top:2px;}
.neg__date{display:block;color:rgba(244,239,229,.55);font-size:clamp(.86rem,1.2vw,1.02rem);margin-top:1px;}
.neg.is-broken{display:none;}

/* lightbox modal — an enlarged negative on the light table */
.shore-lb{
  position:fixed;inset:0;z-index:9000;display:none;
  align-items:center;justify-content:center;
  background:rgba(8,8,6,.96);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  padding:clamp(20px,4vw,56px);cursor:zoom-out;
}
.shore-lb.is-open{display:flex;}
.shore-lb__fig{
  margin:0;cursor:default;background:var(--neg-base);
  padding:clamp(14px,1.4vw,22px);border:1px solid #000;
  box-shadow:0 30px 80px rgba(0,0,0,.7);
  width:min(92vw,640px);display:flex;flex-direction:column;
}
.shore-lb__rebate{
  display:flex;justify-content:space-between;align-items:baseline;gap:12px;
  font-family:'Handwriting Dakota','Caveat',cursive;font-variant-ligatures:none;
  margin-bottom:10px;padding:0 2px;line-height:1;
  font-size:clamp(1.1rem,1.7vw,1.4rem);color:var(--neg-orange);
}
.shore-lb__rebate .num{color:#fff;}
.shore-lb__rebate .stock{color:rgba(244,239,229,.5);font-size:.84em;}
.shore-lb__win{
  position:relative;aspect-ratio:1/1;overflow:hidden;background:#0c0a07;border-radius:4px;
  box-shadow:inset 0 0 0 1.5px #000, inset 0 0 0 3px rgba(255,255,255,.05);max-height:62vh;
}
.shore-lb__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.shore-lb__cap{
  font-family:'Handwriting Dakota','Caveat',cursive;font-variant-ligatures:none;
  margin-top:12px;padding:0 2px;line-height:1.2;
}
.shore-lb__cap .loc{display:block;color:#fff;font-size:clamp(1.5rem,2.6vw,2.1rem);}
.shore-lb__cap .spec{display:block;color:var(--neg-orange);font-size:clamp(1.1rem,1.7vw,1.4rem);margin-top:3px;}
.shore-lb__cap .date{display:block;color:rgba(244,239,229,.6);font-size:clamp(1rem,1.5vw,1.2rem);margin-top:1px;}
.shore-lb__close{
  position:fixed;top:clamp(16px,2vw,26px);right:clamp(16px,2vw,28px);
  width:46px;height:46px;border-radius:50%;
  border:2px solid rgba(255,255,255,.5);background:transparent;color:#fff;
  font-size:22px;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:border-color .2s,background .2s;
}
.shore-lb__close:hover,.shore-lb__close:focus-visible{border-color:#fff;background:rgba(255,255,255,.12);outline:none;}

/* =====================================================================
   FULL-BLEED TEXTURE DIVIDER — the footprint
   ===================================================================== */
.shore-divider{
  position:relative;height:clamp(220px,38vw,440px);overflow:hidden;background:var(--shore-ink);
}
.shore-divider img{ position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 60%; }
.shore-divider__word{
  position:absolute;left:var(--shore-gut);bottom:clamp(14px,3vw,40px);z-index:2;
  margin:0;color:#fff;font-weight:900;
  font-size:clamp(2rem,9vw,7rem);line-height:.8;letter-spacing:-.04em;
  text-transform:uppercase;mix-blend-mode:difference;
}

/* =====================================================================
   FILM BAND — the looping video as its own cinematic section
   ===================================================================== */
.shore-film{ background:var(--shore-ink); }
.shore-film__frame{
  position:relative;width:100%;aspect-ratio:16/9;max-height:84vh;
  overflow:hidden;background:#0c2126;
}
.shore-film__video{ position:absolute;inset:0;width:100%;height:100%;object-fit:cover; }
.shore-film__scrim{
  position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(12,33,38,.18) 0%,transparent 28%,transparent 62%,rgba(12,33,38,.72) 100%);
}
.shore-film__cap{
  position:absolute;left:var(--shore-gut);bottom:clamp(18px,3vw,40px);z-index:2;margin:0;
  font-weight:700;letter-spacing:.34em;text-transform:uppercase;
  font-size:clamp(.62rem,1.1vw,.8rem);color:#fff;
}
.shore-film__cap b{color:var(--shore-saffron);}
.shore-film__frame.is-broken{background:var(--shore-ink);}

/* =====================================================================
   CTA — graphic Bondi call-to-action with a Saffron button
   ===================================================================== */
.shore-cta{ background:var(--shore-bondi);color:#fff;padding:clamp(44px,7vw,104px) 0; }
.shore-cta__inner{ width:min(1480px,100% - calc(var(--shore-gut) * 2));margin-inline:auto; }
.shore-cta__kicker{
  font-weight:700;letter-spacing:.4em;text-transform:uppercase;
  font-size:clamp(.62rem,1.1vw,.78rem);color:var(--shore-cream);margin:0 0 .8em;
}
.shore-cta__h{
  margin:0 0 .55em;font-weight:900;
  font-size:clamp(2rem,7vw,5.6rem);line-height:.86;letter-spacing:-.03em;
  text-transform:none;color:#fff;
}
.shore-cta__h em{color:var(--shore-saffron);font-style:normal;text-transform:uppercase;}
.shore-cta__lede{
  max-width:48ch;margin:0 0 clamp(24px,3vw,40px);
  font-size:clamp(.98rem,1.3vw,1.2rem);line-height:1.5;color:var(--shore-cream);font-weight:500;
}
.shore-cta__row{ display:flex;flex-wrap:wrap;gap:clamp(12px,1.6vw,20px);align-items:center; }
.shore-btn{
  display:inline-flex;align-items:center;gap:.6em;
  background:var(--shore-saffron);color:var(--shore-ink);
  font-weight:900;letter-spacing:.06em;text-transform:uppercase;
  font-size:clamp(.82rem,1.2vw,1.02rem);padding:1em 1.6em;line-height:1;text-decoration:none;
  border:3px solid var(--shore-saffron);
  transition:transform .12s ease, background .12s ease, color .12s ease;
}
.shore-btn:hover,.shore-btn:focus-visible{ background:transparent;color:#fff;transform:translateY(-2px);outline:none; }
.shore-btn:focus-visible{outline:3px solid var(--shore-cream);outline-offset:3px;}
.shore-btn--ghost{ background:transparent;color:#fff;border:3px solid rgba(255,255,255,.85); }
.shore-btn--ghost:hover,.shore-btn--ghost:focus-visible{ background:#fff;color:var(--shore-bondi); }
.shore-cta__meta{
  margin-top:clamp(24px,3vw,40px);display:flex;flex-wrap:wrap;gap:clamp(14px,2.4vw,40px);
  border-top:2px solid rgba(255,255,255,.3);padding-top:clamp(16px,2vw,26px);
}
.shore-cta__meta div b{
  display:block;font-weight:900;font-size:clamp(1.4rem,3vw,2.4rem);
  line-height:.9;letter-spacing:-.02em;color:#fff;
}
.shore-cta__meta div span{
  font-weight:700;letter-spacing:.2em;text-transform:uppercase;
  font-size:clamp(.58rem,.95vw,.72rem);color:var(--shore-cream);
}

/* colophon footer */
.shore-foot{ background:var(--shore-ink);color:rgba(255,255,255,.6);padding:clamp(26px,3vw,40px) 0; }
.shore-foot__inner{
  width:min(1480px,100% - calc(var(--shore-gut) * 2));margin-inline:auto;
  display:flex;flex-wrap:wrap;justify-content:space-between;gap:14px;
  font-weight:600;letter-spacing:.16em;text-transform:uppercase;font-size:clamp(.58rem,.9vw,.72rem);
}
.shore-foot__inner b{color:#fff;font-weight:900;}
/* Brand lockup — the real SCOTTWAGNER. wordmark LOGO + Beachfront Brokers descriptor (style guide, never typed) */
.sw-logo{ height:0.92em;width:auto;vertical-align:-0.03em; }
.sw-desc{ text-transform:none;font-weight:500; }

/* graceful image-failure state — frames collapse intentionally. */
.shore-img-broken{visibility:hidden;}
.shore-split__media.is-broken{background:var(--shore-bondi);}
.shore-divider.is-broken,.shore-hero__frame.is-broken{background:var(--shore-ink);}

/* =====================================================================
   THE BEACHES — DIRECTORY (beaches.html)
   ===================================================================== */
.shore-dir-hero{
  position:relative;overflow:hidden;background:var(--shore-ink);color:#fff;
  padding:clamp(40px,7vw,110px) 0 clamp(34px,5vw,72px);
}
.shore-dir-hero::before{
  content:"";position:absolute;inset:0;
  background:url('../images/beaches/currumbin_footprint.jpg') center/cover no-repeat;
  opacity:.22;filter:grayscale(100%) contrast(1.05);
}
.shore-dir-hero::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(12,33,38,.6),rgba(12,33,38,.9));
}
.shore-dir-hero__inner{ position:relative;z-index:2; }
.shore-dir-hero__kicker{
  font-weight:700;letter-spacing:.42em;text-transform:uppercase;
  font-size:clamp(.62rem,1.2vw,.8rem);color:var(--shore-saffron);margin:0 0 1em;
}
.shore-dir-hero__h{
  margin:0;font-weight:900;text-transform:uppercase;
  font-size:clamp(3.4rem,15vw,12rem);line-height:.82;letter-spacing:-.045em;
}
.shore-dir-hero__h em{color:var(--shore-bondi);font-style:normal;}
.shore-dir-hero__lede{
  margin:clamp(20px,2.6vw,32px) 0 0;max-width:54ch;
  font-size:clamp(1rem,1.4vw,1.24rem);line-height:1.55;color:rgba(255,255,255,.72);
}

.shore-dir-grid{ display:grid;grid-template-columns:repeat(3,1fr);gap:2px;background:var(--shore-ink); }

.shore-card{
  position:relative;display:block;overflow:hidden;text-decoration:none;color:#fff;
  background:var(--shore-ink);aspect-ratio:4/5;
}
.shore-card img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;
  transition:transform .6s ease,filter .6s ease;filter:saturate(1.02);
}
.shore-card:hover img,.shore-card:focus-visible img{transform:scale(1.05);}
.shore-card__scrim{
  position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(12,33,38,.1) 0%,rgba(12,33,38,0) 38%,rgba(12,33,38,.86) 100%);
}
.shore-card__body{ position:absolute;left:0;right:0;bottom:0;z-index:2;padding:clamp(20px,2.4vw,34px); }
.shore-card__no{
  position:absolute;top:clamp(14px,1.8vw,22px);left:clamp(14px,1.8vw,22px);z-index:2;
  font-weight:900;font-size:clamp(1.4rem,2.6vw,2.2rem);color:#fff;mix-blend-mode:difference;letter-spacing:-.03em;
}
.shore-card__region{
  font-weight:700;letter-spacing:.3em;text-transform:uppercase;
  font-size:clamp(.58rem,1vw,.72rem);color:var(--shore-aqua);margin-bottom:.7em;
}
.shore-card__name{
  margin:0 0 .35em;font-weight:900;text-transform:uppercase;
  font-size:clamp(1.8rem,3.4vw,3rem);line-height:.92;letter-spacing:-.02em;
}
.shore-card__stat{
  font-weight:600;font-size:clamp(.74rem,1vw,.9rem);color:rgba(255,255,255,.8);letter-spacing:.02em;
}
.shore-card__stat b{color:var(--shore-saffron);font-weight:900;}
.shore-card__go{
  position:absolute;top:clamp(14px,1.8vw,22px);right:clamp(14px,1.8vw,22px);z-index:2;
  width:42px;height:42px;border:2px solid rgba(255,255,255,.45);border-radius:50%;
  display:flex;align-items:center;justify-content:center;color:#fff;font-size:18px;
  transition:background .2s,border-color .2s,color .2s;
}
.shore-card:hover .shore-card__go,.shore-card:focus-visible .shore-card__go{
  background:var(--shore-saffron);border-color:var(--shore-saffron);color:var(--shore-ink);
}

/* coming-soon card — greyed, no photo, intentional placeholder */
.shore-card--soon{
  cursor:default;background:#0c1c20;
  display:flex;flex-direction:column;justify-content:flex-end;
  padding:clamp(20px,2.4vw,34px);
  border:1px solid rgba(111,181,193,.12);
}
.shore-card--soon::before{
  content:"";position:absolute;inset:0;
  background:repeating-linear-gradient(135deg,rgba(111,181,193,.05) 0 14px,transparent 14px 28px);
}
.shore-card--soon .shore-card__name{color:rgba(255,255,255,.5);}
.shore-card--soon .shore-card__region{color:rgba(111,181,193,.55);}
.shore-card__soon-tag{
  position:absolute;top:clamp(14px,1.8vw,22px);right:clamp(14px,1.8vw,22px);z-index:2;
  font-weight:700;letter-spacing:.26em;text-transform:uppercase;
  font-size:clamp(.54rem,.9vw,.66rem);color:var(--shore-oxford);
  border:1px solid rgba(118,141,155,.4);padding:.4em .7em;
}
.shore-card--soon .shore-card__stat{color:rgba(255,255,255,.34);}

.shore-dir-note{
  background:var(--shore-cream);color:var(--shore-ink);padding:clamp(34px,5vw,68px) 0;
}
.shore-dir-note__inner{ width:min(1480px,100% - calc(var(--shore-gut) * 2));margin-inline:auto;max-width:760px; }
.shore-dir-note__h{
  margin:0 0 .6em;font-weight:900;text-transform:uppercase;
  font-size:clamp(1.4rem,3vw,2.4rem);line-height:.96;letter-spacing:-.02em;
}
.shore-dir-note__p{ margin:0;font-size:clamp(.98rem,1.2vw,1.16rem);line-height:1.6;color:rgba(12,33,38,.78); }
.shore-dir-note__p a{color:var(--shore-bondi);font-weight:700;text-decoration:none;border-bottom:2px solid var(--shore-bondi);}

/* =====================================================================
   POSTER HERO (beaches.html) — a 9:16 poster + Scott's manifesto.
   Personal voice set in Cormorant serif, on the ink ground.
   ===================================================================== */
.shore-poster{
  position:relative;overflow:hidden;
  background:var(--shore-ink);color:#fff;
  min-height:clamp(580px,92vh,1040px);
  display:flex;align-items:center;
}
.shore-poster__bg{
  position:absolute;inset:0;z-index:0;width:100%;height:100%;
  object-fit:cover;object-position:center;
}
.shore-poster__scrim{
  position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    linear-gradient(95deg, rgba(8,22,25,.95) 0%, rgba(8,22,25,.84) 44%, rgba(8,22,25,.40) 100%),
    linear-gradient(180deg, rgba(8,22,25,.5) 0%, rgba(8,22,25,0) 34%, rgba(8,22,25,.5) 100%);
}
.shore-poster__panel{
  position:relative;z-index:2;
  width:min(1480px,100% - calc(var(--shore-gut) * 2));margin-inline:auto;
  padding:clamp(40px,6vw,80px) 0;
}
.shore-poster__kicker{
  font-weight:700;letter-spacing:.4em;text-transform:uppercase;
  font-size:clamp(.6rem,1.1vw,.78rem);color:var(--shore-saffron);margin:0 0 1em;
}
.shore-poster__h{
  margin:0 0 clamp(20px,2.6vw,34px);font-weight:900;text-transform:uppercase;
  font-size:clamp(2.8rem,7vw,6.2rem);line-height:.84;letter-spacing:-.04em;
  text-shadow:0 2px 30px rgba(0,0,0,.5);
}
.shore-poster__story{max-width:46ch;}
.shore-poster__story p{
  margin:0 0 .85em;font-family:"Cormorant Garamond",serif;
  font-weight:500;font-size:clamp(1.18rem,1.7vw,1.66rem);line-height:1.42;
  color:rgba(255,255,255,.92);text-shadow:0 1px 14px rgba(0,0,0,.55);
}
.shore-poster__story p.lead{font-style:italic;color:#fff;}
.shore-poster__story p.close{
  font-style:italic;color:var(--shore-aqua);
  font-size:clamp(1.36rem,2vw,2rem);margin-top:.5em;margin-bottom:0;
}

/* Introducing band — the bridge into the grid */
.shore-introducing{background:var(--shore-cream);color:var(--shore-ink);padding:clamp(34px,5vw,72px) 0;}
.shore-introducing__inner{width:min(1480px,100% - calc(var(--shore-gut) * 2));margin-inline:auto;}
.shore-introducing__note{
  font-weight:700;letter-spacing:.3em;text-transform:uppercase;
  font-size:clamp(.62rem,1.1vw,.78rem);color:var(--shore-bondi);margin:0 0 1em;
}
.shore-introducing__h{
  margin:0;font-weight:900;text-transform:uppercase;
  font-size:clamp(2rem,5.5vw,4.4rem);line-height:.9;letter-spacing:-.03em;
}
.shore-introducing__h em{color:var(--shore-saffron);font-style:normal;}

/* =====================================================================
   AMBIENT SOUND TOGGLE — sits above the bottom ticker + social stack
   ===================================================================== */
.shore-sound{
  position:fixed;z-index:60;   /* below the nav drawer (80) + its backdrop (70) so the open menu covers it */
  top:calc(var(--nav-h) + 86px); bottom:auto; left:18px;
  display:inline-flex;align-items:center;gap:8px;
  background:rgba(12,33,38,.82);color:#fff;
  border:1px solid rgba(255,255,255,.18);border-radius:999px;
  padding:9px 15px 9px 12px;cursor:pointer;
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  font-weight:700;letter-spacing:.18em;text-transform:uppercase;font-size:.62rem;
  opacity:.82;transition:opacity .2s ease,border-color .2s ease,background .2s ease;
}
.shore-sound:hover,.shore-sound:focus-visible{opacity:1;border-color:var(--shore-bondi);outline:none;}
.shore-sound:focus-visible{outline:2px solid var(--shore-bondi);outline-offset:3px;}
.shore-sound.is-playing{opacity:1;border-color:var(--shore-bondi);background:rgba(0,127,134,.28);}
.shore-sound__icon{width:15px;height:15px;flex:none;color:#fff;}
.shore-sound.is-playing .shore-sound__icon{color:var(--shore-aqua);}
.shore-sound__on{display:none;}
.shore-sound__off{display:block;}
.shore-sound.is-playing .shore-sound__on{display:block;}
.shore-sound.is-playing .shore-sound__off{display:none;}
.shore-sound__label{font-size:.62rem;color:rgba(255,255,255,.85);}
.shore-sound.is-playing .shore-sound__label{color:#fff;}

/* =====================================================================
   RESPONSIVE
   ===================================================================== */
@media (max-width:1024px){
  .shore-plates__grid{grid-template-columns:repeat(2,1fr);}
  .shore-dir-grid{grid-template-columns:repeat(2,1fr);}
}
@media (max-width:880px){
  .shore-split{grid-template-columns:1fr;}
  .shore-split--flip .shore-split__media{order:0;}
  .shore-split__media{min-height:64vw;}
  .shore-grid{grid-template-columns:1fr;}
  .shore-census{grid-template-columns:repeat(2,1fr);}
  .shore-compare{grid-template-columns:1fr;}
  .shore-tl__row{grid-template-columns:1fr;gap:6px;}
  /* Currumbin hero: the portrait poster fills the tall phone hero edge-to-edge */
  .shore-hero__img{object-fit:cover;object-position:50% 50%;}
  .shore-hero__bg{display:none;}
  /* The Beaches footprint hero: uniform dark scrim so the manifesto reads on a phone */
  .shore-poster__scrim{background:linear-gradient(180deg, rgba(8,22,25,.5) 0%, rgba(8,22,25,.82) 58%, rgba(8,22,25,.94) 100%);}
}
@media (max-width:560px){
  .shore-band{flex-direction:column;align-items:flex-start;gap:8px;}
  .shore-band__txt{padding-bottom:0;}
  .shore-cta__row{flex-direction:column;align-items:stretch;}
  .shore-btn{justify-content:center;}
  .shore-plates__grid{grid-template-columns:1fr;}

  /* hero masthead: show the whole word on a phone (drop the cover bleed) */
  .shore-hero h1{font-size:clamp(2.3rem,12.5vw,4.2rem);margin-left:0;letter-spacing:-.035em;}

  /* directory: one big live card, then compact 2-up placeholder tiles */
  .shore-dir-grid{grid-template-columns:1fr 1fr;gap:1px;}
  .shore-card:not(.shore-card--soon){grid-column:1 / -1;aspect-ratio:4/5;}
  .shore-card--soon{aspect-ratio:auto;min-height:0;padding:16px 14px 14px;justify-content:flex-start;}
  .shore-card--soon .shore-card__region{margin-bottom:.45em;font-size:.56rem;}
  .shore-card--soon .shore-card__name{font-size:1.06rem;line-height:1.05;}
  .shore-card--soon .shore-card__soon-tag{position:static;display:inline-block;margin-top:10px;font-size:.5rem;padding:.35em .6em;}

  /* manifesto: comfortable phone measure */
  .shore-poster__panel{padding:30px 22px 36px;}
  .shore-sound{font-size:.56rem;padding:8px 13px 8px 10px;}
}

@media (prefers-reduced-motion:reduce){
  .shore-btn,.shore-card img,.neg,.neg__win img{transition:none;}
}
