/* ============================================================
   Diamond Nails — design tokens
   Color: void #0b0a08 / surface #17130f / surface-2 #221c15
          gold #c9a24b / gold-bright #f3d989 / ivory #f4efe4 / taupe #9c8f78
   Type: Bodoni Moda (display) + Sora (body / UI)
   Signature: faceted "gem" geometry + light-sweep sheen on scroll reveal
   ============================================================ */

*,*::before,*::after{box-sizing:border-box}
:root{
  --void:oklch(.055 0 0);
  --surface:#17130f;
  --surface-2:#221c15;
  --gold:#c9a24b;
  --gold-bright:#f3d989;
  --ivory:#f4efe4;
  --taupe:#9c8f78;
  --line:rgba(201,162,75,.18);
  --ease:cubic-bezier(.22,1,.36,1);
  --pad:clamp(1.5rem,5vw,4.5rem);
  --maxw:1360px;
  --f-display:'Bodoni Moda',serif;
  --f-body:'Sora',sans-serif;
}
html{scroll-behavior:auto}
body{margin:0;background:var(--void);color:var(--ivory);font-family:var(--f-body);
  font-weight:300;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
select,textarea,input{font:inherit;color:inherit}
::selection{background:var(--gold);color:var(--void)}

a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,
select:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--gold-bright);outline-offset:3px;border-radius:2px}

@media (prefers-reduced-motion: reduce){
  *{animation-duration:.01ms !important;animation-iteration-count:1 !important;
    transition-duration:.01ms !important;scroll-behavior:auto !important}
}

/* ---------- Loader ---------- */
.loader{position:fixed;inset:0;z-index:200;background:var(--void);
  display:flex;align-items:center;justify-content:center;transition:opacity .7s var(--ease)}
.loader.is-done{opacity:0;pointer-events:none}
.loader__facet{width:64px;height:64px;animation:facet-spin 2.4s var(--ease) infinite}
.loader__facet polygon{stroke-dasharray:340;stroke-dashoffset:340;animation:facet-draw 1.8s var(--ease) forwards}
@keyframes facet-draw{to{stroke-dashoffset:0}}
@keyframes facet-spin{0%,100%{transform:rotate(0)}50%{transform:rotate(8deg)}}

/* ---------- Custom cursor ---------- */
.cursor{position:fixed;top:0;left:0;width:34px;height:34px;border:1px solid var(--gold);
  border-radius:2px;transform:translate(-50%,-50%) rotate(45deg);pointer-events:none;z-index:150;
  transition:width .3s var(--ease),height .3s var(--ease),opacity .3s ease,border-color .3s ease;
  opacity:0;mix-blend-mode:difference}
.cursor.is-active{opacity:1}
.cursor.is-view{width:52px;height:52px}
.cursor.is-book{width:64px;height:64px;background:var(--gold);border-color:var(--gold)}
@media(max-width:900px){.cursor{display:none}}

/* ---------- Nav ---------- */
.nav{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;
  justify-content:space-between;padding:1.1rem var(--pad);background:rgba(11,10,8,.75);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--line);transition:padding .4s var(--ease)}
.nav__brand{display:flex;align-items:center;gap:.7rem}
.nav__logo{width:36px;height:36px;border-radius:50%;object-fit:cover}
.nav__name{font-family:var(--f-display);font-size:1.05rem;letter-spacing:.02em}
.nav__name em{color:var(--gold);font-style:italic}
.nav__links{display:flex;align-items:center;gap:2.2rem}
.nav__link{font-size:.82rem;letter-spacing:.04em;color:var(--taupe);position:relative;
  transition:color .3s ease}
.nav__link::after{content:"";position:absolute;left:0;bottom:-4px;width:0;height:1px;background:var(--gold);
  transition:width .35s var(--ease)}
