/* Self-hosted fonts (SIL OFL 1.1 - licences in /assets/fonts/) */
@font-face{font-family:'DM Sans';font-style:normal;font-weight:400 700;font-display:swap;src:url(/assets/fonts/dm-sans-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'DM Sans';font-style:normal;font-weight:400 700;font-display:swap;src:url(/assets/fonts/dm-sans-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Playfair Display';font-style:normal;font-weight:400 600;font-display:swap;src:url(/assets/fonts/playfair-display-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Playfair Display';font-style:normal;font-weight:400 600;font-display:swap;src:url(/assets/fonts/playfair-display-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Playfair Display';font-style:italic;font-weight:400 600;font-display:swap;src:url(/assets/fonts/playfair-display-italic-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Playfair Display';font-style:italic;font-weight:400 600;font-display:swap;src:url(/assets/fonts/playfair-display-italic-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{--cream:#f5ede6;--paper:#f9f4ef;--beige:#e9d6c7;--rose:#ddbdad;--burgundy:#562b32;--burgundy-dark:#321e24;--ink:#38272a;--muted:#806d69;--line:#d9c9be;--font-body:'DM Sans',Arial,sans-serif;--font-display:'Playfair Display',Georgia,serif}
*,*::before,*::after{box-sizing:border-box}
html{scroll-padding-top:104px}@media(prefers-reduced-motion:no-preference){html.is-ready{scroll-behavior:smooth}}
body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}button{font:inherit}button,a{-webkit-tap-highlight-color:transparent}
button:focus-visible,a:focus-visible,summary:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}
::selection{background:#8e5660;color:#fff}
.container{width:min(100% - 88px,1376px);margin-inline:auto}.section{padding-block:132px}
.skip-link{position:absolute;top:-100px;left:20px;padding:12px 16px;z-index:30;background:#fff}.skip-link:focus{top:12px}
.announcement{min-height:33px;display:flex;justify-content:center;align-items:center;gap:24px;background:var(--burgundy);color:#f9eae2;font-size:11px;line-height:1.5;letter-spacing:.14em;text-align:center;padding:8px 18px;text-transform:uppercase}.announcement strong{font-weight:700}.announcement__spark{font-size:14px;color:#e2b1a0}
.header{background:var(--cream);position:sticky;top:0;z-index:10;border-bottom:1px solid rgba(76,41,41,.1)}.header__inner{height:92px;display:flex;justify-content:space-between;align-items:center}.wordmark{display:flex;align-items:center;gap:13px;padding-block:5px}.wordmark__symbol{font:italic 500 48px/.85 var(--font-display);letter-spacing:-.12em;color:var(--burgundy)}.wordmark__symbol span{color:#bb857b}.wordmark__name{display:flex;flex-direction:column;gap:3px;font-size:10px;line-height:1.1;font-weight:700;letter-spacing:.24em}.wordmark__name span{font-size:9px;letter-spacing:.27em}.lang-switch{display:flex;align-items:center;gap:2px;margin-left:auto;font-size:12px;font-weight:700;letter-spacing:.12em;color:#75605b}.lang-switch__current{color:var(--burgundy);padding:0 6px}.lang-switch a{display:inline-grid;place-items:center;min-width:44px;min-height:44px;transition:color var(--dur-fast)}.lang-switch a:hover,.lang-switch a:focus-visible{color:var(--burgundy)}.nav{display:flex;align-items:center;gap:40px;margin-left:34px}.nav>a{font-size:13px;letter-spacing:.05em;font-weight:600;padding-block:13px;transition:color var(--dur-fast)}.nav>a:hover{color:#8f555d}.nav .nav__cta{margin-left:10px;color:var(--cream);background:var(--burgundy);padding:16px 20px;display:flex;align-items:center;gap:24px}.nav .nav__cta:hover{color:#fff;background:var(--burgundy-dark)}.menu-toggle{display:none}
.hero{position:relative;overflow:hidden}.hero__grid{min-height:min(760px,calc(100svh - 125px));display:grid;grid-template-columns:1fr .92fr;align-items:stretch}.hero__copy{padding:96px 0 82px 0;display:flex;align-items:flex-start;flex-direction:column;justify-content:center}.eyebrow{font-size:11px;letter-spacing:.23em;font-weight:700;display:flex;align-items:center;gap:15px;color:#8c5a58}.eyebrow__line{display:inline-block;width:32px;height:1px;background:#a97876}.hero h1{font:400 clamp(62px,6.25vw,105px)/1.10 var(--font-display);letter-spacing:-.062em;margin:34px 0 24px;white-space:nowrap}.hero h1 em,.intro h2 em,.values h2 em,.faq h2 em,.contact h2 em{font-weight:400;color:#aa6e73}.hero h1 .period{color:#bd827e}.hero__lead{max-width:440px;font-size:16px;line-height:1.75;color:#70605e;margin:0}.hero__actions{display:flex;align-items:center;gap:29px;margin-top:36px;flex-wrap:wrap}.button{border:1px solid transparent;display:inline-flex;align-items:center;justify-content:space-between;gap:30px;min-height:54px;padding:15px 21px;font-size:13px;letter-spacing:.045em;font-weight:700;transition:background-color var(--dur-base) var(--ease-out),color var(--dur-base),border-color var(--dur-base),box-shadow var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-soft)}.button--dark{background:var(--burgundy);color:#fff}.button--dark:hover{background:var(--burgundy-dark)}.text-link{font-size:13px;font-weight:700;position:relative;padding:16px 0 8px;display:inline-flex;gap:14px;transition:color var(--dur-fast)}.text-link::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:#92706d}.hero__footer{margin-top:auto;padding-top:48px;font-size:11px;letter-spacing:.18em;font-weight:700;color:#75605b;display:flex;flex-wrap:wrap;align-items:center;gap:8px 13px}.mini-star{font-size:19px;color:#a36a69}.hero__footer-rule{width:40px;height:1px;background:#b9a49b}.hero__visual{background:#e5c6b7;position:relative;isolation:isolate;min-height:680px;display:flex;align-items:center;justify-content:center;overflow:hidden}.hero__visual::before{content:"";position:absolute;inset:21px;border:1px solid rgba(78,38,43,.25);pointer-events:none;z-index:2}.hero__visual-grain{position:absolute;inset:0;opacity:.27;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.22'/%3E%3C/svg%3E")}.hero__logo-frame{position:relative;width:min(84%,610px);aspect-ratio:1;z-index:1;filter:drop-shadow(0 24px 38px rgba(88,43,42,.15));transform:rotate(-5deg);animation:hero-entrance 1s var(--ease-soft) both}.hero__logo-frame img{transition:transform var(--dur-slow) var(--ease-soft);display:block;width:100%;height:100%;object-fit:cover;border-radius:50%;border:1px solid rgba(105,45,45,.1)}.hero__visual-top,.hero__visual-bottom{position:absolute;z-index:3;color:#6b4444;font-size:10px;font-weight:700;letter-spacing:.2em}.hero__visual-top{top:48px;left:50%;transform:translateX(-50%);white-space:nowrap}.hero__visual-bottom{bottom:47px;left:47px;right:47px;display:flex;justify-content:space-between}.hero__orbit{position:absolute;border:1px solid rgba(126,75,68,.14);border-radius:50%;aspect-ratio:1}.hero__orbit--one{width:120%;transform:rotate(20deg)}.hero__orbit--two{width:92%;transform:rotate(35deg)}.hero__scroll{position:absolute;right:calc((100% - min(100% - 88px,1376px))/2 + 26px);bottom:24px;z-index:4;color:#694743;font-size:8px;letter-spacing:.2em;display:none;gap:10px}
.ticker{background:#e4d0c2;border-top:1px solid #d7bba9;border-bottom:1px solid #d7bba9;overflow:hidden;position:relative;color:#713d42;font-size:11px;letter-spacing:.19em;font-weight:700}.ticker__track{display:flex}.ticker__group{flex:none;min-width:100%;min-height:67px;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px 30px;padding:14px 15px;white-space:nowrap}.ticker__group+.ticker__group,.ticker__group .ticker__star:last-child,.ticker__toggle{display:none}.ticker__star{font-size:19px;line-height:1;font-weight:400;color:#b57f72}
.intro{background:#f9f4ef}.intro__grid{display:grid;grid-template-columns:1fr 3fr;gap:50px}.section-index{display:flex;align-items:center;gap:15px;align-self:start;padding-top:11px;font-size:11px;letter-spacing:.18em;color:#85605b;font-weight:700}.section-index__rule{width:44px;height:1px;background:#b49991}.intro__content{max-width:960px}.eyebrow--small{font-size:11px}.intro h2,.values h2,.faq h2,.contact h2{font:400 clamp(48px,5.4vw,80px)/1.19 var(--font-display);letter-spacing:-.055em;margin:20px 0 0}.intro h2{font-size:clamp(56px,6.4vw,95px)}.intro__bottom{display:flex;align-items:flex-end;justify-content:space-between;gap:40px;margin-top:33px}.intro__text{max-width:540px}.intro__bottom p{margin:0;color:#74635e;font-size:16px;line-height:1.85}.intro__bottom p+p{margin-top:1.1em}.signature{min-width:180px;color:#8a625e;font:italic 17px var(--font-display);white-space:nowrap}.signature span{display:block;color:var(--burgundy);font:italic 30px var(--font-display);padding-top:7px}
.eyebrow--light{color:#d7a99c}
.values{background:#f5ede6}.values__header{text-align:center;margin-bottom:55px}.values h2{font-size:clamp(50px,5vw,76px)}.values__grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.value-card{min-height:270px;padding:32px 40px 39px;position:relative;transition:background-color var(--dur-slow)}.value-card+ .value-card{border-left:1px solid var(--line)}.value-card__number{font-size:11px;letter-spacing:.19em;color:#7f615b}.value-card__icon{position:absolute;right:40px;top:29px;font-size:34px;font-family:Georgia,serif;color:#ab7776;transition:transform var(--dur-slow) var(--ease-soft)}.value-card h3{font:400 27px var(--font-display);letter-spacing:-.035em;margin:78px 0 10px}.value-card p{max-width:320px;font-size:15px;line-height:1.75;color:#76635d;margin:0}
.quote{background:#e7cabe;overflow:hidden}.quote__inner{min-height:440px;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;padding:70px 0}.quote__inner::before,.quote__inner::after{content:"";height:1px;position:absolute;background:rgba(101,56,57,.18);left:0;right:0}.quote__inner::before{top:35px}.quote__inner::after{bottom:35px}.quote__star{font-size:30px;color:#976665}.quote p{font:400 clamp(66px,8vw,120px)/1.05 var(--font-display);letter-spacing:-.055em;color:#5c3339;text-align:center;margin:16px 0}.quote p em{color:#96585a}.quote__aside{font-size:11px;letter-spacing:.22em;color:#6e4a48;font-weight:700;margin-top:21px}
.faq{background:#f9f4ef}.faq__grid{display:grid;grid-template-columns:1fr 1fr;gap:9%}.faq__heading h2{font-size:clamp(52px,5vw,77px)}.faq__heading p{max-width:360px;font-size:15px;line-height:1.8;color:#776761;margin-top:23px}.faq__items{padding-top:25px}.faq__items details{border-bottom:1px solid #d9cbc0}.faq__items details:first-child{border-top:1px solid #d9cbc0}.faq__items summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px 0;font-size:16px;line-height:1.4;font-weight:600;transition:color var(--dur-fast)}.faq__items summary::-webkit-details-marker{display:none}.faq__items summary span{font-size:24px;font-weight:400;color:#94696b;transition:transform var(--dur-base) var(--ease-soft)}.faq__items details[open]:not(.is-collapsing) summary span{transform:rotate(45deg)}.faq__answer{padding-bottom:26px}.faq__answer a{color:#94696b;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;transition:color var(--dur-fast)}.faq__answer a:hover{color:var(--burgundy)}.faq__items details p{font-size:15px;line-height:1.75;color:#78675f;max-width:480px;margin:0 35px 0 0}
.contact{background:var(--burgundy);color:#f9e9df;text-align:center;padding-bottom:50px}.contact__inner{display:flex;flex-direction:column;align-items:center}.contact__flower{font-size:62px;color:#d3a699;margin-bottom:38px;font-weight:400;line-height:1}.contact h2{font-size:clamp(74px,10vw,147px);line-height:1.06;margin:17px 0 27px}.contact h2 em{color:#d8ae9f}.contact__inner>p:not(.contact__placeholder){font-size:16px;color:#e1c6bd;line-height:1.75;max-width:520px;margin:0}.contact__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:13px;margin-top:34px}.contact__actions[hidden],.contact__actions a[hidden]{display:none}.button--light{background:#f7ede5;color:var(--burgundy)}.button--light:hover{background:white}.button--outline{border-color:#cc9e95;color:#fff}.contact__placeholder{margin:35px 0 0;font-size:14px;letter-spacing:.02em;color:#e0b9af}.contact__foot{width:100%;display:flex;align-items:center;justify-content:space-between;gap:30px;font-size:11px;letter-spacing:.19em;color:#c69d95;border-top:1px solid rgba(244,217,205,.2);margin-top:115px;padding-top:33px;font-weight:700}.contact__foot span:nth-child(2){font-size:19px}.footer{background:#2c1c22;color:#d1b7af}.footer__inner{min-height:95px;display:flex;align-items:center;justify-content:space-between;gap:30px;font-size:12px;letter-spacing:.07em}.footer__brand{font:italic 32px var(--font-display);letter-spacing:-.08em;color:#f3ded7}.footer__brand span{color:#be8b82}.footer__brand{padding-block:5px}.footer__top{border-bottom:1px solid #a47c75;padding:18px 0 6px}
/* ==========================================================================
   MOTION SYSTEM - every duration, easing and distance lives in these tokens.
   ========================================================================== */
:root{--dur-fast:.18s;--dur-base:.32s;--dur-slow:.6s;--dur-reveal:.9s;--ease-out:cubic-bezier(.22,.61,.36,1);--ease-in-out:cubic-bezier(.65,.05,.36,1);--ease-soft:cubic-bezier(.16,1,.3,1);--stagger:90ms;--reveal-shift:22px;--hover-lift:-2px;--press-scale:.98;--arrow-shift:3px;--focus-ring:3px solid #aa6d77;--focus-offset:5px;--ticker-duration:48s}
/* Header: compact + shadow once the announcement bar has scrolled away. The margin compensates the height so the page never shifts. */
.header{transition:box-shadow var(--dur-base) var(--ease-out),margin-bottom var(--dur-base) var(--ease-out)}.header__inner{transition:height var(--dur-base) var(--ease-out)}.wordmark{transform-origin:left center;transition:transform var(--dur-base) var(--ease-out)}.header.is-scrolled{box-shadow:0 14px 28px -20px rgba(52,30,30,.4);margin-bottom:18px}.header.is-scrolled .header__inner{height:74px}.header.is-scrolled .wordmark{transform:scale(.92)}
/* Navigation + language switch: underline draws in from the left, leaves to the right. */
.nav>a:not(.nav__cta),.lang-switch a{position:relative}.nav>a:not(.nav__cta)::after,.lang-switch a::after{content:"";position:absolute;left:0;right:0;bottom:7px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform var(--dur-base) var(--ease-out)}.lang-switch a::after{left:12px;right:12px;bottom:11px}.nav>a:not(.nav__cta):focus-visible::after,.nav>a[aria-current]:not(.nav__cta)::after,.lang-switch a:focus-visible::after{transform:scaleX(1);transform-origin:left}.nav>a[aria-current]:not(.nav__cta){color:var(--burgundy)}
/* Buttons: shared arrow behaviour, distinct characters per variant. */
.button>span[aria-hidden],.text-link>span[aria-hidden],.nav__cta>span[aria-hidden],.footer__top>span[aria-hidden]{display:inline-block;transition:transform var(--dur-base) var(--ease-soft)}
.nav .nav__cta{transition:background-color var(--dur-base) var(--ease-out),color var(--dur-base)}
.button--outline{background:linear-gradient(#f7ede5,#f7ede5) no-repeat bottom/100% 0;transition:background-size var(--dur-base) var(--ease-out),color var(--dur-base),border-color var(--dur-base),transform var(--dur-fast) var(--ease-out)}
.button:focus-visible>span[aria-hidden],.nav__cta:focus-visible>span[aria-hidden]{transform:translate(var(--arrow-shift),calc(var(--arrow-shift)*-1))}.text-link:focus-visible>span[aria-hidden]{transform:translate(var(--arrow-shift),var(--arrow-shift))}.button--outline:focus-visible{background-size:100% 100%;color:var(--burgundy)}
.button:active{transform:scale(var(--press-scale));transition-duration:var(--dur-fast)}.nav .nav__cta:active,.text-link:active{opacity:.85}
@media(hover:hover){
.nav>a:not(.nav__cta):hover::after,.lang-switch a:hover::after{transform:scaleX(1);transform-origin:left}
.button--dark:hover,.button--light:hover{transform:translateY(var(--hover-lift));box-shadow:0 16px 26px -14px rgba(50,30,36,.6)}.button--dark:active,.button--light:active{transform:scale(var(--press-scale));box-shadow:none}
.button:hover>span[aria-hidden],.nav__cta:hover>span[aria-hidden]{transform:translate(var(--arrow-shift),calc(var(--arrow-shift)*-1))}
.button--outline:hover{background-size:100% 100%;color:var(--burgundy);border-color:#f7ede5}
.text-link:hover{color:#8f555d}.text-link:hover::after{animation:link-redraw var(--dur-slow) var(--ease-in-out)}.text-link:hover>span[aria-hidden]{transform:translate(var(--arrow-shift),var(--arrow-shift))}
.footer__top:hover>span[aria-hidden]{transform:translateY(calc(var(--arrow-shift)*-1))}
.hero__logo-frame:hover img{transform:scale(1.03) rotate(2.5deg)}
.value-card:hover{background-color:#f9f4ef}.value-card:hover .value-card__icon{transform:rotate(24deg)}
.faq__items summary:hover{color:#8f555d}
.ticker:hover .ticker__track{animation-play-state:paused}
}
@keyframes link-redraw{0%{transform:scaleX(1);transform-origin:right}45%{transform:scaleX(0);transform-origin:right}46%{transform:scaleX(0);transform-origin:left}100%{transform:scaleX(1);transform-origin:left}}
/* Text-change animation (Nail Design Studio name + description). */
.is-changing{animation:mood-text var(--dur-slow) var(--ease-soft) both}
@keyframes mood-text{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
/* Brand asterisk (inline SVG, inherits colour and font-size). */
.star{display:inline-block;width:1em;height:1em;vertical-align:-.14em;fill:none;stroke:currentColor;stroke-width:1.4}
/* Hero copy: when its column is wide enough the headline recomposes into longer lines and is sized from the
   column itself (--fit = cqi per line, set per language), so the longest line ends ~10% before the column edge. */
.hero__copy{container:hero/inline-size}.br-wide{display:none}
@container hero (min-width:480px){.hero .hero__copy h1{font-size:clamp(60px,calc(var(--fit)*1cqi),124px);line-height:1.08}.br-wide{display:inline}.br-narrow{display:none}.hero__lead{max-width:min(90%,600px);font-size:clamp(16px,2.6cqi,19px)}}
/* Hero: the eyebrow rule draws itself once. */
.hero .eyebrow__line{transform-origin:left;animation:line-draw var(--dur-reveal) var(--ease-in-out) .35s both}@keyframes line-draw{from{transform:scaleX(0)}to{transform:scaleX(1)}}
/* Ticker: static by default; moves only with JS (pause control available) and when motion is welcome. */
@keyframes ticker{to{transform:translateX(-50%)}}
@keyframes hero-float{from{transform:rotate(-5deg) translateY(0)}to{transform:rotate(-3.2deg) translateY(-10px)}}@keyframes orbit-one{from{transform:rotate(20deg)}to{transform:rotate(380deg)}}@keyframes orbit-two{from{transform:rotate(35deg)}to{transform:rotate(-325deg)}}
@media(prefers-reduced-motion:no-preference){
html.js .ticker__track{width:max-content;animation:ticker var(--ticker-duration) linear infinite}html.js .ticker__group{min-width:100vw;flex-wrap:nowrap;justify-content:space-around;padding-block:0}html.js .ticker__group+.ticker__group{display:flex}html.js .ticker__group .ticker__star:last-child{display:inline}html.js .ticker.is-paused .ticker__track{animation-play-state:paused}
/* Hero artwork: after its entrance the logo floats almost imperceptibly, and a small bead travels along each orbit ring. */
html.js .hero__logo-frame{animation:hero-entrance 1.1s var(--ease-soft) both,hero-float 9s ease-in-out 1.1s infinite alternate}
html.js .hero__orbit::after{content:"";position:absolute;top:50%;left:-4px;width:7px;height:7px;border-radius:50%;background:#b57f72;opacity:.85}html.js .hero__orbit--two::after{width:5px;height:5px;left:-3px;background:#8f555d}
html.js .hero__orbit--one{animation:orbit-one 90s linear infinite}html.js .hero__orbit--two{animation:orbit-two 140s linear infinite}
html.js.motion-paused .hero__logo-frame,html.js.motion-paused .hero__orbit{animation-play-state:paused}
html.js .ticker__toggle{display:grid;place-items:center;position:absolute;inset:0 0 0 auto;width:68px;padding:0 0 0 24px;border:0;cursor:pointer;color:#713d42;background:linear-gradient(90deg,rgba(228,208,194,0),#e4d0c2 40%)}.ticker__toggle::before{content:"";box-sizing:content-box;width:4px;height:11px;border:solid currentColor;border-width:0 3px}.ticker__toggle[aria-pressed=true]::before{width:0;height:0;border-color:transparent transparent transparent currentColor;border-width:6px 0 6px 10px}.ticker__toggle:focus-visible{outline-offset:-9px}
/* Scroll reveals: hidden only when JS is confirmed running; each element animates once. */
html.js [data-reveal]{opacity:0;transform:translateY(var(--reveal-shift));transition:opacity var(--dur-reveal) var(--ease-out),transform var(--dur-reveal) var(--ease-soft);transition-delay:calc(var(--i,0)*var(--stagger))}html.js [data-reveal=fade]{transform:none}html.js [data-reveal].is-revealed{opacity:1;transform:none}
/* Curtain: a panel in the section colour lifts off the artwork. The element itself stays unclipped so it can be observed. */
html.js [data-reveal=curtain]{opacity:1;transform:none}html.js [data-reveal=curtain]::after{content:"";position:absolute;inset:-1px;z-index:5;background:var(--burgundy-dark);transform-origin:top;transition:transform 1.1s var(--ease-in-out);pointer-events:none}html.js [data-reveal=curtain].is-revealed::after{transform:scaleY(0)}
html.js .value-card[data-reveal].is-revealed{transition:opacity var(--dur-reveal) var(--ease-out),transform var(--dur-reveal) var(--ease-soft),background-color var(--dur-slow)}
html.js .section-index__rule{transform:scaleX(0);transform-origin:left;transition:transform var(--dur-reveal) var(--ease-in-out) .3s}html.js .section-index.is-revealed .section-index__rule{transform:scaleX(1)}
html.js .quote__inner::before,html.js .quote__inner::after{transform:scaleX(0);transition:transform 1.2s var(--ease-in-out) .2s}html.js .quote__inner::after{transition-delay:.4s}html.js .quote__inner.is-revealed::before,html.js .quote__inner.is-revealed::after{transform:scaleX(1)}
/* Quote: one composition - the star turns in, the outer lines rise, the italic line is written in between them. Children animate, the container does not. */
html.js .quote__inner[data-reveal]{opacity:1}html.js .quote__inner:not(.is-revealed) :is(.quote__star,.quote__line,.quote__aside){opacity:0}
html.js .quote__inner.is-revealed .quote__star{animation:quote-star 1.3s var(--ease-soft) backwards}
html.js .quote__inner.is-revealed .quote__line:nth-child(1){animation:quote-rise var(--dur-reveal) var(--ease-soft) .2s backwards}
html.js .quote__inner.is-revealed .quote__line:nth-child(2){animation:quote-write 1.3s var(--ease-in-out) .45s backwards}
html.js .quote__inner.is-revealed .quote__line:nth-child(3){animation:quote-rise 1.1s var(--ease-soft) .85s backwards}
html.js .quote__inner.is-revealed .quote__aside{animation:quote-fade var(--dur-reveal) var(--ease-out) 1.45s backwards}
/* Closing section: star, eyebrow, headline, the italic phrase written in and underlined, then the supporting copy; the foot rule closes the page. */
html.js .contact__inner[data-reveal]{opacity:1;transform:none}
html.js .contact__flower{opacity:0;transform:rotate(-120deg) scale(.5);transition:transform 1.4s var(--ease-soft) .15s,opacity var(--dur-reveal) var(--ease-out) .15s}html.js .contact__inner.is-revealed .contact__flower{opacity:1;transform:none}
html.js .contact__inner>:is(.eyebrow,h2,p,.contact__actions){opacity:0;transform:translateY(var(--reveal-shift));transition:opacity var(--dur-reveal) var(--ease-out) var(--d,0s),transform var(--dur-reveal) var(--ease-soft) var(--d,0s)}html.js .contact__inner.is-revealed>:is(.eyebrow,h2,p,.contact__actions){opacity:1;transform:none}
.contact__inner>.eyebrow{--d:.35s}.contact__inner>h2{--d:.5s}.contact__inner>p{--d:1.15s}.contact__inner>.contact__actions,.contact__inner>.contact__placeholder{--d:1.4s}
html.js .contact h2 em{clip-path:inset(-12% 100% -12% -6%);transition:clip-path 1.2s var(--ease-in-out) .95s}html.js .contact__inner.is-revealed h2 em{clip-path:inset(-12% -6% -12% -6%)}
html.js .contact h2 em::after{transform:scaleX(0);transition:transform 1.1s var(--ease-in-out) 1.85s}html.js .contact__inner.is-revealed h2 em::after{transform:scaleX(1)}
html.js .contact__foot[data-reveal]{opacity:1;border-top-color:transparent}html.js .contact__foot::before{content:"";position:absolute;left:0;right:0;top:-1px;height:1px;background:rgba(244,217,205,.2);transform:scaleX(0);transition:transform 1.4s var(--ease-in-out)}html.js .contact__foot.is-revealed::before{transform:scaleX(1)}
html.js .contact__foot>span{opacity:0;transition:opacity var(--dur-reveal) var(--ease-out) .7s}html.js .contact__foot.is-revealed>span{opacity:1}html.js .contact__foot.is-revealed>span:nth-child(2){animation:foot-heart 1.3s var(--ease-soft) 1.5s backwards}
}
@keyframes quote-star{from{opacity:0;transform:rotate(-90deg) scale(.6)}}@keyframes quote-rise{from{opacity:0;transform:translateY(.28em)}}@keyframes quote-fade{from{opacity:0}}
@keyframes quote-write{from{opacity:0;clip-path:inset(-10% 100% -10% -6%);transform:translateX(-.1em)}25%{opacity:1}to{clip-path:inset(-10% -6% -10% -6%)}}
@keyframes foot-heart{40%{transform:scale(1.4)}}
/* Quote + closing section: static parts of the interactions (valid without JS and with reduced motion). */
.quote__line{display:block;width:fit-content;margin-inline:auto;position:relative;cursor:default;transition:color var(--dur-slow) var(--ease-out)}.quote__line em{transition:color var(--dur-slow) var(--ease-out)}
.quote__line::after{content:"";position:absolute;left:.05em;right:.05em;bottom:.03em;height:1px;background:currentColor;opacity:.55;transform:scaleX(0);transform-origin:right;transition:transform var(--dur-slow) var(--ease-in-out)}
.quote__star{transition:transform var(--dur-reveal) var(--ease-soft)}
.contact h2 em{display:inline-block;position:relative}.contact h2 em::after{content:"";position:absolute;left:.03em;right:.06em;bottom:.03em;height:1px;background:currentColor;opacity:.5;transform-origin:left}
.contact__foot{position:relative}
@media(hover:hover) and (pointer:fine){
.quote p:has(.quote__line:hover) .quote__line:not(:hover),.quote p:has(.quote__line:hover) .quote__line:not(:hover) em{color:rgba(92,51,57,.38)}
.quote__line:hover::after{transform:scaleX(1);transform-origin:left}
.quote__inner:has(.quote__line:hover) .quote__star{transform:rotate(45deg)}
html.js .contact__inner.is-revealed .contact__flower:hover{transform:rotate(90deg);transition-delay:0s}
}
/* FAQ: the introduction stays in view beside the questions - only where it fits under the compact header. */
@media(min-width:761px) and (min-height:620px){.faq__grid{align-items:start}.faq__heading{position:sticky;top:114px}}
/* Floating controls: language (bottom left) + back to top (bottom right). Links first - JS only decides when they show. */
.dock__lang,.dock__top{position:fixed;z-index:9;bottom:calc(16px + env(safe-area-inset-bottom,0px));box-shadow:0 14px 26px -16px rgba(50,30,36,.6);transition:opacity var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-soft),background-color var(--dur-base) var(--ease-out)}
.dock__lang{left:calc(16px + env(safe-area-inset-left,0px));display:flex;padding:3px;background:var(--cream);border:1px solid rgba(86,43,50,.2);font-size:11px;font-weight:700;letter-spacing:.14em}
.dock__code{position:relative;display:grid;place-items:center;min-width:44px;height:40px;padding-left:.14em;color:#75605b;transition:color var(--dur-fast)}.dock__code[aria-current]{background:var(--burgundy);color:#f9eae2}
a.dock__code::after{content:"";position:absolute;left:13px;right:13px;bottom:10px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform var(--dur-base) var(--ease-out)}a.dock__code:focus-visible::after{transform:scaleX(1);transform-origin:left}
.dock__top{right:calc(16px + env(safe-area-inset-right,0px));width:48px;height:48px;display:grid;place-items:center;background:var(--burgundy);color:#f9eae2;border:1px solid rgba(249,233,223,.28)}
.dock__top svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.4;transition:transform var(--dur-base) var(--ease-soft)}
.dock a:focus-visible{outline-offset:2px;box-shadow:0 0 0 2px var(--cream)}.dock__top:active{transform:scale(var(--press-scale))}
@media(hover:hover){a.dock__code:hover{color:var(--burgundy)}a.dock__code:hover::after{transform:scaleX(1);transform-origin:left}.dock__top:hover{background:var(--burgundy-dark);transform:translateY(var(--hover-lift))}.dock__top:hover svg{transform:translateY(calc(var(--arrow-shift)*-1))}}
/* Visibility (JS only): back to top waits for .is-scrolled; each control steps aside while something interactive sits in its corner.
   A hidden control is visibility:hidden, so it also leaves the tab order; a control that holds keyboard focus is never taken away. */
html.js .dock:not(.is-scrolled) .dock__top:not(:focus-visible),html.js .dock.is-top-away .dock__top:not(:focus-visible),html.js .dock.is-lang-away .dock__lang:not(:focus-within){opacity:0;transform:translateY(12px);visibility:hidden;pointer-events:none;transition:opacity var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-soft),visibility 0s linear var(--dur-base)}
@media(max-height:430px){.dock__lang,.dock__top{bottom:calc(10px + env(safe-area-inset-bottom,0px))}}
@keyframes hero-entrance{from{opacity:0;transform:rotate(-9deg) scale(.93)}to{opacity:1;transform:rotate(-5deg) scale(1)}}
@media(max-width:1100px){.container{width:min(100% - 56px,1376px)}.hero__grid{grid-template-columns:1fr .94fr;min-height:680px}.hero h1{font-size:clamp(57px,6.3vw,85px)}.hero__visual{min-height:590px}.nav{gap:22px}.value-card{padding-inline:24px}.value-card__icon{right:24px}}
@media(min-width:761px) and (max-width:940px){.lang-switch{margin-left:auto}.nav{gap:18px;margin-left:14px}.nav>a{font-size:12px;white-space:nowrap}.nav .nav__cta{margin-left:2px;padding:14px 14px;gap:12px}}
@media(max-width:760px){html{scroll-padding-top:86px}.container{width:min(100% - 38px,640px)}.section{padding-block:86px}.announcement{font-size:10px;letter-spacing:.07em;gap:10px;min-height:33px}.header__inner{height:73px}.wordmark__symbol{font-size:41px}.menu-toggle{width:44px;height:44px;margin-left:8px;flex:none;border:1px solid #d8c6ba;display:flex;flex-direction:column;justify-content:center;gap:6px;align-items:center;background:transparent;cursor:pointer;position:relative;z-index:3}.menu-toggle{transition:border-color var(--dur-base),background-color var(--dur-base)}.menu-toggle[aria-expanded=true]{border-color:#b99a90}.menu-toggle:active{background:#eaddd2}.menu-toggle span{height:1px;width:19px;background:var(--burgundy);transition:rotate var(--dur-fast) var(--ease-out),translate var(--dur-fast) var(--ease-out) var(--dur-fast)}.menu-toggle[aria-expanded=true] span{transition:translate var(--dur-fast) var(--ease-out),rotate var(--dur-fast) var(--ease-out) var(--dur-fast)}.menu-toggle[aria-expanded=true] span:first-child{translate:0 3.5px;rotate:45deg}.menu-toggle[aria-expanded=true] span:last-child{translate:0 -3.5px;rotate:-45deg}.nav{display:flex;visibility:hidden;opacity:0;transform:translateY(-10px);pointer-events:none;position:absolute;top:100%;left:0;right:0;margin:0;padding:20px 19px 28px;background:#f5ede6;border-bottom:1px solid #d9c9be;box-shadow:0 16px 20px rgba(52,30,30,.07);flex-direction:column;align-items:stretch;gap:0;transition:opacity var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out),visibility 0s linear var(--dur-base)}.nav.is-open{visibility:visible;opacity:1;transform:none;pointer-events:auto;transition-delay:0s}.nav>a{padding:17px 12px;border-bottom:1px solid #e0d1c5;opacity:0;transform:translateY(-6px);transition:color var(--dur-fast),opacity var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-soft)}.nav.is-open>a{opacity:1;transform:none}.nav.is-open>a:nth-child(1){transition-delay:60ms}.nav.is-open>a:nth-child(2){transition-delay:105ms}.nav.is-open>a:nth-child(3){transition-delay:150ms}.nav.is-open>a:nth-child(4){transition-delay:195ms}.nav>a:not(.nav__cta)::after{left:12px;right:auto;width:26px;bottom:10px}.header.is-scrolled{margin-bottom:11px}.header.is-scrolled .header__inner{height:62px}.nav .nav__cta{margin:16px 0 0;justify-content:space-between}.hero__grid{display:flex;flex-direction:column;min-height:0}.hero__copy{padding:72px 0 65px}.hero h1{font-size:clamp(56px,10.3vw,85px);margin:26px 0 21px}.hero__lead{font-size:16px;max-width:440px}.hero__actions{gap:22px;margin-top:29px}.hero__footer{padding-top:56px}.hero__visual{min-height:0;aspect-ratio:1.03}.hero__logo-frame{width:min(82%,440px)}.hero__visual-top{top:34px}.hero__visual-bottom{bottom:32px;left:32px;right:32px}.ticker__group{min-height:56px}html:not(.js) .ticker__star{display:none}.intro__grid{display:block}.section-index{margin-bottom:30px}.intro h2{font-size:clamp(51px,9vw,80px)}.intro__bottom{align-items:start;flex-direction:column;gap:29px}.signature{align-self:flex-end}.values__header{text-align:left}.values h2{font-size:clamp(48px,8vw,70px)}.values__grid{display:block}.value-card{padding:25px 7px 35px;min-height:200px}.value-card+.value-card{border-left:0;border-top:1px solid var(--line)}.value-card__icon{right:7px;top:22px}.value-card h3{margin-top:39px;font-size:29px}.quote__inner{min-height:360px}.quote p{font-size:clamp(65px,12vw,95px)}.quote__aside{font-size:10px;line-height:1.8;text-align:center}.faq__grid{display:block}.faq__heading h2{font-size:clamp(48px,9vw,70px)}.faq__items{padding-top:36px}.contact{padding-bottom:28px}.contact__flower{margin-bottom:22px}.contact h2{font-size:clamp(65px,12vw,110px)}.contact__foot{margin-top:83px;font-size:10px;letter-spacing:.09em}.footer__inner{min-height:93px;flex-wrap:wrap;gap:4px 16px;padding-block:18px;font-size:12px}.footer__brand{font-size:25px}}
@media(max-width:390px){.container{width:calc(100% - 30px)}.hero h1{font-size:clamp(51px,10vw,62px)}.hero__actions{align-items:flex-start;flex-direction:column}.announcement__spark{display:none}.hero__footer{font-size:10px;letter-spacing:.14em}.contact__foot span:first-child{display:none}}
/* Narrowest phones: the statement scales with the screen so "Good mood." keeps to one line (65px again from 330px up). */
@media(max-width:340px){.quote p{font-size:clamp(56px,19.7vw,65px)}}
@media(max-width:760px) and (prefers-reduced-motion:reduce){.ticker__star{display:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-delay:0s!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0s!important}}
