/* RENOVA's Wall of Love. Two expressive frames; one calm testimonial wall. */
.wall-page{
  --love-brown:#765741;
  --love-line:#cec8bc;
  --love-white:#faf9f5;
  --love-sand:#e5dece;
  --love-stone:#d3d7ca;
}
.wall-page .site-header{background:var(--paper)}
.love-shell{max-width:1580px;margin:0 auto;padding-left:var(--gutter);padding-right:var(--gutter)}
.love-label{font-size:11px;letter-spacing:.14em;line-height:1.5;text-transform:uppercase}
.love-caption{font-size:12px;line-height:1.6;color:#68665e}

/* Frame one: still typography with gently animated ink details. */
.love-opening{padding-top:152px;padding-bottom:64px}
.love-topline{display:flex;align-items:center;justify-content:space-between;gap:24px}
.love-jump{font-size:12px;border-bottom:1px solid var(--love-line);padding-bottom:8px}
.love-jump span{margin-left:20px}
.love-title-wrap{position:relative;isolation:isolate;overflow:hidden;padding:43px 0 34px}
.wall-page #page-title{position:relative;z-index:2;max-width:1050px;font-size:clamp(96px,13vw,190px);line-height:.88;letter-spacing:-.075em}
.wall-page #page-title>span{display:block}
.wall-page #page-title em{display:block;margin-left:25%;color:var(--love-brown);font-size:1.36em;font-style:italic;line-height:.92;letter-spacing:-.075em}
.love-period,.love-interlude-period{display:inline-block;transform-origin:center 78%}
.love-period{color:var(--ink)}
.love-heart{display:block;width:100%;height:auto;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.love-opening-heart{position:absolute;z-index:3;right:5%;top:38px;width:190px;margin:0;color:var(--love-brown);transform:rotate(9deg);pointer-events:none}
.love-opening-heart figcaption{margin-top:3px;text-align:center;font:italic 17px/1.2 var(--serif)}
.love-xoxo-rail,.love-heart-rail{position:absolute;z-index:1;overflow:hidden;contain:layout paint;pointer-events:none;color:var(--love-brown)}
.love-xoxo-rail{left:.5%;bottom:2%;width:17%;max-width:185px;height:44%}
.love-xoxo-rail span,.love-heart-rail span{position:absolute;left:var(--particle-x);bottom:-1.8em;display:block;opacity:0;font-size:var(--particle-size);line-height:1;transform:translate3d(0,16px,0) rotate(var(--particle-turn));transform-origin:center;will-change:transform,opacity}
.love-xoxo-rail span{font-family:var(--sans);font-weight:500;letter-spacing:.16em;white-space:nowrap}
.love-story-invite{display:grid;grid-template-columns:66px minmax(220px,360px) minmax(175px,230px);gap:20px;align-items:end;width:min(760px,76%);padding:19px 0 4px;border-top:1px solid var(--love-line);color:var(--love-brown)}
.love-invite-heart{display:block;width:58px;height:auto;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round;transform:rotate(-7deg)}
.love-story-invite p{margin:0;font:italic 18px/1.25 var(--serif);letter-spacing:-.01em}
.love-story-invite p>span{display:block;margin-bottom:8px;font:500 8px/1.3 var(--sans);letter-spacing:.18em}
.love-story-invite a{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:0;padding-bottom:7px;border-bottom:1px solid currentColor;font-size:10px;letter-spacing:.11em;text-transform:uppercase}
.love-story-invite a>span{font-size:16px;line-height:1;transition:transform .25s ease}
.love-story-invite a:hover>span{transform:translate(3px,3px)}
.love-intro{display:grid;grid-template-columns:1fr 1fr 120px;gap:35px;align-items:end;margin-top:40px}
.love-intro>p{font-size:25px;line-height:1.25;letter-spacing:-.025em}
.love-intro>p em{font-family:var(--serif);font-weight:400}
.love-intro>div{max-width:340px}
.love-intro>div>p:first-child{font-size:15px;line-height:1.55}
.love-intro .love-caption{margin-top:15px}
.love-scroll{display:flex;align-items:center;justify-content:center;gap:15px;width:100px;height:100px;border:1px solid var(--love-line);border-radius:50%;font-size:9px;letter-spacing:.09em;line-height:1.5;transition:background .25s,transform .25s}
.love-scroll>span:last-child{font-size:25px}
.love-scroll:hover{background:var(--love-sand);transform:rotate(-7deg)}

/* The testimonial wall becomes an organic editorial pinboard without losing RENOVA restraint. */
.love-wall{padding-top:28px;padding-bottom:66px}
.love-wall-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:22px;border-top:1px solid var(--love-line)}
.love-wall-heading h2{font-size:17px;letter-spacing:-.025em}
.love-wall-heading h2>span{margin-left:6px;color:var(--love-brown);font-size:11px;vertical-align:top}
.love-filters{display:flex;gap:8px;flex-wrap:wrap;margin:23px 0 34px}
.love-filters[hidden]{display:none}
.love-filters button{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:auto;min-height:44px;padding:11px 17px;border:1px solid var(--love-line);border-radius:0;appearance:none;background:transparent;color:var(--ink);font:inherit;font-size:12px;cursor:pointer;transition:color .2s,background .2s,border-color .2s}
.love-filters button span{margin-left:8px;font-size:10px;opacity:.7}
.love-filters button[aria-pressed=true]{border-color:var(--ink);background:var(--ink);color:var(--paper)}
.love-filters button:hover{border-color:var(--ink)}
.love-collage-stage{position:relative;isolation:isolate;overflow:hidden;margin-top:30px;padding:clamp(38px,4.35vw,68px);background:#202722;box-shadow:inset 0 0 0 1px #ffffff22}
.love-collage-stage::before{content:"";position:absolute;z-index:-2;inset:-2%;background:linear-gradient(118deg,rgba(21,27,23,.96),rgba(27,32,28,.78)),url('/assets/projects/le-lac-road-boca-raton/04-great-room-1280.webp') center/cover no-repeat;background-blend-mode:multiply,luminosity;filter:grayscale(1) contrast(.86);opacity:.45;transform:scale(1.035)}
.love-collage-stage::after{content:"“";position:absolute;z-index:-1;right:2.5%;bottom:-.2em;color:#ece6db14;font:400 clamp(220px,30vw,510px)/.72 var(--serif);letter-spacing:-.1em;pointer-events:none}
.love-grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-auto-flow:dense;gap:clamp(14px,1.35vw,22px);align-items:stretch;margin:0;box-shadow:0 0 0 1px #f1efe91a}
.love-card{position:relative;grid-column:span 4;display:flex;flex-direction:column;align-self:stretch;width:100%;min-width:0;margin:0;padding:30px 29px 22px;border:1px solid rgba(45,47,40,.14);border-radius:0;background:var(--love-white);box-shadow:0 14px 34px #0d120f24;transform:translateZ(0);translate:0 0;transition:transform .55s cubic-bezier(.2,.75,.24,1),translate .55s ease,box-shadow .55s ease,border-color .4s ease;isolation:isolate}
.love-card[hidden]{display:none!important}
.love-card:focus-within{z-index:4;border-color:rgba(45,47,40,.35);box-shadow:0 26px 50px #0d120f42}
.love-card[data-layout="hero"]{grid-column:span 5;min-height:505px;padding:38px 36px 28px}
.love-card[data-layout="portrait"]{grid-column:span 3;min-height:430px;padding:30px 24px 22px}
.love-card[data-layout="note"]{grid-column:span 4;min-height:355px}
.love-card[data-layout="wide"]{grid-column:span 6;min-height:360px;padding:34px 34px 24px}
.love-card[data-layout="quote"]{grid-column:span 3;min-height:355px}
.love-card[data-layout="portrait"]::before,.love-card[data-layout="note"]::before{content:"";position:absolute;z-index:3;top:-8px;left:50%;width:54px;height:17px;background:#d8cbb5cc;box-shadow:0 2px 6px #1517131f;transform:translateX(-50%) rotate(-1.2deg);pointer-events:none}
.love-card[data-layout="portrait"]:nth-child(even)::before,.love-card[data-layout="note"]:nth-child(even)::before{transform:translateX(-50%) rotate(1deg)}
.love-card[data-layout="note"]::after{content:"";position:absolute;z-index:2;top:-1px;right:-1px;width:0;height:0;border-style:solid;border-width:0 34px 34px 0;border-color:transparent #20272222 transparent transparent;pointer-events:none}
.love-card[data-layout="quote"]::after{content:"”";position:absolute;right:14px;bottom:-20px;color:var(--love-brown);font:400 112px/1 var(--serif);opacity:.34;pointer-events:none}
.love-card--feature{padding-top:36px;padding-bottom:28px;background:var(--love-sand)}
.love-card--sand{background:#ece6db}
.love-card--stone{background:var(--love-stone)}
.love-card--ink{padding-top:38px;padding-bottom:30px;background:#242c27;color:var(--paper)}
.love-card figure{position:relative;display:flex;flex:1;flex-direction:column;margin:0}
.love-card-top{position:relative;z-index:2;display:flex;justify-content:space-between;align-items:baseline;gap:14px;min-height:22px;font-size:10px;letter-spacing:.1em;text-transform:uppercase}
.love-number{font-family:var(--serif);font-style:italic;font-size:16px;opacity:.6}
.love-card blockquote{margin:0;padding:34px 0 33px}
.love-card blockquote p{font:400 28px/1.19 var(--serif);letter-spacing:-.025em;text-wrap:pretty}
.wall-page .love-card blockquote p:before,.wall-page .love-card blockquote p:after{content:none}
.love-card--feature blockquote{padding-top:44px;padding-bottom:48px}
.love-card--feature blockquote p{font-size:38px}
.love-card--ink blockquote{padding-top:40px;padding-bottom:42px}
.love-card--ink blockquote p{font-size:58px;font-style:italic;line-height:1.02}
.love-card figcaption{display:flex;gap:12px;align-items:center}
.love-avatar{display:flex;align-items:center;justify-content:center;width:60px;height:60px;flex:0 0 60px;overflow:hidden;border:1px solid currentColor;border-radius:50%;font-size:10px;letter-spacing:.03em;opacity:1}
.love-avatar--photo{border:0;background:var(--love-sand)}
.love-avatar-photo{display:block;width:100%;height:100%;object-fit:cover;border-radius:50%!important}
.love-avatar--neutral{opacity:.5}
.love-avatar--neutral svg{width:27px;height:27px}
.love-card strong{display:block;font-size:12px;line-height:1.5;font-weight:500}
.love-card time{display:block;font-size:10px;line-height:1.7;opacity:.65}

/* 01 — Oversized editorial story: expressive type with a restrained author seal. */
.love-card[data-layout="hero"] figure::before{content:"CLIENT STORY";display:block;width:max-content;margin-top:19px;padding-bottom:5px;border-bottom:1px solid currentColor;font-size:8px;letter-spacing:.18em;opacity:.56}
.love-card[data-layout="hero"] blockquote{display:flex;flex:1;align-items:center;padding:34px 0 40px}
.love-card[data-layout="hero"] blockquote p{font-size:clamp(38px,3.2vw,54px);line-height:1.04}
.love-card[data-layout="hero"] figcaption{align-self:flex-end;min-width:58%;justify-content:flex-end;padding-top:18px;border-top:1px solid #11141324}
.love-card[data-layout="hero"] .love-avatar{width:68px;height:68px;flex-basis:68px}
.love-card[data-layout="hero"]:nth-child(even) figure::before{align-self:flex-end;content:"IN THEIR WORDS"}
.love-card[data-layout="hero"]:nth-child(even) blockquote{text-align:center}
.love-card[data-layout="hero"]:nth-child(even) blockquote p{font-style:italic}
.love-card[data-layout="hero"]:nth-child(even) figcaption{align-self:flex-start;justify-content:flex-start}

/* 02 — Portrait-led profile: the person becomes the visual anchor. */
.love-card[data-layout="portrait"] .love-card-top{justify-content:center;text-align:center}
.love-card[data-layout="portrait"] .love-number{position:absolute;right:0;top:0}
.love-card[data-layout="portrait"] figure{align-items:center;text-align:center;padding-top:24px}
.love-card[data-layout="portrait"] figcaption{order:-1;flex-direction:column;justify-content:center;margin:0 0 5px}
.love-card[data-layout="portrait"] figcaption>span:last-child{display:flex;flex-direction:column;align-items:center}
.love-card[data-layout="portrait"] .love-avatar{width:104px;height:104px;flex-basis:104px;margin-bottom:16px;box-shadow:0 0 0 8px #ffffff70}
.love-card[data-layout="portrait"] strong{font:400 21px/1.12 var(--serif);letter-spacing:-.02em}
.love-card[data-layout="portrait"] time{margin-top:5px;font-size:9px;letter-spacing:.08em;text-transform:uppercase}
.love-card[data-layout="portrait"] blockquote{display:flex;flex:1;align-items:center;padding:27px 0 24px}
.love-card[data-layout="portrait"] blockquote p{font-size:25px;line-height:1.22}
.love-card[data-layout="portrait"]:nth-child(even) blockquote{border-top:1px solid #1114131c}
.love-card[data-layout="portrait"]:nth-child(odd) .love-avatar{width:88px;height:88px;flex-basis:88px}

/* 03 — Clipped client note: quieter, handwritten and intentionally imperfect. */
.love-card[data-layout="note"]{background-image:linear-gradient(90deg,transparent 0 10%,#7b6a5520 10% 10.3%,transparent 10.3%)}
.love-card[data-layout="note"] figure::before{content:"A note from";display:block;margin:23px 0 5px;font:italic 24px/1 var(--serif);color:var(--love-brown)}
.love-card[data-layout="note"] blockquote{display:flex;flex:1;align-items:center;padding:25px 8px 30px}
.love-card[data-layout="note"] blockquote p{font-size:25px;font-style:italic;line-height:1.22}
.love-card[data-layout="note"] figcaption{justify-content:flex-end;padding-top:16px;border-top:1px solid #11141326;text-align:right}
.love-card[data-layout="note"] .love-avatar{width:44px;height:44px;flex-basis:44px;order:2}
.love-card[data-layout="note"] strong{font:italic 18px/1.2 var(--serif)}
.love-card[data-layout="note"]:nth-child(12n+9) figure::before{text-align:center}
.love-card[data-layout="note"]:nth-child(12n+9) blockquote{text-align:center}
.love-card[data-layout="note"]:nth-child(12n+9) figcaption{justify-content:center;text-align:center}

/* 04 — Split editorial card: an author panel beside the review. */
.love-card[data-layout="wide"] figure{display:grid;grid-template-columns:145px minmax(0,1fr);column-gap:30px;align-items:stretch;margin-top:13px}
.love-card[data-layout="wide"] blockquote{grid-column:2;grid-row:1;display:flex;align-items:center;padding:24px 0 30px}
.love-card[data-layout="wide"] blockquote p{font-size:36px;line-height:1.12}
.love-card[data-layout="wide"] figcaption{grid-column:1;grid-row:1;flex-direction:column;align-items:center;justify-content:center;padding:24px 22px;border-right:1px solid #1114132b;text-align:center}
.love-card[data-layout="wide"] figcaption>span:last-child{display:flex;flex-direction:column;align-items:center}
.love-card[data-layout="wide"] .love-avatar{width:96px;height:96px;flex-basis:96px;margin-bottom:15px;box-shadow:0 0 0 6px #ffffff5c}
.love-card[data-layout="wide"] strong{font:400 19px/1.15 var(--serif)}
.love-card[data-layout="wide"]:nth-child(12n+10) figure{grid-template-columns:minmax(0,1fr) 145px}
.love-card[data-layout="wide"]:nth-child(12n+10) blockquote{grid-column:1;grid-row:1;padding-right:30px;text-align:right}
.love-card[data-layout="wide"]:nth-child(12n+10) figcaption{grid-column:2;grid-row:1;border-right:0;border-left:1px solid #1114132b}

/* 05 — Typographic pull quote: quotation marks and words carry the card. */
.love-card[data-layout="quote"] figure::before{content:"“";height:55px;margin-top:17px;color:var(--love-brown);font:400 92px/.8 var(--serif);opacity:.78}
.love-card[data-layout="quote"] blockquote{display:flex;flex:1;align-items:center;padding:18px 0 30px;text-align:center}
.love-card[data-layout="quote"] blockquote p{font-size:26px;font-style:italic;line-height:1.18}
.love-card[data-layout="quote"] figcaption{justify-content:center;padding-top:17px;border-top:1px solid #11141326}
.love-card[data-layout="quote"] .love-avatar{width:48px;height:48px;flex-basis:48px}
.love-card[data-layout="quote"] strong{font:400 16px/1.2 var(--serif)}
.love-card[data-layout="quote"]:nth-child(odd) figure::before{text-align:right}
.love-card[data-layout="quote"]:nth-child(odd) blockquote{text-align:left}
.love-card[data-layout="quote"]:nth-child(odd) figcaption{justify-content:flex-start}

.love-card--ink[data-layout="portrait"] blockquote p{font-size:42px;line-height:1.04}
.love-card--ink[data-layout="portrait"] .love-avatar{box-shadow:0 0 0 8px #f1efe926}
.love-card--ink[data-layout="portrait"] .love-source,.love-card--ink[data-layout="hero"] figcaption{border-color:#ffffff35}
.love-source{display:flex;justify-content:space-between;align-items:center;gap:14px;min-height:44px;margin-top:26px;padding-top:15px;border-top:1px solid #11141324;font-size:10px}
.love-card--ink .love-source{border-color:#ffffff35}
.love-source svg{width:17px;height:17px;transition:transform .25s}
.love-source:hover svg{transform:translate(3px,-3px)}
.love-wall-foot{display:flex;justify-content:space-between;align-items:center;gap:30px;margin-top:9px;padding-top:26px;border-top:1px solid var(--love-line)}
.love-wall-foot p{color:#68665e;font-size:11px;line-height:1.7}
.love-wall-foot a{display:flex;align-items:center;gap:35px;padding-bottom:8px;border-bottom:1px solid currentColor;font-size:13px}
.love-wall-foot svg{width:23px;height:23px}
.love-portrait-note{display:block;margin-top:5px;color:#77746b;font-size:10px;letter-spacing:.01em}
.love-more{display:flex;justify-content:center;padding:18px 0 34px}
.love-more[hidden]{display:none}
.love-more button{display:inline-flex;align-items:center;justify-content:space-between;gap:45px;min-height:52px;padding:14px 24px;border:1px solid var(--love-line);border-radius:0;background:transparent;color:var(--ink);font-size:13px;cursor:pointer;transition:background .2s,border-color .2s}
.love-more button:hover{border-color:var(--ink);background:var(--love-sand)}
.love-more button span{font-size:22px;line-height:1}

/* Frame two: a layered thank-you composition with quiet, hand-drawn movement. */
.love-interlude{overflow:hidden;padding:64px 0;background:var(--love-sand);color:var(--love-brown)}
.love-interlude>.love-shell{position:relative;min-height:690px;isolation:isolate}
.love-interlude-title{position:relative;z-index:3;padding:112px 0 42px;font-size:clamp(70px,9vw,138px);line-height:.96;letter-spacing:-.065em}
.love-interlude-title em{margin-left:13vw;font-family:var(--serif);font-style:italic;font-weight:400}
.love-interlude-line,.love-interlude-word{display:inline-block}
.love-interlude-note{position:absolute;z-index:3;right:3%;top:32px;margin:0;text-align:right;font:italic 27px/1.08 var(--serif);letter-spacing:-.025em;opacity:.7}
.love-interlude-sweep{position:absolute;z-index:1;right:7%;top:116px;width:190px;height:auto;opacity:.72;transform:rotate(2deg)}
.love-interlude-sweep path{stroke-width:1.45;stroke-linecap:round;stroke-linejoin:round}
.love-thanks-composition{position:relative;z-index:2;min-height:245px}
.love-gratitude-seal{position:absolute;z-index:2;left:51%;top:-8px;width:215px;color:var(--love-brown);transform:translateX(-50%) rotate(-4deg)}
.love-gratitude-seal svg{display:block;width:100%;height:auto;overflow:visible}
.love-gratitude-ring{transform-box:fill-box;transform-origin:center}
.love-gratitude-ring circle,.love-gratitude-heart path{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round}
.love-gratitude-ring>circle:first-of-type{stroke-width:.8;opacity:.5}
.love-gratitude-ring .love-gratitude-dots{stroke-width:1.5;stroke-dasharray:.1 7;opacity:.76}
.love-gratitude-ring text{fill:currentColor;font:500 7.8px/1 var(--sans);letter-spacing:2.1px}
.love-gratitude-heart{transform-box:fill-box;transform-origin:center}
.love-gratitude-heart path:first-child{stroke-width:1.25}
.love-gratitude-heart path:last-child{stroke-width:1;opacity:.62}
.love-gratitude-thanks{fill:currentColor;font:500 7px/1 var(--sans);letter-spacing:2.3px}
.love-annotation{position:absolute;z-index:3;margin:0;color:var(--love-brown)}
.love-annotation--care{left:20%;top:69px;font:italic 18px/1.22 var(--serif);transform:rotate(-2.2deg)}
.love-annotation--care span{display:block;margin-bottom:8px;font:500 7px/1.3 var(--sans);letter-spacing:.2em}
.love-annotation--care em{font-size:21px}
.love-annotation--xoxo{right:23%;top:98px;text-align:center;font:italic 24px/.88 var(--serif);transform:rotate(6deg)}
.love-annotation--xoxo span{font:500 6px/1 var(--sans);letter-spacing:.25em}
.love-interlude-thread{position:absolute;z-index:1;left:17%;top:38px;width:67%;height:auto;opacity:.38}
.love-interlude-thread path{stroke-width:1;stroke-linecap:round;stroke-linejoin:round}
.love-interlude-sparks{position:absolute;z-index:3;inset:0;pointer-events:none}
.love-interlude-sparks span{position:absolute;display:block;font:400 13px/1 var(--serif);opacity:.65}
.love-interlude-sparks span:nth-child(1){left:42%;top:9px;font-size:10px}
.love-interlude-sparks span:nth-child(2){left:67%;top:44px;font-size:16px}
.love-interlude-sparks span:nth-child(3){left:58%;top:196px;font-size:8px}
.love-heart-rail{left:.5%;bottom:34px;width:18%;height:170px}
.love-heart-rail span{font-family:var(--serif);font-weight:400}
.love-heart-caption{position:absolute;left:.5%;bottom:4px;font:italic 18px/1.2 var(--serif);opacity:.68}
.love-signoff{position:absolute;right:0;bottom:0;text-align:right;font-size:13px;line-height:1.8}
.love-signoff span{font:italic 24px/1.7 var(--serif)}

.love-next{display:grid;grid-template-columns:1.3fr 1fr;gap:10%;align-items:end;padding-top:85px;padding-bottom:90px}
.wall-page .love-next h2{margin-top:28px;font-size:clamp(56px,6vw,88px);line-height:1;letter-spacing:-.06em}
.love-next h2 em{color:var(--love-brown)}
.love-next-actions p{font-size:16px;line-height:1.7}
.love-project-link{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:12px;padding:20px 0 14px;border-bottom:1px solid var(--ink);font-size:14px}
.love-project-link svg{width:30px;height:30px}
.love-small-link{display:block;margin-top:22px;color:#68665e;font-size:11px;line-height:1.7;text-decoration:underline;text-underline-offset:4px}

/* One animation owns each object; no layered transforms touch the large type. */
.love-motion .love-xoxo-rail span{animation:love-xoxo-rise var(--particle-duration) cubic-bezier(.28,.48,.25,1) var(--particle-delay) infinite}
.love-motion .love-opening-heart path{stroke-dasharray:650;stroke-dashoffset:650;animation:love-heart-loop 12s cubic-bezier(.22,.7,.2,1) infinite both}
.love-motion .love-opening-heart path+path{animation-delay:.5s}
.love-motion .love-opening-heart figcaption{animation:love-caption-breathe 12s ease-in-out infinite}
.love-motion .love-invite-heart path{stroke-dasharray:190;stroke-dashoffset:190;animation:love-invite-heart-loop 13s cubic-bezier(.22,.7,.2,1) 1.1s infinite both}
.love-motion .love-invite-heart path+path{animation-delay:1.45s}
.love-motion .love-period{animation:love-period-pulse 10.5s cubic-bezier(.22,.7,.24,1) infinite}
.love-motion .love-interlude.is-visible .love-interlude-period{animation:love-period-pulse 10.5s cubic-bezier(.22,.7,.24,1) .45s infinite}
.love-motion .love-interlude.is-visible .love-interlude-sweep path{stroke-dasharray:260;stroke-dashoffset:260;animation:love-sweep-draw 1.8s cubic-bezier(.22,.72,.2,1) .2s forwards}
.love-motion .love-interlude.is-visible .love-interlude-note{animation:love-note-settle 1.15s cubic-bezier(.2,.75,.22,1) .35s both}
.love-motion .love-interlude.is-visible .love-heart-rail span{animation:love-heart-rise var(--particle-duration) cubic-bezier(.2,.48,.25,1) var(--particle-delay) infinite}
.love-motion .love-interlude.is-visible .love-heart-caption{animation:love-caption-settle 1.2s ease .7s both}
.love-motion .love-interlude.is-visible .love-gratitude-ring{animation:love-seal-turn 32s linear .5s infinite}
.love-motion .love-interlude.is-visible .love-gratitude-heart{animation:love-seal-breathe 7.5s ease-in-out .9s infinite}
.love-motion .love-interlude.is-visible .love-interlude-thread path{stroke-dasharray:760;stroke-dashoffset:760;animation:love-thread-draw 2.2s cubic-bezier(.22,.72,.2,1) .55s forwards}
.love-motion .love-interlude.is-visible .love-annotation--care{animation:love-care-settle 1.2s cubic-bezier(.2,.75,.22,1) .65s both}
.love-motion .love-interlude.is-visible .love-annotation--xoxo{animation:love-xoxo-settle 1.2s cubic-bezier(.2,.75,.22,1) .85s both}
.love-motion .love-interlude.is-visible .love-interlude-sparks span{animation:love-spark-twinkle 5.8s ease-in-out infinite}
.love-motion .love-interlude.is-visible .love-interlude-sparks span:nth-child(2){animation-delay:1.4s}
.love-motion .love-interlude.is-visible .love-interlude-sparks span:nth-child(3){animation-delay:2.7s}

@keyframes love-xoxo-rise{0%,7%{opacity:0;transform:translate3d(0,16px,0) rotate(var(--particle-turn)) scale(.88)}18%{opacity:.36}66%{opacity:.27}100%{opacity:0;transform:translate3d(var(--particle-drift),-118px,0) rotate(calc(var(--particle-turn) + 6deg)) scale(1.03)}}
@keyframes love-heart-rise{0%,7%{opacity:0;transform:translate3d(0,14px,0) rotate(var(--particle-turn)) scale(.76)}19%{opacity:.38}67%{opacity:.27}100%{opacity:0;transform:translate3d(var(--particle-drift),-128px,0) rotate(calc(var(--particle-turn) + 10deg)) scale(1.07)}}
@keyframes love-heart-loop{0%,7%{stroke-dashoffset:650;opacity:0}13%{opacity:.9}46%,72%{stroke-dashoffset:0;opacity:.9}87%{stroke-dashoffset:-650;opacity:.45}96%,100%{stroke-dashoffset:-650;opacity:0}}
@keyframes love-invite-heart-loop{0%,9%{stroke-dashoffset:190;opacity:0}15%{opacity:.78}48%,78%{stroke-dashoffset:0;opacity:.78}92%,100%{stroke-dashoffset:-190;opacity:0}}
@keyframes love-caption-breathe{0%,100%{opacity:.62;transform:translateY(2px)}44%,70%{opacity:.95;transform:translateY(-1px)}}
@keyframes love-period-pulse{0%,62%,100%{transform:translate(0,0) scale(1)}72%{transform:translate(.018em,-.07em) scale(1.14)}82%{transform:translate(.025em,-.035em) scale(1.07)}90%{transform:translate(0,.01em) scale(.98)}}
@keyframes love-sweep-draw{to{stroke-dashoffset:0}}
@keyframes love-note-settle{from{opacity:0;transform:translate3d(20px,10px,0)}to{opacity:.7;transform:translate3d(0,0,0)}}
@keyframes love-caption-settle{from{opacity:0;transform:translateY(12px)}to{opacity:.68;transform:translateY(0)}}
@keyframes love-seal-turn{to{transform:rotate(360deg)}}
@keyframes love-seal-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.035)}}
@keyframes love-thread-draw{to{stroke-dashoffset:0}}
@keyframes love-care-settle{from{opacity:0;transform:translate3d(-16px,9px,0) rotate(-4deg)}to{opacity:1;transform:translate3d(0,0,0) rotate(-2.2deg)}}
@keyframes love-xoxo-settle{from{opacity:0;transform:translate3d(14px,10px,0) rotate(9deg)}to{opacity:1;transform:translate3d(0,0,0) rotate(6deg)}}
@keyframes love-spark-twinkle{0%,100%{opacity:.28;transform:scale(.82) rotate(0)}50%{opacity:.78;transform:scale(1.08) rotate(10deg)}}

/* Representative portraits mix polished, casual and laid-back South Florida looks. */
.love-avatar--representative{border:0;background-color:var(--love-sand);background-image:url('/reviews/portraits/representative-reviewers-sprite-v2.png');background-repeat:no-repeat;background-size:500% 500%}
.love-avatar--rep-01{background-position:0 0}.love-avatar--rep-02{background-position:25% 0}.love-avatar--rep-03{background-position:50% 0}.love-avatar--rep-04{background-position:75% 0}.love-avatar--rep-05{background-position:100% 0}
.love-avatar--rep-06{background-position:0 25%}.love-avatar--rep-07{background-position:25% 25%}.love-avatar--rep-08{background-position:50% 25%}.love-avatar--rep-09{background-position:75% 25%}.love-avatar--rep-10{background-position:100% 25%}
.love-avatar--rep-11{background-position:0 50%}.love-avatar--rep-12{background-position:25% 50%}.love-avatar--rep-13{background-position:50% 50%}.love-avatar--rep-14{background-position:75% 50%}.love-avatar--rep-15{background-position:100% 50%}
.love-avatar--rep-16{background-position:0 75%}.love-avatar--rep-17{background-position:25% 75%}.love-avatar--rep-18{background-position:50% 75%}.love-avatar--rep-19{background-position:75% 75%}.love-avatar--rep-20{background-position:100% 75%}
.love-avatar--rep-21{background-position:0 100%}.love-avatar--rep-22{background-position:25% 100%}.love-avatar--rep-23{background-position:50% 100%}.love-avatar--rep-24{background-position:75% 100%}.love-avatar--rep-25{background-position:100% 100%}

@media(max-width:1050px){
  .love-collage-stage{padding:36px 30px 54px}
  .love-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:23px}
  .love-card,.love-card[data-layout="portrait"],.love-card[data-layout="note"],.love-card[data-layout="quote"]{grid-column:span 3}
  .love-card[data-layout="hero"],.love-card[data-layout="wide"]{grid-column:span 6}
  .love-card[data-layout="hero"]{min-height:430px}
  .love-card[data-layout="wide"]{min-height:330px}
  .love-opening-heart{right:0;top:30px;width:145px}
  .love-story-invite{width:82%;grid-template-columns:58px minmax(200px,1fr) minmax(160px,210px)}
  .love-card--feature blockquote p{font-size:34px}
  .love-intro{grid-template-columns:1fr 1fr 90px;gap:22px}
  .love-scroll{width:85px;height:85px}
  .love-interlude-note{right:0;font-size:23px}
  .love-interlude-sweep{right:2%;width:165px}
}

@media(max-width:760px){
  .love-title-wrap{padding-bottom:28px}
  .love-xoxo-rail{left:.5%;bottom:2%;width:18%;height:45%}
  .love-story-invite{width:100%;grid-template-columns:58px minmax(0,1fr) minmax(150px,190px);gap:15px}
  .love-invite-heart{width:48px}
  .love-story-invite p{font-size:16px}
  .love-thanks-composition{min-height:300px}
  .love-gratitude-seal{left:auto;right:0;top:0;width:180px;transform:rotate(-5deg)}
  .love-annotation--care{left:0;top:72px;width:155px}
  .love-annotation--xoxo{right:31%;top:195px}
  .love-interlude-thread{left:14%;top:48px;width:68%}
  .love-heart-rail{width:34%}
}

@media(max-width:620px){
  .love-opening{padding-top:113px;padding-bottom:35px}
  .love-topline{align-items:flex-start}
  .love-topline .love-jump{display:none}
  .love-title-wrap{padding-top:35px;padding-bottom:22px}
  .wall-page #page-title{font-size:clamp(80px,18vw,112px)}
  .wall-page #page-title em{margin-left:18%;font-size:1.45em}
  .love-opening-heart{right:0;top:34px;width:62px}
  .love-opening-heart figcaption{display:none}
  .love-heart{stroke-width:2.5}
  .love-xoxo-rail{top:47%;bottom:auto;width:18%;height:48%}
  .love-story-invite{grid-template-columns:48px minmax(0,1fr);padding-top:15px}
  .love-story-invite a{grid-column:1/-1;margin-top:2px}
  .love-story-invite p{font-size:15px}
  .love-intro{grid-template-columns:1fr 1fr;gap:24px;margin-top:30px}
  .love-intro>p{font-size:21px}
  .love-intro>div>p:first-child{font-size:12px}
  .love-intro .love-caption{margin-top:12px;font-size:10px}
  .love-scroll{display:none}
  .love-wall{padding-top:12px;padding-bottom:40px}
  .love-wall-heading{align-items:baseline}
  .love-wall-heading h2{font-size:14px}
  .love-wall-heading .love-caption{font-size:10px}
  .love-filters{gap:7px;margin:20px 0 24px}
  .love-filters button{padding:10px 12px;font-size:11px}
  .love-collage-stage{margin-top:22px;padding:24px 16px 28px}
  .love-collage-stage::before{opacity:.34}
  .love-collage-stage::after{right:-3%;bottom:-.08em;font-size:260px}
  .love-grid{grid-template-columns:minmax(0,1fr);gap:17px;margin:0}
  .love-card,.love-card[data-layout="hero"],.love-card[data-layout="portrait"],.love-card[data-layout="note"],.love-card[data-layout="wide"],.love-card[data-layout="quote"]{top:0;grid-column:1;min-height:0;padding:25px;transform:none}
  .love-card[data-layout="portrait"]::before,.love-card[data-layout="note"]::before{top:-6px;width:46px;height:14px;transform:translateX(-50%)}
  .love-card blockquote p{font-size:29px}
  .love-card--feature blockquote p{font-size:34px}
  .love-card[data-layout="hero"] figure::before{margin-top:15px}
  .love-card[data-layout="hero"] blockquote{padding:34px 0 36px}
  .love-card[data-layout="hero"] blockquote p{font-size:38px}
  .love-card[data-layout="hero"] figcaption,.love-card[data-layout="hero"]:nth-child(even) figcaption{align-self:stretch;justify-content:flex-start;min-width:0}
  .love-card[data-layout="hero"] .love-avatar{width:60px;height:60px;flex-basis:60px}
  .love-card[data-layout="portrait"] figure{display:flex;align-items:center;padding-top:20px;text-align:center}
  .love-card[data-layout="portrait"] figcaption{flex-direction:column;justify-content:center;margin:0 0 5px}
  .love-card[data-layout="portrait"] blockquote{padding:28px 0 24px}
  .love-card[data-layout="portrait"] blockquote p{font-size:28px}
  .love-card[data-layout="portrait"] .love-avatar,.love-card[data-layout="portrait"]:nth-child(odd) .love-avatar{width:84px;height:84px;flex-basis:84px;margin-bottom:13px}
  .love-card--ink[data-layout="portrait"] blockquote p{font-size:36px}
  .love-card[data-layout="note"] figure::before{margin-top:19px;font-size:22px}
  .love-card[data-layout="note"] blockquote{padding:26px 4px 28px}
  .love-card[data-layout="note"] blockquote p{font-size:27px}
  .love-card[data-layout="wide"] figure,.love-card[data-layout="wide"]:nth-child(12n+10) figure{display:flex;flex-direction:column;margin-top:10px}
  .love-card[data-layout="wide"] figcaption,.love-card[data-layout="wide"]:nth-child(12n+10) figcaption{order:-1;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;padding:18px 0;border-right:0;border-left:0;border-bottom:1px solid #1114132b;text-align:left}
  .love-card[data-layout="wide"] figcaption>span:last-child{align-items:flex-start}
  .love-card[data-layout="wide"] .love-avatar{width:62px;height:62px;flex-basis:62px;margin:0}
  .love-card[data-layout="wide"] blockquote,.love-card[data-layout="wide"]:nth-child(12n+10) blockquote{padding:31px 0 28px;text-align:left}
  .love-card[data-layout="wide"] blockquote p{font-size:32px}
  .love-card[data-layout="quote"] figure::before{height:45px;font-size:75px}
  .love-card[data-layout="quote"] blockquote{padding:17px 0 28px}
  .love-card[data-layout="quote"] blockquote p{font-size:28px}
  .love-wall-foot{display:block;margin-top:6px}
  .love-wall-foot a{justify-content:space-between;margin-top:22px}
  .love-portrait-note{margin-top:7px;font-size:9px}
  .love-motion .love-card:not([hidden]){animation:none;translate:none}
  .love-interlude{padding:40px 0}
  .love-interlude>.love-shell{min-height:740px}
  .love-interlude .love-label{display:block;max-width:235px;font-size:9px}
  .love-interlude-title{padding:168px 0 54px;font-size:clamp(58px,14vw,85px)}
  .love-interlude-title em{margin-left:9vw}
  .love-interlude-note{right:0;top:70px;font-size:19px}
  .love-interlude-sweep{right:1%;top:133px;width:125px}
  .love-thanks-composition{min-height:330px}
  .love-gratitude-seal{left:auto;right:-9px;top:1px;width:158px;transform:rotate(-5deg)}
  .love-annotation--care{left:0;top:65px;width:145px;font-size:14px;transform:rotate(-2deg)}
  .love-annotation--care span{margin-bottom:6px;font-size:6px}
  .love-annotation--care em{font-size:17px}
  .love-annotation--xoxo{right:30%;top:208px;font-size:21px}
  .love-interlude-thread{left:14%;top:47px;width:67%;opacity:.32}
  .love-interlude-sparks span:nth-child(1){left:44%;top:5px}
  .love-interlude-sparks span:nth-child(2){left:48%;top:164px}
  .love-interlude-sparks span:nth-child(3){left:77%;top:213px}
  .love-heart-rail{left:0;bottom:49px;width:38%;height:148px}
  .love-heart-caption{left:0;bottom:10px;font-size:14px}
  .love-signoff{font-size:11px}
  .love-signoff span{font-size:21px}
  .love-next{display:block;padding-top:50px;padding-bottom:55px}
  .wall-page .love-next h2{margin-top:20px;font-size:60px}
  .love-next-actions{margin-top:35px}
  .love-next-actions p{font-size:14px}
  .love-project-link{font-size:13px}
  .love-small-link{font-size:11px}
}

@media(max-width:370px){
  .love-gratitude-seal{right:-6px;width:146px}
  .love-annotation--care{top:62px;width:122px;font-size:13px}
  .love-annotation--care em{font-size:15px}
  .love-annotation--xoxo{right:25%;font-size:19px}
}

@media(prefers-reduced-motion:reduce){
  .wall-page *{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .love-xoxo-rail,.love-heart-rail{display:none}
  .love-opening-heart path,.love-invite-heart path,.love-interlude-sweep path{stroke-dashoffset:0!important;opacity:1!important}
  .love-interlude-thread path{stroke-dashoffset:0!important}
  .love-period,.love-interlude-period,.love-opening-heart figcaption,.love-interlude-note,.love-heart-caption,.love-gratitude-ring,.love-gratitude-heart,.love-interlude-sparks span{transform:none!important}
  .love-card{translate:none!important}
  .love-card:hover,.love-card:focus-within,.love-scroll:hover{transform:none}
}

/* A drawn flourish and a small, staggered heartbeat in the opening frame. */
.wall-page #page-title .love-title-word{position:relative}
.love-title-underline{position:absolute;left:-.02em;bottom:0;width:1.62em;height:.14em;overflow:visible;pointer-events:none;stroke:var(--love-brown);stroke-width:1.3;stroke-linecap:round;opacity:.58}
.love-heart-rays{position:absolute;left:-10%;top:-12%;width:120%;height:auto;overflow:visible;stroke:currentColor;stroke-width:1.15;stroke-linecap:round;pointer-events:none}
.love-heart-rays path{opacity:.65}
.love-motion .love-title-underline path{stroke-dasharray:1;animation:love-opening-underline 14s cubic-bezier(.3,.65,.3,1) infinite}
.love-motion .love-opening-heart{animation:love-opening-sway 12s ease-in-out infinite}
.love-motion .love-opening-heart .love-heart{transform-origin:50% 50%;animation:love-opening-beat 12s ease-in-out infinite}
.love-motion .love-opening-heart .love-heart-rays path{stroke-dasharray:1;animation:love-opening-rays 12s ease-in-out infinite both}
.love-motion .love-opening-heart .love-heart-rays path:nth-child(2){animation-delay:.6s}
.love-motion .love-opening-heart .love-heart-rays path:nth-child(3){animation-delay:1.2s}
.love-opening.is-motion-paused *{animation-play-state:paused!important}
@keyframes love-opening-underline{
  0%,5%{stroke-dashoffset:1;opacity:0}
  9%{opacity:.8}
  26%,76%{stroke-dashoffset:0;opacity:.8}
  91%,100%{stroke-dashoffset:-1;opacity:0}
}
@keyframes love-opening-sway{
  0%,100%{transform:translateY(0) rotate(9deg)}
  50%{transform:translateY(-8px) rotate(5deg)}
}
@keyframes love-opening-beat{
  0%,45%,65%,100%{transform:scale(1)}
  50%,60%{transform:scale(1.045)}
  55%{transform:scale(1.01)}
}
@keyframes love-opening-rays{
  0%,40%{stroke-dashoffset:1;opacity:0}
  48%,61%{stroke-dashoffset:0;opacity:.7}
  72%,100%{stroke-dashoffset:-1;opacity:0}
}
@media(max-width:620px){
  .love-opening-heart{right:9px}
  .love-title-underline{stroke-width:1.8}
  .love-heart-rays{stroke-width:2}
}
@media(prefers-reduced-motion:reduce){
  .love-opening-heart{animation:none!important;transform:rotate(9deg)}
  .love-opening-heart .love-heart{transform:none}
  .love-title-underline path{stroke-dashoffset:0;opacity:.8}
  .love-heart-rays{display:none}
}
@media print{
  .love-opening *{animation:none!important}
  .love-opening-heart path,.love-invite-heart path,.love-title-underline path{stroke-dashoffset:0!important;opacity:1!important}
  .love-heart-rays{display:none}
}

/* Mouse hover lifts the complete card; a two-pixel drift keeps it gently afloat. */
@media(hover:hover) and (pointer:fine){
  .love-card:hover{z-index:4;border-color:rgba(45,47,40,.35);box-shadow:0 30px 58px #0d120f59,0 9px 18px #0d120f24}
}
@media(prefers-reduced-motion:no-preference){
  .love-card:focus-within{transform:translate3d(0,-8px,0) scale(1.008)}
}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .love-card:hover{transform:translate3d(0,-8px,0) scale(1.008)}
  .love-motion .love-card:not([hidden]):hover{will-change:transform,translate;animation:love-card-hover-float 4s ease-in-out .55s infinite}
}
@keyframes love-card-hover-float{
  0%,100%{translate:0 0}
  50%{translate:0 -2px}
}
@media print{
  .love-card{animation:none!important;transform:none!important;translate:none!important}
}

/* A quiet sketch occupies the open space between the title and the signature heart. */
.love-air-sketch{position:absolute;left:61%;bottom:0;width:clamp(190px,22vw,290px);color:var(--love-brown);pointer-events:none;z-index:1;opacity:.72}
.love-air-sketch svg{display:block;width:100%;height:auto;overflow:visible;stroke:currentColor;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}
.love-air-guide{opacity:.22;stroke-width:.75;stroke-dasharray:1}
.love-air-tick{opacity:.4;stroke-width:.8}
.love-air-echo{opacity:.42;stroke-width:.8}
.love-air-two{opacity:.75}.love-air-three{opacity:.48}.love-air-spark{opacity:.5;stroke-width:.85}
.love-motion .love-air-ink,.love-motion .love-air-echo{stroke-dasharray:1;animation:love-air-draw 14s ease-in-out infinite}
.love-motion .love-air-two .love-air-ink{animation-delay:-5s}
.love-motion .love-air-three .love-air-ink{animation-delay:-9s}
.love-motion .love-air-one{animation:love-air-drift 9s ease-in-out infinite}
.love-motion .love-air-two{animation:love-air-drift 11s ease-in-out -4s infinite}
.love-motion .love-air-three{animation:love-air-drift 8s ease-in-out -2s infinite}
.love-motion .love-air-guide{animation:love-air-guide 18s ease-in-out infinite}
.love-motion .love-air-spark{animation:love-air-glimmer 7s ease-in-out infinite}
@keyframes love-air-draw{0%{stroke-dashoffset:1;opacity:.2}30%,76%{stroke-dashoffset:0;opacity:1}94%,100%{stroke-dashoffset:-1;opacity:.2}}
@keyframes love-air-drift{0%,100%{transform:translate(0,3px)}50%{transform:translate(3px,-7px)}}
@keyframes love-air-guide{0%,100%{stroke-dashoffset:1;opacity:.12}35%,75%{stroke-dashoffset:0;opacity:.24}}
@keyframes love-air-glimmer{0%,100%{opacity:.25}50%{opacity:.65}}
@media(max-width:1050px){.love-air-sketch{left:58%;width:190px;bottom:-10px}}
@media(max-width:760px){.love-air-sketch{display:none}}
@media(prefers-reduced-motion:reduce){.love-air-sketch *{animation:none!important;stroke-dashoffset:0!important}}
@media print{.love-air-sketch{display:none}}