.nav__link:hover{color:var(--ivory)}
.nav__link:hover::after{width:100%}
.nav__link--cta{color:var(--gold);border:1px solid var(--gold);padding:.55rem 1.2rem;border-radius:2px}
.nav__link--cta::after{display:none}
.nav__link--cta:hover{background:var(--gold);color:var(--void)}
.nav__burger{display:none;flex-direction:column;gap:5px;width:44px;height:44px;
  align-items:center;justify-content:center;z-index:120}
.nav__burger span{width:22px;height:1px;background:var(--ivory);transition:transform .3s var(--ease),opacity .3s ease}
@media(max-width:900px){
  .nav__links{display:none}
  .nav__burger{display:flex}
}
.nav__burger[aria-expanded="true"] span:nth-child(1){transform:translateY(3px) rotate(45deg)}
.nav__burger[aria-expanded="true"] span:nth-child(2){transform:translateY(-3px) rotate(-45deg)}

/* ---------- Mobile menu ---------- */
.mobile-menu{position:fixed;inset:0;width:100vw;height:100dvh;z-index:110;background:var(--void);
  display:flex;flex-direction:column;justify-content:space-between;padding:7rem var(--pad) 3rem;
  opacity:0;visibility:hidden;transition:opacity .45s var(--ease)}
.mobile-menu.is-open{opacity:1;visibility:visible}
.mobile-menu__links{display:flex;flex-direction:column;gap:1rem}
.mobile-menu__links a{font-family:var(--f-display);font-size:2.4rem;color:var(--ivory);
  padding:.5rem 0;border-bottom:1px solid var(--line);opacity:0;transform:translateY(16px);
  transition:opacity .5s var(--ease),transform .5s var(--ease)}
.mobile-menu.is-open .mobile-menu__links a{opacity:1;transform:translateY(0)}
.mobile-menu.is-open .mobile-menu__links a:nth-child(1){transition-delay:.05s}
.mobile-menu.is-open .mobile-menu__links a:nth-child(2){transition-delay:.1s}
.mobile-menu.is-open .mobile-menu__links a:nth-child(3){transition-delay:.15s}
.mobile-menu.is-open .mobile-menu__links a:nth-child(4){transition-delay:.2s}
.mobile-menu.is-open .mobile-menu__links a:nth-child(5){transition-delay:.25s}
.mobile-menu__cta{color:var(--gold) !important}
.mobile-menu__foot{display:flex;flex-direction:column;gap:.6rem;font-size:.85rem;color:var(--taupe)}
.mobile-menu__foot a{color:var(--taupe)}
body.menu-open{position:fixed;width:100%}

/* ---------- Layout helpers ---------- */
.eyebrow{display:inline-block;font-size:.72rem;letter-spacing:.28em;text-transform:uppercase;
  color:var(--gold);margin-bottom:1rem}
.section-head{max-width:var(--maxw);margin:0 auto;padding:0 var(--pad);margin-bottom:3.5rem}
.section-head--split{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;flex-wrap:wrap}
.section-head__link{font-size:.85rem;color:var(--gold);border-bottom:1px solid var(--gold);padding-bottom:.2rem}
.section-title{font-family:var(--f-display);font-weight:400;font-size:clamp(2rem,4vw,3.1rem);
  line-height:1.05;letter-spacing:-.01em}

/* ---------- Reveal ---------- */
[data-reveal],[data-reveal-line]{opacity:0;transform:translateY(28px);
  transition:opacity .9s var(--ease),transform .9s var(--ease)}
html.reveal-on [data-reveal].lit,html.reveal-on [data-reveal-line].lit{opacity:1;transform:translateY(0)}
.line{display:block;overflow:hidden}
.line>*{display:inline-block}

/* ---------- Hero ---------- */
.hero{min-height:100svh;position:relative;display:flex;align-items:center;
  padding:8rem var(--pad) 4rem;overflow:hidden}
