
:root{--paper:#f4ecdf;--surface:#e9ddc9;--ink:#432c29;--muted:#70594f;--accent:#983e32;--light:#fcf8f0;--line:#432c292b;--serif:'Italiana',Georgia,serif;--sans:'DM Sans',sans-serif}
html[data-season=primavera]{--paper:#f5eee9;--surface:#eedbdd;--ink:#354737;--muted:#596552;--accent:#9b4366;--light:#fff9f3;--line:#3547372b}
html[data-season=estate]{--paper:#f8f0d9;--surface:#eadcae;--ink:#36442c;--muted:#5d6648;--accent:#986013;--light:#fffbef;--line:#36442c2b}
html[data-season=inverno]{--paper:#edf0eb;--surface:#d8e1db;--ink:#253e37;--muted:#50675e;--accent:#8c3646;--light:#f9faf5;--line:#253e372b}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:150px}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.65 var(--sans);transition:background .7s,color .7s}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}img{display:block;max-width:100%}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:5px}::selection{background:var(--accent);color:var(--light)}.wrap{width:min(1200px,calc(100% - 96px));margin:auto}.serif,h1,h2,h3{font-family:var(--serif);font-weight:400}h1,h2,h3,p{margin:0}em{font-style:normal;color:var(--accent)}.eyebrow{font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase}.muted{color:var(--muted)}.skip{position:fixed;top:-100px;z-index:200;background:var(--paper);padding:12px}.skip:focus{top:0}
.progress{position:fixed;left:0;top:0;height:2px;background:var(--accent);z-index:120;width:0}.nav{position:sticky;top:0;z-index:60;background:var(--paper);transition:background .7s,box-shadow .3s}.nav.scrolled{box-shadow:0 5px 30px #00000008}.nav-main{height:88px;display:flex;align-items:center;justify-content:space-between;gap:24px;border-bottom:1px solid var(--line)}.brand img{width:52px;mix-blend-mode:multiply}.nav-links{display:flex;gap:32px;align-items:center;font-size:14px}.nav-links a{position:relative}.nav-links a:after{content:'';position:absolute;bottom:-5px;left:0;width:0;height:1px;background:var(--accent);transition:width .3s}.nav-links a:hover:after{width:100%}.nav-cta{border-bottom:1px solid var(--ink);padding:5px 0}.menu-btn{display:none;background:none;border:1px solid var(--line);padding:6px 12px}.season-bar{min-height:52px;display:flex;align-items:center;justify-content:space-between;gap:16px}.season-intro{font-size:12px;letter-spacing:.08em}.season-intro span{color:var(--accent)}.season-controls{display:flex;gap:6px}.season-btn{border:0;background:transparent;padding:7px 12px;border-radius:2px;font-size:13px;transition:background .3s,color .3s}.season-btn[aria-pressed=true]{background:var(--ink);color:var(--paper)}.season-btn:hover:not([aria-pressed=true]){background:var(--surface)}
.hero{position:relative;isolation:isolate;overflow:hidden;min-height:650px;min-height:max(650px,calc(100svh - 140px));display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--line)}.hero:before{content:'';position:absolute;inset:28px 32px 0;border:1px solid var(--line);border-bottom:0;pointer-events:none;z-index:-1}.hero-copy{text-align:center;width:min(720px,60%);padding:75px 0 115px;position:relative;z-index:3}.hero .eyebrow{margin-bottom:26px}.hero h1{font-size:clamp(68px,7.7vw,114px);line-height:.97;letter-spacing:-.065em}.hero h1 em{display:block}.hero .intro{max-width:370px;margin:28px auto 0;font-size:16px;color:var(--muted)}.btn{display:inline-flex;justify-content:center;align-items:center;gap:30px;min-height:51px;border:1px solid var(--ink);padding:12px 23px;font-size:14px;transition:background .25s,transform .25s}.btn:hover{transform:translateY(-3px);background:var(--surface)}.btn.primary{background:var(--ink);color:var(--paper)}.btn.primary:hover{background:var(--accent);border-color:var(--accent)}.hero .btn{margin-top:30px}.hero-caption{position:absolute;bottom:25px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:16px;font-size:12px;white-space:nowrap}.hero-caption:before{content:'';width:30px;height:1px;background:var(--accent)}.vertical-note{position:absolute;left:52px;top:55px;font-size:11px;letter-spacing:.16em;writing-mode:vertical-rl;text-transform:uppercase}.edition{position:absolute;right:54px;top:50px;font-size:12px;color:var(--muted)}
/* Every floral image is inside a fixed clipping window. The bottom third of the source stays outside it, even during sway. */
.stem-window{position:relative;overflow:hidden;pointer-events:none;isolation:isolate}.stem-window img{position:absolute;top:0;left:-6%;width:112%;max-width:none;height:163%;object-fit:cover;object-position:top center;transform-origin:50% 90%;animation:sway 8s ease-in-out infinite alternate;transition:opacity .3s;filter:drop-shadow(0 8px 8px #3020140d)}@keyframes sway{from{transform:rotate(-1.3deg) scale(1.03)}to{transform:rotate(1.3deg) scale(1.03)}}.hero-garden{position:absolute;bottom:0;width:30%;height:76%;z-index:1;overflow:hidden}.hero-garden.left{left:-5%}.hero-garden.right{right:-5%;transform:scaleX(-1)}.hero-garden .stem-window{position:absolute;width:94%;height:77%;bottom:-1%;left:0}.hero-garden .back{width:72%;height:62%;left:31%;bottom:-9%;transform:rotate(18deg);transform-origin:50% 100%;z-index:-1}.hero-garden .back img{animation-delay:-3s}.hero-garden .front{width:70%;height:47%;left:36%;bottom:-9%;transform:rotate(-12deg)}.hero-garden .front img{animation-delay:-5s}.hero-garden.right .stem-window img{animation-delay:-4s}.hero-garden.right .back{bottom:-7%;left:25%;height:91%}.hero-garden.right .front{height:45%;left:39%}.season-changing .stem-window img{opacity:0}
.ribbon{border-bottom:1px solid var(--line);padding:19px 0;overflow:hidden}.ribbon-inner{display:flex;justify-content:space-between;gap:32px;white-space:nowrap;font-size:12px;letter-spacing:.16em;text-transform:uppercase}.ribbon b{font-size:16px;font-weight:400;color:var(--accent)}section.section{padding:110px 0}.section-head{display:flex;justify-content:space-between;align-items:end;gap:40px;margin-bottom:42px}h2{font-size:clamp(48px,5.5vw,78px);line-height:1.02;letter-spacing:-.04em}.section-head .eyebrow{margin-bottom:20px}.section-head p{max-width:330px;color:var(--muted)}.collection{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.creation .art{height:330px;background:var(--surface);border-radius:160px 160px 0 0;position:relative;overflow:hidden;transition:background .7s}.creation:nth-child(2){padding-top:54px}.creation:nth-child(2) .art{border-radius:3px}.creation:nth-child(3) .art{border-radius:3px 160px 0 0}.creation .stem-window{position:absolute;width:95%;height:89%;bottom:-7%;left:2%}.creation .art img{transition:transform .6s,opacity .3s}.creation:hover .art{background:var(--light)}.art-index{position:absolute;top:22px;left:24px;font-size:12px;z-index:2}.creation h3{font-size:35px;letter-spacing:-.03em;margin:19px 0 8px}.creation p{font-size:15px;color:var(--muted);max-width:310px}.text-link{display:inline-flex;gap:25px;align-items:center;border-bottom:1px solid var(--ink);padding:7px 0;font-size:14px;margin-top:18px}.text-link span{transition:transform .3s}.text-link:hover span{transform:translate(3px,-3px)}
.story{background:var(--surface);transition:background .7s}.story-grid{display:grid;grid-template-columns:1fr 1fr;gap:90px;align-items:center}.botanical-card{height:535px;position:relative;border:1px solid var(--line);overflow:hidden;background:var(--paper);transition:background .7s}.botanical-card:before{content:'';position:absolute;inset:18px;border:1px solid var(--line)}.botanical-card .stem-window{position:absolute;bottom:0;left:0;width:100%;height:76%}.specimen-label{position:absolute;top:32px;left:34px;right:34px;display:flex;justify-content:space-between;font-size:12px;letter-spacing:.08em}.botanical-seal{position:absolute;right:25px;bottom:35px;width:104px;height:104px;border-radius:50%;background:var(--ink);color:var(--paper);display:grid;place-content:center;text-align:center;font:24px/1.05 var(--serif);transform:rotate(12deg);border:6px double var(--paper)}.story-copy .eyebrow{margin-bottom:24px}.story-copy p{color:var(--muted);margin-top:25px;max-width:440px}.season-line{margin-top:28px;display:flex;gap:10px}.season-line i{width:34px;height:8px;background:var(--ink)}.season-line i:nth-child(2){background:var(--accent)}.season-line i:nth-child(3){background:var(--muted)}.season-line i:nth-child(4){background:var(--light)}
.services-head{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center;margin-bottom:50px}.services-head .eyebrow{margin-bottom:20px}.services-head p{color:var(--muted);max-width:410px}.service-row{display:grid;grid-template-columns:50px 1fr 1fr;gap:30px;border-top:1px solid var(--line);padding:28px 0;align-items:center}.service-row:last-child{border-bottom:1px solid var(--line)}.service-row .number{font-size:12px;color:var(--accent)}.service-row h3{font-size:37px;line-height:1.1}.service-row p{color:var(--muted);font-size:15px}.contact{background:var(--ink);color:var(--paper);position:relative;overflow:hidden;transition:background .7s}.contact-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:70px;position:relative;z-index:2}.contact .eyebrow{opacity:.7;margin-bottom:22px}.contact h2{font-size:clamp(62px,6.5vw,90px)}.contact h2 em{color:inherit}.contact-copy{padding:10px 0 60px}.contact address{font-style:normal;font-size:22px;line-height:1.6}.contact .btn{border-color:var(--paper);color:var(--paper);margin-top:25px}.contact .btn:hover{background:var(--paper);color:var(--ink)}.contact-note{margin-top:24px;max-width:320px;font-size:14px;opacity:.75}.contact-flower{position:absolute;right:-75px;bottom:-10px;width:290px;height:250px;opacity:.75}.footer{padding:30px 0;background:var(--ink);color:var(--paper)}.footer-inner{display:flex;justify-content:space-between;gap:20px;border-top:1px solid #ffffff30;padding-top:24px;font-size:12px}.footer a{border-bottom:1px solid #ffffff60}.footer-wordmark{font-family:var(--serif);font-size:clamp(70px,16vw,230px);line-height:1;letter-spacing:-.07em;text-align:center;padding:40px 0 10px;opacity:.22}
.petal-layer{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:40}.petal{position:absolute;top:-10vh;left:var(--x);width:var(--size);height:calc(var(--size)*.74);opacity:var(--op);background:var(--color);border-radius:78% 20% 78% 22%;box-shadow:inset -12px -8px 15px #ffffff47;filter:blur(var(--blur));animation:petalFall var(--dur) linear infinite;animation-delay:var(--delay)}@keyframes petalFall{0%{transform:translate3d(0,-10vh,0) rotate(0deg)}24%{transform:translate3d(36px,24vh,0) rotate(110deg)}60%{transform:translate3d(-26px,66vh,0) rotate(250deg)}100%{transform:translate3d(34px,112vh,0) rotate(420deg)}}.motion-btn{position:fixed;bottom:16px;left:16px;z-index:55;border:1px solid var(--line);background:var(--paper);padding:7px 12px;font-size:12px;box-shadow:0 2px 10px #00000008}.motion-paused *,.motion-paused *:before{animation-play-state:paused!important}.motion-paused .petal-layer{display:none}.js .reveal{opacity:0;transform:translateY(24px);transition:opacity .8s,transform .8s}.js .reveal.in{opacity:1;transform:none}.hero-copy{animation:enter 1s both}@keyframes enter{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media(min-width:1600px){.hero-garden{width:28%;max-width:540px}.hero-garden.left{left:0}.hero-garden.right{right:0}}
@media(max-width:1000px){.wrap{width:calc(100% - 56px)}.nav-links{gap:20px}.hero h1{font-size:80px}.hero-garden{width:34%;height:66%}.hero-garden.left{left:-9%}.hero-garden.right{right:-9%}.story-grid{gap:45px}.botanical-card{height:460px}.creation .art{height:280px}.contact-grid{gap:40px}.ribbon-inner{font-size:10px;gap:20px}}
@media(max-width:700px){html{scroll-padding-top:145px}.wrap{width:calc(100% - 40px)}.nav-main{height:70px}.brand img{width:52px}.menu-btn{display:block}.nav-links{display:none;position:absolute;top:124px;left:0;right:0;padding:24px;background:var(--paper);border-bottom:1px solid var(--line);box-shadow:0 16px 25px #0000000a}.nav-links.open{display:flex;flex-direction:column;align-items:stretch;gap:20px}.season-bar{min-height:54px;justify-content:center}.season-intro{display:none}.season-controls{width:100%;justify-content:space-between;gap:0}.season-btn{padding:7px 9px;font-size:12px}.hero{min-height:740px;align-items:flex-start}.hero:before{inset:16px 13px 0}.hero-copy{width:calc(100% - 44px);padding:65px 0 285px}.hero h1{font-size:clamp(58px,12.5vw,85px)}.hero .eyebrow{font-size:10px;margin-bottom:25px}.hero .intro{font-size:15px;max-width:290px;margin-top:24px}.hero .btn{margin-top:24px}.hero-garden{width:53%;height:285px;bottom:-30px}.hero-garden.left{left:-10%}.hero-garden.right{right:-10%}.hero-garden .back{bottom:-9%}.hero-caption{bottom:25px;font-size:10px;background:var(--paper);padding:7px 10px;z-index:4}.vertical-note,.edition{display:none}.ribbon{padding:15px 0}.ribbon-inner{width:max-content;gap:25px;transform:translateX(-12px)}section.section{padding:70px 0}.section-head{display:block}.section-head p{margin-top:24px;max-width:100%}h2{font-size:52px}.collection{grid-template-columns:1fr;gap:36px}.creation:nth-child(2){padding:0}.creation .art{height:350px}.creation .stem-window{width:86%;left:7%;height:94%;bottom:-12%}.creation p{max-width:none}.story-grid{grid-template-columns:1fr;gap:38px}.botanical-card{height:420px}.story-copy{grid-row:1}.story-copy p{margin-top:20px}.services-head{grid-template-columns:1fr;gap:24px;margin-bottom:35px}.service-row{grid-template-columns:24px 1fr;gap:10px 18px;padding:25px 0}.service-row p{grid-column:2}.service-row h3{font-size:34px}.contact-grid{grid-template-columns:1fr;gap:35px}.contact-copy{padding-bottom:60px}.contact-flower{width:190px;height:200px;right:-85px;opacity:.4}.contact address{font-size:20px}.footer-inner{flex-wrap:wrap;font-size:11px}.motion-btn{bottom:10px;left:10px;font-size:11px}.footer-wordmark{padding-bottom:35px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before{animation:none!important;transition:none!important}.petal-layer{display:none}.js .reveal{opacity:1;transform:none}}

/* Hero flowers keep their natural PNG silhouette: only the viewport edge
   and the section floor clip them. Stem endpoints sit below that floor. */
.hero-garden{width:clamp(280px,31vw,530px);height:80%;overflow:visible;--mirror:1;--entry-x:-70px;--drift:0px;--lift:0px;transform:translate3d(var(--drift),var(--lift),0) scaleX(var(--mirror));will-change:transform;animation:gardenEntry 1.5s cubic-bezier(.16,1,.3,1) both .15s}
.hero-garden.left{left:-10%}
.hero-garden.right{right:-10%;--mirror:-1;--entry-x:70px;transform:translate3d(var(--drift),var(--lift),0) scaleX(var(--mirror));animation-delay:.32s}
.hero-garden .stem-window{overflow:visible;isolation:auto;bottom:-145px;left:0;width:100%;height:100%;transform:none}
.hero-garden .stem-window img{top:auto;bottom:0;left:0;width:112%;height:auto;object-fit:contain;transform-origin:45% 95%}
.hero-garden .back{width:77%;height:100%;left:35%;bottom:-115px;transform:rotate(16deg);transform-origin:50% 100%;z-index:-1}
.hero-garden .front{width:75%;height:100%;left:40%;bottom:-165px;transform:rotate(-9deg);transform-origin:50% 100%}
.hero-garden.right .back{width:78%;height:100%;left:31%;bottom:-115px}
.hero-garden.right .front{height:100%;left:39%;bottom:-165px}
@keyframes gardenEntry{from{opacity:0;translate:var(--entry-x) 45px}to{opacity:1;translate:0 0}}
@media(min-width:1600px){.hero-garden.left{left:-6%}.hero-garden.right{right:-6%}}
@media(max-width:1000px){.hero-garden{width:36%}.hero-garden.left{left:-13%}.hero-garden.right{right:-13%}.hero-garden .stem-window{bottom:-100px}.hero-garden .back,.hero-garden.right .back{bottom:-85px}.hero-garden .front,.hero-garden.right .front{bottom:-130px}}
@media(max-width:700px){.hero-garden{width:57%;height:285px;bottom:0}.hero-garden.left{left:-16%}.hero-garden.right{right:-16%}.hero-garden .stem-window{bottom:-75px}.hero-garden .back,.hero-garden.right .back{bottom:-70px}.hero-garden .front,.hero-garden.right .front{bottom:-105px}}
@media(prefers-reduced-motion:reduce){.hero-garden{animation:none;translate:none;transform:scaleX(var(--mirror))!important;will-change:auto}}

/* Compact laptop composition: size the opening to usable viewport height,
   while allowing natural growth with enlarged text or very short windows. */
@media (min-width:701px) and (max-height:900px){
 .nav-main{height:68px}
 .brand img{width:52px}
 .season-bar{min-height:44px}
 .season-btn{padding-block:5px}
 .hero{min-height:calc(100svh - 112px);align-items:center}
 .hero:before{top:14px}
 .hero-copy{width:min(720px,64%);padding:30px 0 58px}
 .hero .eyebrow{margin-bottom:16px}
 .hero h1{font-size:clamp(54px,min(7.2vw,11.8svh),100px);line-height:.94}
 .hero .intro{margin-top:18px;line-height:1.5;font-size:15px;max-width:390px}
 .hero .btn{margin-top:20px;min-height:46px;padding-block:10px}
 .hero-caption{bottom:16px}
 .vertical-note{top:32px}
 .edition{top:29px}
}
@media (min-width:701px) and (max-height:650px){
 .nav-main{height:58px}
 .brand img{width:52px}
 .season-bar{min-height:40px}
 .hero{min-height:calc(100svh - 98px)}
 .hero-copy{padding:24px 0 46px}
 .hero .eyebrow{font-size:11px;margin-bottom:12px}
 .hero h1{font-size:clamp(48px,min(6.5vw,10.4svh),68px)}
 .hero .intro{margin-top:14px;font-size:14px}
 .hero .btn{margin-top:15px;min-height:42px;padding-block:8px}
 .hero-caption{bottom:10px;font-size:11px}
}

/* Services: a featured wedding composition and keyboard-accessible details. */
.wedding-service{display:grid;grid-template-columns:1.15fr .85fr;border:1px solid var(--line);background:var(--light);margin-bottom:42px;overflow:hidden;transition:background .7s}
.wedding-copy{padding:44px 48px;position:relative;z-index:1}
.wedding-copy .eyebrow{color:var(--accent);margin-bottom:22px}
.wedding-copy h3{font-size:clamp(43px,4.5vw,64px);line-height:1.02;letter-spacing:-.04em;margin-bottom:22px}
.wedding-copy>p:not(.eyebrow){max-width:440px;color:var(--muted)}
.service-tags{list-style:none;padding:0;margin:24px 0 8px;display:flex;flex-wrap:wrap;gap:8px}
.service-tags li{font-size:12px;padding:5px 10px;border:1px solid var(--line);border-radius:30px}
.wedding-art{position:relative;background:var(--surface);overflow:hidden;min-height:420px;transition:background .7s}
.wedding-art .stem-window{position:absolute;bottom:-12%;left:-5%;width:110%;height:93%}
.wedding-art-note{position:absolute;top:25px;left:25px;right:25px;font:22px var(--serif);z-index:2}
.wedding-art-number{position:absolute;right:18px;bottom:0;font:100px/1 var(--serif);color:var(--light);z-index:2}
.service-detail{border-top:1px solid var(--line)}
.service-detail:last-child{border-bottom:1px solid var(--line)}
.service-detail summary{list-style:none;display:grid;grid-template-columns:38px 1.2fr 1fr 32px;align-items:center;gap:22px;padding:28px 0;cursor:pointer}
.service-detail summary::-webkit-details-marker{display:none}
.service-detail summary:focus-visible{outline:2px solid var(--accent);outline-offset:5px}
.service-detail .number{font-size:12px;color:var(--accent)}
.service-detail h3{font-size:clamp(28px,3.1vw,40px);line-height:1.1;letter-spacing:-.025em;transition:color .25s}
.service-detail summary:hover h3,.service-detail[open] h3{color:var(--accent)}
.service-teaser{color:var(--muted);font-size:14px}
.service-toggle{font-size:26px;line-height:1;justify-self:end;transition:transform .3s}
.service-detail[open] .service-toggle{transform:rotate(45deg)}
.service-detail-body{padding:0 54px 30px 60px;max-width:810px;color:var(--muted)}
.service-detail-body .text-link{color:var(--ink)}
.service-detail[open] .service-detail-body{animation:enter .4s both}
.service-invitation{display:flex;justify-content:space-between;align-items:center;gap:30px;margin-top:35px}
.service-invitation p{font-size:15px}.service-invitation p>span{display:block;color:var(--muted)}
.service-invitation .text-link{margin-top:0;flex-shrink:0}
@media(max-width:1000px){.wedding-copy{padding:32px}.service-detail summary{grid-template-columns:28px 1.2fr .8fr 24px;gap:16px}.service-detail-body{padding-left:44px}}
@media(max-width:700px){.wedding-service{grid-template-columns:1fr;margin-bottom:30px}.wedding-copy{padding:28px 24px}.wedding-copy h3{font-size:46px}.wedding-art{min-height:260px}.wedding-art .stem-window{width:85%;left:7.5%;height:100%;bottom:-22%}.wedding-art-note{font-size:20px;top:18px;left:20px}.service-detail summary{grid-template-columns:24px 1fr 24px;padding:24px 0;gap:10px 14px}.service-detail h3{font-size:29px}.service-teaser{grid-column:2;font-size:13px}.service-toggle{grid-column:3;grid-row:1 / span 2}.service-detail-body{padding:0 0 25px 38px;font-size:15px}.service-invitation{align-items:flex-start;flex-direction:column;gap:15px}}

/* Continuous, seamless type ribbon; the duplicate is decorative only. */
.ribbon{padding:20px 0;background:var(--surface);transition:background .7s}
.ribbon-track{display:flex;width:max-content;animation:ribbonTravel 38s linear infinite}
.ribbon-group{display:flex;flex:none;align-items:center;justify-content:space-around;gap:44px;min-width:100vw;padding:0 22px;white-space:nowrap;font-size:12px;letter-spacing:.16em;text-transform:uppercase}
.ribbon-group b{display:inline-block;color:var(--accent);font-size:23px;font-weight:400;line-height:1;animation:floretTurn 16s linear infinite}
.ribbon:hover .ribbon-track{animation-play-state:paused}
@keyframes ribbonTravel{to{transform:translateX(-50%)}}
@keyframes floretTurn{to{transform:rotate(360deg)}}
/* Each section arrives as a composition, with a small stagger between details. */
.js .reveal{--enter-x:0px;--enter-y:36px;--enter-scale:1;opacity:0;transform:translate3d(var(--enter-x),var(--enter-y),0) scale(var(--enter-scale));transition:opacity .85s ease var(--reveal-delay,0ms),transform 1s cubic-bezier(.16,1,.3,1) var(--reveal-delay,0ms)}
.js .reveal.in{opacity:1;transform:translate3d(0,0,0) scale(1)}
.js .botanical-card.reveal{--enter-x:-32px;--enter-y:12px;--enter-scale:.97}
.js .story-copy.reveal{--enter-x:32px;--enter-y:12px}
.js .creation.reveal{--enter-y:52px;--enter-scale:.97}
.js .wedding-service.reveal{--enter-y:40px;--enter-scale:.98}
.js .section-head.reveal h2,.js .services-head.reveal h2,.js .story-copy.reveal h2,.js .contact .reveal h2{opacity:0;translate:0 22px;transition:opacity .9s ease .12s,translate 1.1s cubic-bezier(.16,1,.3,1) .12s}
.js .section-head.reveal.in h2,.js .services-head.reveal.in h2,.js .story-copy.reveal.in h2,.js .contact .reveal.in h2{opacity:1;translate:0 0}
.js .creation .stem-window,.js .botanical-card .stem-window,.js .wedding-art .stem-window{translate:0 44px;opacity:0;transition:translate 1.3s cubic-bezier(.16,1,.3,1) .2s,opacity .8s ease .2s}
.js .creation.in .stem-window,.js .botanical-card.in .stem-window,.js .wedding-service.in .stem-window{translate:0 0;opacity:1}
.botanical-seal{animation:sealRock 7s ease-in-out infinite alternate}
@keyframes sealRock{from{transform:rotate(7deg)}to{transform:rotate(16deg)}}
.season-line i{transform-origin:left;animation:swatchBreathe 4s ease-in-out infinite}
.season-line i:nth-child(2){animation-delay:.3s}.season-line i:nth-child(3){animation-delay:.6s}.season-line i:nth-child(4){animation-delay:.9s}
@keyframes swatchBreathe{0%,70%,100%{transform:scaleX(1)}35%{transform:scaleX(.72)}}
.hero-caption>span:last-child{display:inline-block;animation:scrollNudge 2.8s ease-in-out infinite}
@keyframes scrollNudge{0%,65%,100%{transform:translateY(0)}35%{transform:translateY(5px)}}
.creation .art{transition:background .7s,border-radius .7s,box-shadow .5s}
.creation:hover .art{box-shadow:0 16px 35px #30201410}
.text-link{position:relative;transition:color .25s,gap .35s}
.text-link:hover{color:var(--accent);gap:34px}
.service-detail summary{transition:padding .35s,background .35s}
@media(hover:hover){.service-detail summary:hover{padding-left:12px;padding-right:12px;background:var(--surface)}}
.footer-wordmark{background:linear-gradient(110deg,var(--paper) 20%,var(--light) 42%,var(--paper) 62%);background-size:250% 100%;background-clip:text;-webkit-background-clip:text;color:transparent;animation:wordmarkLight 12s ease-in-out infinite}
@keyframes wordmarkLight{0%,100%{background-position:100% 0}50%{background-position:0% 0}}
/* Off-screen decorative loops sleep; the page-wide petals stay independent. */
.js .motion-scope:not(.motion-visible) .stem-window img,.js .motion-scope:not(.motion-visible) .botanical-seal,.js .motion-scope:not(.motion-visible) .season-line i,.js .motion-scope:not(.motion-visible) .footer-wordmark{animation-play-state:paused}
.motion-paused .reveal,.motion-paused .reveal *{transition:none!important}
@media(max-width:700px){.ribbon-group{font-size:11px;gap:28px;padding-inline:14px}.ribbon-track{animation-duration:32s}.js .story-copy.reveal,.js .botanical-card.reveal{--enter-x:0px;--enter-y:25px}}
@media(prefers-reduced-motion:reduce){.ribbon-track{animation:none;transform:none}.ribbon-group{white-space:normal;flex-wrap:wrap;min-width:0;width:100vw;gap:12px 20px}.ribbon-group:nth-child(2){display:none}.js .reveal,.js .reveal h2,.js .reveal .stem-window{opacity:1!important;transform:none!important;translate:none!important;transition:none!important}.footer-wordmark{color:var(--paper);background:none}}

/* Seasonal ambient gradient, behind the copy, flowers and frame. */
:root{--hero-glow-a:#dba77e;--hero-glow-b:#dab3a0;--hero-glow-c:#ead7ad}
html[data-season=primavera]{--hero-glow-a:#e9b5ca;--hero-glow-b:#ccdcb8;--hero-glow-c:#f1d9b8}
html[data-season=estate]{--hero-glow-a:#efd081;--hero-glow-b:#d7dfa8;--hero-glow-c:#f0c7a4}
html[data-season=autunno]{--hero-glow-a:#dba77e;--hero-glow-b:#dab3a0;--hero-glow-c:#ead7ad}
html[data-season=inverno]{--hero-glow-a:#b6cec6;--hero-glow-b:#c9c6de;--hero-glow-c:#dfe5d5}
.hero:after{content:'';position:absolute;inset:-18%;z-index:-2;pointer-events:none;background:radial-gradient(ellipse at 18% 35%,var(--hero-glow-a) 0%,transparent 52%),radial-gradient(ellipse at 82% 25%,var(--hero-glow-b) 0%,transparent 50%),radial-gradient(ellipse at 55% 90%,var(--hero-glow-c) 0%,transparent 55%);opacity:.53;transform-origin:center;animation:heroAtmosphere 22s ease-in-out infinite alternate}
@keyframes heroAtmosphere{0%{transform:translate3d(-3%,-2%,0) rotate(-5deg) scale(1);opacity:.44}50%{transform:translate3d(3%,2%,0) rotate(3deg) scale(1.06);opacity:.62}100%{transform:translate3d(-1%,3%,0) rotate(7deg) scale(1.02);opacity:.5}}
.motion-paused .hero:after,.js .hero.motion-scope:not(.motion-visible):after{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){.hero:after{animation:none!important;transform:none;opacity:.48}}

/* Larger hero headline, with height-aware spacing for compact laptops. */
@media(min-width:701px){
 .hero-copy{width:min(1080px,82%)}
 .hero h1{font-size:clamp(88px,10.2vw,152px);line-height:.91}
}
@media(min-width:701px) and (max-height:900px){
 .hero-copy{padding:24px 0 46px}
 .hero .eyebrow{margin-bottom:12px}
 .hero h1{font-size:clamp(68px,min(9.8vw,15.8svh),134px);line-height:.9}
 .hero .intro{margin-top:15px}
 .hero .btn{margin-top:16px}
}
@media(min-width:701px) and (max-height:650px){
 .hero-copy{padding:20px 0 42px}
 .hero h1{font-size:clamp(58px,min(9vw,14svh),92px)}
 .hero .intro{margin-top:12px}
 .hero .btn{margin-top:12px}
}
@media(max-width:700px){
 .hero h1{font-size:clamp(62px,14.5vw,100px);line-height:.94}
}

/* Frosted header: seasonal translucent tint with an opaque fallback. */
.nav{background:var(--paper);transition:background .4s,box-shadow .4s}
.nav.scrolled{box-shadow:0 8px 30px #00000007}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
 .nav{background:color-mix(in srgb,var(--paper) 58%,transparent);-webkit-backdrop-filter:blur(20px) saturate(125%);backdrop-filter:blur(20px) saturate(125%)}
 .nav.scrolled{background:color-mix(in srgb,var(--paper) 72%,transparent)}
}
@media(prefers-reduced-transparency:reduce){.nav,.nav.scrolled{background:var(--paper);-webkit-backdrop-filter:none;backdrop-filter:none}}

/* Six independent entrance gestures; layout rotation, scroll and leaf sway
   remain on separate transform layers so the stems stay below the floor. */
.hero-garden,.hero-garden.right{animation:none;translate:none}
.hero-garden .stem-window{--bloom-delay:.12s;--bloom-duration:2.8s;--bloom-x:-38px;--bloom-y:48px;--bloom-rotation:-9deg;transform-origin:50% 100%}
.hero-garden.left .back{--bloom-delay:.08s;--bloom-duration:3.3s;--bloom-x:-48px;--bloom-y:60px;--bloom-rotation:-20deg}
.hero-garden.right .back{--bloom-delay:.3s;--bloom-duration:3.5s;--bloom-x:-42px;--bloom-y:54px;--bloom-rotation:18deg}
.hero-garden.left .stem-window:not(.back):not(.front){--bloom-delay:.42s;--bloom-duration:3s;--bloom-rotation:-15deg}
.hero-garden.right .stem-window:not(.back):not(.front){--bloom-delay:.65s;--bloom-duration:3.2s;--bloom-x:-32px;--bloom-rotation:16deg}
.hero-garden.left .front{--bloom-delay:.95s;--bloom-duration:2.8s;--bloom-x:-20px;--bloom-y:38px;--bloom-rotation:13deg}
.hero-garden.right .front{--bloom-delay:1.18s;--bloom-duration:3s;--bloom-x:-26px;--bloom-y:44px;--bloom-rotation:-14deg}
.js .hero-garden .stem-window:not(.bloom-enter){translate:calc(-100% - 35vw) 55px}
.hero-garden .stem-window.bloom-enter{animation:individualBloom var(--bloom-duration) cubic-bezier(.16,1,.3,1) var(--bloom-delay) both}
@keyframes individualBloom{
 0%{translate:calc(-100% - 35vw) 55px;rotate:var(--bloom-rotation);scale:.96}
 100%{translate:0 0;rotate:0deg;scale:1}
}
@media(prefers-reduced-motion:reduce){.hero-garden .stem-window,.js .hero-garden .stem-window:not(.bloom-enter){animation:none!important;opacity:1;translate:none;rotate:none;scale:none}}

/* Pointer depth lives on image translate, separate from entrance and sway. */
.hero{--mouse-x:0px;--mouse-y:0px}
.hero-garden .stem-window img{--pointer-depth:.75;--pointer-direction:1;translate:calc(var(--mouse-x) * var(--pointer-depth) * var(--pointer-direction)) calc(var(--mouse-y) * var(--pointer-depth));transition:opacity .3s,translate .75s cubic-bezier(.2,.7,.2,1)}
.hero-garden .back img{--pointer-depth:.4}
.hero-garden .front img{--pointer-depth:1.2}
.hero-garden.right img{--pointer-direction:-1}
@media(hover:none),(pointer:coarse),(prefers-reduced-motion:reduce){.hero-garden .stem-window img{translate:none!important}}
.motion-paused .hero-garden .stem-window img{translate:none!important}

/* Full-color entrances; the mirrored right garden reverses the local translation. */
.season-changing .hero-garden .stem-window img{opacity:1}
@media(prefers-reduced-motion:reduce){.js .hero-garden .stem-window:not(.bloom-enter){translate:none!important}}



/* Alternate sideways entrances with branches opening around their hidden base.
   Positive local rotation folds the top toward the outer edge; the right
   garden mirrors the same gesture toward the opposite viewport edge. */
.hero-garden.left .back,.hero-garden.right .front{--branch-fold:88deg;--branch-offset:-28px;transform-origin:50% 100%}
.hero-garden.right .front{--branch-fold:96deg;--branch-offset:-18px}
.hero-garden.left .back.bloom-enter,.hero-garden.right .front.bloom-enter{animation-name:branchUnfold;animation-timing-function:cubic-bezier(.22,.75,.25,1)}
.js .hero-garden.left .back:not(.bloom-enter),.js .hero-garden.right .front:not(.bloom-enter){translate:var(--branch-offset) 36px;rotate:var(--branch-fold)}
@keyframes branchUnfold{
 from{translate:var(--branch-offset) 36px;rotate:var(--branch-fold);scale:.98}
 to{translate:0 0;rotate:0deg;scale:1}
}
@media(prefers-reduced-motion:reduce){.js .hero-garden.left .back:not(.bloom-enter),.js .hero-garden.right .front:not(.bloom-enter){translate:none!important;rotate:none!important}}

/* Side-hinged entries complement the existing bottom-pivot branches.
   The right garden mirrors the outer-edge hinge automatically. */
.hero-garden.left .front,.hero-garden.right .back{transform-origin:0% 55%;--side-fold:76deg;--side-offset:-90%;--side-drop:-18px}
.hero-garden.right .back{--side-fold:-72deg;--side-offset:-95%;--side-drop:20px;transform-origin:0% 65%}
.hero-garden.left .front.bloom-enter,.hero-garden.right .back.bloom-enter{animation-name:sideUnfold;animation-timing-function:cubic-bezier(.2,.75,.25,1)}
.js .hero-garden.left .front:not(.bloom-enter),.js .hero-garden.right .back:not(.bloom-enter){translate:var(--side-offset) var(--side-drop);rotate:var(--side-fold)}
@keyframes sideUnfold{from{translate:var(--side-offset) var(--side-drop);rotate:var(--side-fold);scale:.98}to{translate:0 0;rotate:0deg;scale:1}}
@media(prefers-reduced-motion:reduce){.js .hero-garden.left .front:not(.bloom-enter),.js .hero-garden.right .back:not(.bloom-enter){translate:none!important;rotate:none!important}}

/* Original identity in the opening and closing, with no recreated wordmark. */
.hero-brand{width:80px;height:auto;margin:0 auto 14px}
.hero .hero-location{font-size:11px;letter-spacing:.2em;margin-bottom:20px}
.footer{position:relative;overflow:hidden;isolation:isolate}
.footer>.wrap{position:relative;z-index:2}
.footer-brand{display:block;width:70px;margin:50px auto 45px;border:0!important}
.footer-brand img{width:100%;height:auto;filter:brightness(0) invert(94%) sepia(12%) saturate(250%);opacity:.9}
/* The flower now grows from the actual page bottom. Natural image dimensions
   preserve the petals; only the hidden stem extends beyond the page floor. */
.footer .contact-flower{right:-80px;bottom:-135px;width:310px;height:390px;overflow:visible;opacity:.75;z-index:1}
.footer .contact-flower img{top:auto;bottom:0;left:0;width:100%;height:auto;object-fit:contain;transform-origin:50% 100%}
@media(min-width:701px) and (max-height:900px){.hero-brand{width:80px;margin-bottom:9px}.hero .hero-location{font-size:10px;margin-bottom:12px}.hero-copy{padding-top:12px;padding-bottom:38px}}
@media(min-width:701px) and (max-height:650px){.hero-brand{width:80px;margin-bottom:6px}.hero .hero-location{margin-bottom:8px}.hero-copy{padding-top:10px;padding-bottom:32px}}
@media(max-width:700px){.hero-brand{width:80px;margin-bottom:12px}.hero .hero-location{font-size:10px;margin-bottom:20px}.hero-copy{padding-top:38px}.footer-brand{width:65%;margin:40px auto 55px}.footer .contact-flower{width:180px;height:225px;right:-95px;bottom:-85px;opacity:.65}}

/* Two occasional margin flowers. The stem points out of the viewport,
   leaving the natural outline visible without a rectangular clipping window. */
.services-section,.story{position:relative;overflow:clip}
.edge-bloom{position:absolute;width:72px;height:250px;pointer-events:none;z-index:0;display:none}
.edge-bloom-left{left:0;top:67%}
.edge-bloom-right{right:0;top:22%;transform:scaleX(-1)}
.edge-growth{width:100%;height:100%;transform-origin:0% 70%}
.edge-bloom img{position:absolute;left:-145px;top:0;width:170px;max-width:none;height:auto;transform:rotate(65deg);transform-origin:center;animation:edgeBreeze 9s ease-in-out infinite alternate;transition:opacity .3s}
.edge-bloom-right img{animation-delay:-4s}
.js .edge-growth{transform:translateX(-115px) rotate(-14deg);transition:transform 2.6s cubic-bezier(.16,1,.3,1) .16s}
.js .edge-bloom.in .edge-growth{transform:translateX(0) rotate(0deg)}
@keyframes edgeBreeze{from{transform:rotate(63deg)}to{transform:rotate(67deg)}}
.js .edge-bloom:not(.in) img,.js .motion-scope:not(.motion-visible) .edge-bloom img{animation-play-state:paused}
@media(min-width:1360px){.edge-bloom{display:block}}
@media(prefers-reduced-motion:reduce){.js .edge-growth{transform:none;transition:none}.edge-bloom img{animation:none}}
.motion-paused .edge-growth{transition:none}

/* Swap sources only while the outgoing hero flowers are fully offstage. */
.hero-replacing .hero-garden .stem-window{visibility:hidden}

/* Keep all four gradient palettes painted independently; blend their opacity
   instead of replacing gradient colors at the season boundary. */
.hero:after{display:none}
.hero-atmosphere{position:absolute;inset:0;overflow:hidden;z-index:-2;pointer-events:none}
.season-atmosphere{position:absolute;inset:0;opacity:0;background:var(--atmosphere-paper);transition:opacity 1.8s cubic-bezier(.4,0,.2,1)}
.season-atmosphere:before{content:'';position:absolute;inset:-18%;background:radial-gradient(ellipse at 18% 35%,var(--atmosphere-a) 0%,transparent 52%),radial-gradient(ellipse at 82% 25%,var(--atmosphere-b) 0%,transparent 50%),radial-gradient(ellipse at 55% 90%,var(--atmosphere-c) 0%,transparent 55%);transform-origin:center;animation:heroAtmosphere 22s ease-in-out infinite alternate;opacity:.53}
.atmosphere-primavera{--atmosphere-paper:#f5eee9;--atmosphere-a:#e9b5ca;--atmosphere-b:#ccdcb8;--atmosphere-c:#f1d9b8}
.atmosphere-estate{--atmosphere-paper:#f8f0d9;--atmosphere-a:#efd081;--atmosphere-b:#d7dfa8;--atmosphere-c:#f0c7a4}
.atmosphere-autunno{--atmosphere-paper:#f4ecdf;--atmosphere-a:#dba77e;--atmosphere-b:#dab3a0;--atmosphere-c:#ead7ad}
.atmosphere-inverno{--atmosphere-paper:#edf0eb;--atmosphere-a:#b6cec6;--atmosphere-b:#c9c6de;--atmosphere-c:#dfe5d5}
html[data-season=primavera] .atmosphere-primavera,html[data-season=estate] .atmosphere-estate,html[data-season=autunno] .atmosphere-autunno,html[data-season=inverno] .atmosphere-inverno{opacity:1}
.js .hero.motion-scope:not(.motion-visible) .season-atmosphere:before{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.season-atmosphere{transition:none}.season-atmosphere:before{animation:none;transform:none;opacity:.48}}

/* A fuller summer arrangement on the right, with stems below the floor. */
.hero-garden .summer-extra{display:none}
html[data-season=estate] .hero-garden.right .summer-extra{display:block}
.hero-garden.right .summer-extra-high{width:73%;left:-5%;bottom:-125px;transform:rotate(-12deg);z-index:-2;--bloom-delay:.48s;--bloom-duration:3.4s;--bloom-rotation:18deg}
.hero-garden.right .summer-extra-low{width:62%;left:40%;bottom:-175px;transform:rotate(8deg);z-index:2;--bloom-delay:1.05s;--bloom-duration:3.1s;--bloom-rotation:-16deg}
.hero-garden.right .summer-extra-high img{width:132%;--pointer-depth:.45;animation-delay:-2s}
.hero-garden.right .summer-extra-low img{--pointer-depth:1;animation-delay:-6s}
.hero-garden .spring-extra{display:none}
html[data-season=primavera] .hero-garden.left .spring-extra{display:block}
.hero-garden.left .spring-extra-daisy{width:76%;left:7%;bottom:-142px;transform:rotate(9deg);z-index:2;--bloom-delay:.8s;--bloom-duration:3.25s;--bloom-rotation:-17deg}
.hero-garden.left .spring-extra-daisy img{width:114%;--pointer-depth:1.05;animation-delay:-5s}
@media(max-width:1000px){.hero-garden.right .summer-extra-high{bottom:-95px}.hero-garden.right .summer-extra-low{bottom:-140px}}
@media(max-width:700px){.hero-garden.right .summer-extra-high{bottom:-85px;width:70%}.hero-garden.right .summer-extra-low{bottom:-110px;width:58%;left:36%}.hero-garden.left .spring-extra-daisy{width:70%;left:4%;bottom:-98px}}

/* Reserve a small breathing space at three section openings: flowers can
   extend inward here at laptop widths without occupying a text gutter. */
#servizi,#creazioni,#about{position:relative;overflow:clip;padding-top:190px}
#servizi>.edge-bloom,#creazioni>.edge-bloom,#about>.edge-bloom{display:block;top:8px;width:150px;height:175px}
.edge-bloom img{width:180px;left:-110px;top:-70px}
.js .edge-growth{transform:translateX(-210px) rotate(-22deg);transition:transform 2.8s cubic-bezier(.16,1,.3,1) .1s}
.js .edge-bloom.in .edge-growth{transform:translateX(0) rotate(0deg)}
#creazioni .edge-growth{transition-delay:.25s}
#about .edge-growth{transition-delay:.15s}
@media(max-width:700px){
 #servizi,#creazioni,#about{padding-top:150px}
 #servizi>.edge-bloom,#creazioni>.edge-bloom,#about>.edge-bloom{top:4px;width:105px;height:132px}
 .edge-bloom img{width:135px;left:-85px;top:-50px}
}
@media(prefers-reduced-motion:reduce){.js .edge-growth{transform:none;transition:none}}

/* Larger side blooms in their own clear band, driven reversibly by scroll. */
#servizi,#creazioni,#about{padding-top:270px}
#servizi>.edge-bloom,#creazioni>.edge-bloom,#about>.edge-bloom{width:230px;height:245px;top:8px;--edge-out:-310px;--edge-turn:-24deg}
.edge-bloom img{width:270px;left:-145px;top:-110px}
.js .edge-bloom .edge-growth,.js .edge-bloom.in .edge-growth{transform:translateX(var(--edge-out)) rotate(var(--edge-turn));transition:none}
@media(max-width:700px){
 #servizi,#creazioni,#about{padding-top:210px}
 #servizi>.edge-bloom,#creazioni>.edge-bloom,#about>.edge-bloom{width:170px;height:190px;top:4px}
 .edge-bloom img{width:205px;left:-115px;top:-85px}
}
@media(prefers-reduced-motion:reduce){.js .edge-bloom .edge-growth,.js .edge-bloom.in .edge-growth{transform:none!important}}

/* Larger scroll flowers, with a reserved margin band above the content. */
#servizi,#creazioni,#about{padding-top:425px}
#servizi>.edge-bloom,#creazioni>.edge-bloom,#about>.edge-bloom{width:410px;height:385px;--edge-distance:560px;--edge-out:-560px}
.edge-bloom img{width:480px;left:-235px;top:-190px}
.gallery-section{background:var(--light);transition:background .7s}
.gallery-toolbar{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:0 0 32px;border-bottom:1px solid var(--line);padding-bottom:20px}
.gallery-filters{display:flex;gap:8px;flex-wrap:wrap}
.gallery-filters button{background:transparent;border:1px solid var(--line);border-radius:30px;padding:8px 17px;font-size:14px;transition:background .25s,color .25s}
.gallery-filters button[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.gallery-count{font-size:12px;white-space:nowrap;color:var(--muted)}
.gallery-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:30px 22px}
.gallery-item{display:block;width:100%;min-width:0;border:0;padding:0;background:none;text-align:left}
.gallery-item[hidden]{display:none}
.gallery-art{display:block;position:relative;aspect-ratio:.9;overflow:hidden;background:var(--surface);transition:background .5s,border-radius .5s}
.gallery-item:nth-child(4n+1) .gallery-art{border-radius:140px 140px 0 0}
.gallery-item:nth-child(4n+3) .gallery-art{border-radius:4px 90px 4px 4px}
.gallery-art img{position:absolute;top:7%;left:-10%;width:120%;max-width:none;height:auto;transition:transform .7s cubic-bezier(.16,1,.3,1)}
.gallery-item:hover .gallery-art img{transform:scale(1.04) rotate(-1deg)}
.gallery-expand{position:absolute;right:14px;bottom:14px;border-radius:50%;width:34px;height:34px;display:grid;place-items:center;background:var(--light);color:var(--ink);transition:transform .3s}
.gallery-item:hover .gallery-expand{transform:rotate(45deg)}
.gallery-caption{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding-top:13px}
.gallery-name{font:28px/1.2 var(--serif)}.gallery-season{font-size:11px;color:var(--muted)}
.gallery-footnote{font-size:12px;color:var(--muted);margin-top:30px;max-width:580px}
.gallery-dialog{padding:0;border:1px solid var(--line);color:var(--ink);background:var(--paper);width:min(800px,calc(100% - 32px));max-height:90svh;overflow:auto}
.gallery-dialog[open]{display:grid;grid-template-columns:1.1fr 1fr}
.gallery-dialog::backdrop{background:#17231c99;backdrop-filter:blur(7px)}
.gallery-close{position:absolute;right:12px;top:12px;z-index:2;width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:var(--paper);font-size:26px;line-height:1}
.gallery-dialog-art{position:relative;overflow:hidden;min-height:420px;background:var(--surface)}
.gallery-dialog-art img{position:absolute;top:20px;left:-10%;width:120%;max-width:none;height:auto}
.gallery-dialog-copy{padding:65px 30px 30px;align-self:center}.gallery-dialog-copy h3{font-size:46px;margin:14px 0;line-height:1.1}.gallery-dialog-copy>p:not(.eyebrow){font-size:15px;color:var(--muted)}
.gallery-dialog-nav{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:30px}.gallery-dialog-nav button{background:none;border:1px solid var(--line);width:42px;height:42px}.gallery-dialog-nav span{font-size:13px}
body.gallery-open{overflow:hidden}
@media(max-width:1100px){.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.nav-links{gap:18px}}
@media(max-width:700px){#servizi,#creazioni,#about{padding-top:325px}#servizi>.edge-bloom,#creazioni>.edge-bloom,#about>.edge-bloom{width:285px;height:285px;--edge-distance:375px;--edge-out:-375px}.edge-bloom img{width:350px;left:-175px;top:-145px}.gallery-toolbar{align-items:flex-start;flex-direction:column;gap:12px}.gallery-filters{gap:6px}.gallery-filters button{padding:7px 11px;font-size:12px}.gallery-grid{gap:24px 14px}.gallery-caption{display:block}.gallery-name,.gallery-season{display:block}.gallery-name{font-size:25px}.gallery-season{margin-top:5px}.gallery-dialog[open]{grid-template-columns:1fr}.gallery-dialog-art{min-height:0;height:37svh}.gallery-dialog-art img{width:92%;left:4%;top:12px}.gallery-dialog-copy{padding:24px}.gallery-dialog-copy h3{font-size:36px;margin:8px 0}.gallery-dialog-nav{margin-top:20px}}

/* Responsive finishing pass: predictable navigation and comfortable touch targets. */
:root{--header-offset:140px}html{scroll-padding-top:calc(var(--header-offset) + 16px)}
.wrap,.hero-copy,.story-copy,.wedding-copy,.contact-copy{min-width:0}
button,.btn,.text-link{touch-action:manipulation}
.text-link{min-height:44px}.gallery-close,.gallery-dialog-nav button{min-width:44px;min-height:44px}
@media(max-width:1050px){
 :root{--header-offset:124px}
 .nav-main{height:70px}.season-bar{min-height:54px}.brand img{width:52px}
 .menu-btn{display:block;min-height:44px;min-width:68px}
 .nav-links{display:none;position:absolute;top:100%;left:0;right:0;padding:20px max(24px,env(safe-area-inset-left));background:var(--paper);border-bottom:1px solid var(--line);box-shadow:0 16px 25px #0000000a;max-height:calc(100svh - 124px);overflow:auto}
 .nav-links.open{display:flex;flex-direction:column;align-items:stretch;gap:5px}
 .nav-links a{padding:10px 4px;min-height:44px;font-size:16px}
 .nav-links a:after{display:none}.nav-links .nav-cta{margin-top:4px}
 .season-btn{min-height:44px}.season-intro{font-size:11px}
 .hero{min-height:calc(100svh - 124px)}
 .story-grid{gap:30px}.services-head{gap:30px}
}
@media(min-width:701px) and (max-width:900px){
 .hero h1{font-size:clamp(74px,10vw,90px)}
 .hero-copy{width:80%;padding:35px 0 90px}
 .collection{gap:16px}.creation h3{font-size:30px}.creation .art{height:245px}
 .wedding-service{grid-template-columns:1fr 1fr}.wedding-copy{padding:28px}.wedding-copy h3{font-size:46px}
 .story-grid{grid-template-columns:1fr 1fr}.story-copy h2{font-size:48px}
 .contact h2{font-size:58px}.contact-grid{gap:24px}
}
@media(max-width:700px){
 .wrap{width:calc(100% - 36px)}
 .hero{min-height:max(660px,calc(100svh - 124px))}
 .hero-copy{width:calc(100% - 32px);padding:30px 0 215px}
 .hero h1{font-size:clamp(43px,14.3vw,96px);line-height:.98;letter-spacing:-.06em}
 .hero-brand{width:80px;margin-bottom:10px}.hero .hero-location{margin-bottom:20px}
 .hero .intro{font-size:16px;line-height:1.55;max-width:310px;margin-top:22px}
 .hero .btn{min-height:48px;margin-top:22px;gap:20px}
 .hero-garden{height:245px;pointer-events:none}
 .hero-caption{bottom:14px;max-width:90%;white-space:normal;text-align:center;font-size:11px}
 .season-btn{font-size:13px;padding:7px 6px}.season-controls{gap:2px}
 .section-head,.services-head{margin-bottom:32px}
 h2{font-size:clamp(38px,11.5vw,60px);overflow-wrap:break-word}
 .contact h2{font-size:clamp(43px,12vw,68px)}
 .wedding-copy{padding:26px 22px}.wedding-copy h3{font-size:clamp(37px,10.5vw,48px)}
 .service-detail h3{font-size:clamp(25px,7.4vw,32px)}.service-detail summary{gap:10px}
 .service-detail-body{padding-left:34px;font-size:16px}
 .creation p,.service-invitation p,.contact-note{font-size:16px}
 .creation .art{height:auto;aspect-ratio:1.05}
 .botanical-card{height:390px}.specimen-label{left:24px;right:24px;font-size:11px;gap:12px}
 .gallery-filters button{min-height:44px;font-size:13px}
 .gallery-dialog{max-height:calc(100dvh - 24px);overscroll-behavior:contain}
 .gallery-dialog-art{height:clamp(190px,32svh,310px)}
 .gallery-dialog-copy{padding:22px}.gallery-dialog-copy h3{font-size:36px}
 .gallery-close{top:10px;right:10px}
 .footer-inner{padding-bottom:4px}.footer-inner>a{min-height:44px;display:inline-flex;align-items:center}
 .footer{padding-bottom:calc(45px + env(safe-area-inset-bottom))}
 .motion-btn{left:max(10px,env(safe-area-inset-left));bottom:max(10px,env(safe-area-inset-bottom));min-height:40px;padding:8px 11px;font-size:11px}
}
@media(max-width:360px){
 .gallery-grid{gap:22px 12px}.gallery-name{font-size:23px}
 .hero .intro{font-size:15px}.hero .eyebrow{letter-spacing:.14em}
 .specimen-label{font-size:10px}.btn{gap:16px;padding-inline:17px}
 .contact address{font-size:18px}.gallery-filters{gap:5px}
}
@media(max-height:500px) and (orientation:landscape){
 .nav{position:relative}.hero-copy{padding-top:26px;padding-bottom:75px}
 .hero{min-height:560px}.hero-garden{height:260px}
 .gallery-dialog[open]{grid-template-columns:1fr 1fr}.gallery-dialog-art{height:auto;min-height:280px}
 .gallery-dialog-copy{padding:28px 22px}
}