.hero__facet-bg{position:absolute;inset:0;z-index:0;opacity:.5;
  background:
    radial-gradient(60% 50% at 78% 40%,rgba(201,162,75,.14),transparent 70%),
    linear-gradient(180deg,var(--void) 0%,#0d0b09 100%)}
.hero__frame{position:relative;z-index:2;max-width:640px}
.hero__title{font-family:var(--f-display);font-weight:400;font-size:clamp(3.2rem,9vw,6.4rem);
  line-height:.94;letter-spacing:-.02em;margin:0 0 1.6rem}
.hero__title .line--em em{font-style:italic;color:transparent;-webkit-text-stroke:1px var(--gold-bright)}
.hero__lede{max-width:38ch;font-size:clamp(1rem,1.4vw,1.15rem);color:var(--taupe);
  line-height:1.75;margin-bottom:2.6rem}
.hero__actions{display:flex;gap:1rem;flex-wrap:wrap}
.hero__scroll{position:absolute;bottom:2.2rem;left:var(--pad);display:flex;align-items:center;gap:1rem;
  font-size:.68rem;letter-spacing:.28em;text-transform:uppercase;color:var(--taupe);z-index:2}
.hero__scroll-line{width:56px;height:1px;background:rgba(201,162,75,.3);position:relative;overflow:hidden}
.hero__scroll-line::after{content:"";position:absolute;inset:0;background:var(--gold);
  animation:scrollline 2.4s var(--ease) infinite}
@keyframes scrollline{0%{transform:translateX(-100%)}60%,100%{transform:translateX(100%)}}

/* ---------- Signature: faceted gem ---------- */
.hero__gem{position:absolute;right:clamp(-6%,2vw,6%);top:50%;transform:translateY(-50%);
  width:min(46vw,460px);z-index:1;filter:drop-shadow(0 30px 60px rgba(0,0,0,.6))}
.gem__svg{width:100%;height:auto;overflow:visible}
.gem__face{fill:var(--surface);stroke:var(--line);stroke-width:1}
.gem__face--1{fill:var(--surface-2)}
.gem__line{stroke:var(--line);stroke-width:1}
.hero__photo-slot{position:absolute;inset:8% 12%;clip-path:polygon(50%,2%,96%,26%,96%,74%,50%,98%,4%,74%,4%,26%);
  background:linear-gradient(160deg,var(--surface) 0%,var(--surface-2) 100%);
  display:flex;align-items:center;justify-content:center;text-align:center;
  border:1px dashed var(--line)}
.hero__photo-slot span{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--taupe);
  padding:0 1.5rem}
@media(min-width:901px){
  html.reveal-on .hero__gem{animation:gem-sheen 6s var(--ease) 1.4s infinite}
}
@keyframes gem-sheen{
  0%,100%{filter:drop-shadow(0 30px 60px rgba(0,0,0,.6)) brightness(1)}
  50%{filter:drop-shadow(0 30px 60px rgba(0,0,0,.6)) brightness(1.12)}
}
@media(max-width:900px){
  .hero__gem{position:relative;right:auto;top:auto;transform:none;width:100%;margin-top:3rem}
  .hero{flex-direction:column;justify-content:flex-start;padding-top:7rem}
}

/* ---------- Marquee ---------- */
.marquee{border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  padding:1.1rem 0;overflow:hidden;background:var(--surface)}
.marquee__track{display:flex;gap:2.2rem;white-space:nowrap;width:max-content;
  animation:marquee 26s linear infinite;font-family:var(--f-display);font-style:italic;
  font-size:1.2rem;color:var(--taupe)}
.marquee__track i{color:var(--gold);font-style:normal;font-size:.8rem}
@keyframes marquee{to{transform:translateX(-50%)}}

/* ---------- Services ---------- */
.services{padding:7rem 0}
.services__grid{max-width:var(--maxw);margin:0 auto;padding:0 var(--pad);
  display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}
.service-card{position:relative;padding:2.4rem 2rem;background:var(--surface);
  border:1px solid var(--line);transition:border-color .4s ease,transform .4s var(--ease)}
.service-card:hover{border-color:var(--gold);transform:translateY(-4px)}
.service-card__facet{position:absolute;top:-1px;right:-1px;width:28px;height:28px;
  background:linear-gradient(135deg,var(--gold) 0 50%,transparent 50%);opacity:.85}
.service-card h3{font-family:var(--f-display);font-weight:400;font-size:1.3rem;margin:0 0 .8rem}
.service-card p{color:var(--taupe);font-size:.92rem;line-height:1.65;margin:0 0 1.4rem}
.service-card__price{font-size:.78rem;letter-spacing:.1em;color:var(--gold);text-transform:uppercase}
.service-card--cta{background:transparent;border-style:dashed;display:flex;flex-direction:column;
  justify-content:center}
@media(max-width:900px){.services__grid{grid-template-columns:1fr}}
@media(min-width:901px) and (max-width:1200px){.services__grid{grid-template-columns:repeat(2,1fr)}}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;padding:1rem 2rem;
  font-size:.82rem;letter-spacing:.06em;text-transform:uppercase;border-radius:2px;
  transition:transform .3s var(--ease),background .3s ease,color .3s ease,border-color .3s ease}
.btn--solid{background:var(--gold);color:var(--void)}
.btn--solid:hover{background:var(--gold-bright)}
.btn--ghost{border:1px solid var(--line);color:var(--ivory)}
.btn--ghost:hover{border-color:var(--gold);color:var(--gold)}
.btn--outline-sm{padding:.7rem 1.3rem;font-size:.75rem;border:1px solid var(--gold);color:var(--gold)}
.btn--outline-sm:hover{background:var(--gold);color:var(--void)}
.btn--wide{width:100%}

/* ---------- Portfolio / gallery ---------- */
.portfolio{padding:7rem 0}
.gallery{max-width:var(--maxw);margin:0 auto;padding:0 var(--pad);
  display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:180px;gap:1rem}
.gallery__item{position:relative;overflow:hidden}
.gallery__item--big{grid-column:span 2;grid-row:span 2}
.gallery__slot{position:relative;width:100%;height:100%;background:linear-gradient(160deg,var(--surface),var(--surface-2));
  border:1px solid var(--line);display:flex;align-items:center;justify-content:center;overflow:hidden}
.gallery__slot::after{content:"";position:absolute;inset:0;transform:translateX(-120%) skewX(-15deg);
  background:linear-gradient(90deg,transparent,rgba(243,217,137,.14),transparent);transition:transform .8s var(--ease)}
.gallery__item:hover .gallery__slot::after{transform:translateX(120%) skewX(-15deg)}
.gallery__slot span{font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:var(--taupe)}
@media(max-width:900px){
  .gallery{grid-template-columns:repeat(2,1fr);grid-auto-rows:140px}
  .gallery__item--big{grid-column:span 2;grid-row:span 1;aspect-ratio:16/10;height:auto}
}

/* ---------- Atelier ---------- */
.atelier{max-width:var(--maxw);margin:0 auto;padding:7rem var(--pad);
  display:grid;grid-template-columns:.9fr 1.1fr;gap:4rem;align-items:center}
.atelier__slot{aspect-ratio:4/5;background:linear-gradient(160deg,var(--surface),var(--surface-2));
  border:1px solid var(--line);display:flex;align-items:center;justify-content:center;
  clip-path:polygon(0 6%,100% 0,100% 94%,0 100%)}
.atelier__slot span{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--taupe)}
.atelier__content p{color:var(--taupe);line-height:1.75;max-width:46ch}
.atelier__stats{display:flex;gap:2.4rem;margin-top:2.2rem;flex-wrap:wrap}
.stat{display:flex;flex-direction:column;gap:.3rem}
.stat__num{font-family:var(--f-display);font-size:1.7rem;color:var(--gold)}
.stat__label{font-size:.72rem;letter-spacing:.06em;color:var(--taupe);text-transform:uppercase}
@media(max-width:900px){.atelier{grid-template-columns:1fr;padding-top:5rem;padding-bottom:5rem}}

/* ---------- Reviews ---------- */
.reviews{padding:7rem 0;background:var(--surface)}
.reviews__track{max-width:var(--maxw);margin:0 auto;padding:0 var(--pad);
  display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}
.review-card{padding:2.2rem;border:1px solid var(--line);background:var(--void)}
.review-card__stars{color:var(--gold);letter-spacing:.15em;margin-bottom:1rem;font-size:.9rem}
.review-card p{color:var(--ivory);font-size:.95rem;line-height:1.7;margin:0 0 1.2rem}
.review-card__name{font-size:.75rem;letter-spacing:.08em;color:var(--taupe);text-transform:uppercase}
@media(max-width:900px){.reviews__track{grid-template-columns:1fr}}

/* ---------- Booking ---------- */
.booking{max-width:var(--maxw);margin:0 auto;padding:7rem var(--pad);
  display:grid;grid-template-columns:.85fr 1.15fr;gap:4rem}
.booking__info p{color:var(--taupe);line-height:1.75;max-width:42ch;margin-bottom:2.2rem}
.booking__contact{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1.2rem}
.booking__contact li{display:flex;flex-direction:column;gap:.3rem;border-top:1px solid var(--line);padding-top:1rem}
.booking__contact-label{font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold)}
.booking__contact a{color:var(--ivory);transition:color .3s ease}
.booking__contact a:hover{color:var(--gold)}

.form{display:flex;flex-direction:column;gap:1.5rem}
.form__row{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}
.field{position:relative}
.field input,.field select,.field textarea{width:100%;background:transparent;border:none;
  border-bottom:1px solid var(--line);padding:.9rem 0;color:var(--ivory);outline:none;
  transition:border-color .3s ease}
.field textarea{resize:vertical;min-height:4rem}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--gold)}
.field label{position:absolute;left:0;top:.9rem;color:var(--taupe);font-size:.95rem;
  pointer-events:none;transition:transform .25s var(--ease),font-size .25s var(--ease),color .25s ease}
.field input:focus + label,.field input:not(:placeholder-shown) + label,
.field textarea:focus + label,.field textarea:not(:placeholder-shown) + label,
.field select:focus + label,.field select:valid + label{
  transform:translateY(-1.4rem);font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--gold)}
.field select{appearance:none;-webkit-appearance:none;color:var(--taupe)}
.field select:valid{color:var(--ivory)}
.checkbox{display:flex;align-items:flex-start;gap:.7rem;font-size:.82rem;color:var(--taupe);cursor:pointer}
.checkbox input{margin-top:.2rem;accent-color:var(--gold)}
.form__status{min-height:1.4rem;font-size:.85rem;color:var(--gold-bright);margin:0}
.form__status.is-error{color:#e5877a}
@media(max-width:900px){
  .booking{grid-template-columns:1fr;padding-top:5rem;padding-bottom:5rem}
  .form__row{grid-template-columns:1fr}
}

/* ---------- Footer ---------- */
.footer{border-top:1px solid var(--line);padding:3.5rem var(--pad) 2rem}
.footer__top{max-width:var(--maxw);margin:0 auto;display:flex;justify-content:space-between;
  align-items:center;flex-wrap:wrap;gap:2rem;padding-bottom:2.2rem;border-bottom:1px solid var(--line)}
.footer__brand{display:flex;align-items:center;gap:.7rem;font-family:var(--f-display);font-size:1.1rem}
.footer__brand em{color:var(--gold);font-style:italic}
.footer__logo{width:34px;height:34px;border-radius:50%;object-fit:cover}
.footer__links{display:flex;gap:1.6rem;flex-wrap:wrap}
.footer__links a{font-size:.82rem;color:var(--taupe)}
.footer__links a:hover{color:var(--gold)}
.footer__bottom{max-width:var(--maxw);margin:0 auto;display:flex;justify-content:space-between;
  align-items:center;flex-wrap:wrap;gap:1rem;padding-top:1.6rem;font-size:.75rem;color:var(--taupe)}
.footer__bottom a{color:var(--gold)}
