/* Nails and Beauty by Mary May: sample concept. Hand-built, no framework.
   Type scale ~1.25: 16 / 18 / 22 / 28 / 35 / 44 / 55 / 69. Spacing scale: 4 / 8 / 16 / 24 / 32 / 48 / 64 / 96. */

@font-face{font-family:"Caprasimo";src:url("../fonts/caprasimo.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Quicksand";src:url("../fonts/quicksand.woff2") format("woff2");font-weight:500 700;font-display:swap}

/* The polish colour is a registered property so a swatch tap cross-fades the whole page. */
@property --accent{syntax:"<color>";inherits:true;initial-value:#B3174F}
@property --on-accent{syntax:"<color>";inherits:true;initial-value:#FFFFFF}

:root{
  --blush:#FBEFEA; --ink:#2B1020; --pist:#B7E4C7; --paper:#FFFFFF;
  --accent:#B3174F; --on-accent:#FFFFFF;
  --head:"Caprasimo",Georgia,serif; --body:"Quicksand",system-ui,sans-serif;
  --s1:4px;--s2:8px;--s3:16px;--s4:24px;--s5:32px;--s6:48px;--s7:64px;--s8:96px;
  --wrap:1200px; --gut:24px;
  transition:--accent .25s ease,--on-accent .25s ease;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--blush);color:var(--ink);font:500 18px/1.65 var(--body);overflow-x:hidden;padding-bottom:76px}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
h1,h2,h3{font-family:var(--head);font-weight:400;margin:0;line-height:1.1;text-wrap:balance}
h1{font-size:39px}
h2{font-size:28px}
h3{font-size:22px}
p{margin:0 0 var(--s3)}
.small{font-size:16px;font-weight:600}
.wrap{width:min(100% - var(--gut)*2,var(--wrap));margin-inline:auto}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* One focus ring that reads on light, dark and accent backgrounds */
:focus-visible{outline:3px solid var(--ink);outline-offset:2px;box-shadow:0 0 0 2px var(--blush);border-radius:4px}
.skip{position:absolute;left:var(--s3);top:-80px;background:var(--ink);color:var(--blush);padding:var(--s2) var(--s3);z-index:50;border-radius:8px}
.skip:focus{top:var(--s3)}

/* Buttons: accent only on the main action */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);min-height:48px;padding:10px 24px;font:700 18px/1 var(--body);text-decoration:none;border:2px solid var(--ink);border-radius:999px;background:var(--paper);color:var(--ink);transition:transform .2s ease,background-color .2s ease;cursor:pointer}
.btn:hover{transform:translateY(-2px) rotate(-1deg)}
.btn--main{background:var(--accent);color:var(--on-accent)}
.btn--ink{background:var(--ink);color:var(--blush)}
.btn svg{width:20px;height:20px;flex:none}

/* Header */
.top{padding:var(--s3) 0}
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:var(--s3)}
.brand{min-height:44px;display:flex;align-items:center;gap:var(--s2);text-decoration:none;line-height:1.1}
.brand svg{width:22px;height:32px;flex:none}
.brand{white-space:nowrap}
.brand b{display:block;font:400 18px/1.1 var(--head)}
.brand span{display:block;font-size:16px;font-weight:600}
.nav{display:none}
.nav a:not(.btn){font-weight:700;text-decoration:none;padding:12px 4px;margin-right:var(--s4);background:linear-gradient(var(--accent),var(--accent)) 0 100%/0 3px no-repeat;transition:background-size .25s ease}
.nav a:not(.btn):hover{background-size:100% 3px}

/* Hero: the inspo wall */
.hero{position:relative;padding:var(--s3) 0 var(--s6);overflow-x:clip}
.hero .wrap{display:grid;gap:var(--s5)}
.kicker{display:inline-block;background:var(--pist);padding:4px 16px;border-radius:999px 999px 999px 4px;font-weight:700;font-size:16px;transform:rotate(-2deg);margin-bottom:var(--s3)}
.hero h1 .mark{position:relative;white-space:nowrap;z-index:0}
.hero h1 .mark::before{content:"";position:absolute;inset:55% -6px 0 -6px;background:var(--pist);z-index:-1;border-radius:60% 40% 55% 45%/60% 50% 50% 40%;transform:rotate(-1.5deg)}
.hero .lede{margin-top:var(--s3);max-width:34ch}
.cta{display:flex;flex-wrap:wrap;gap:var(--s3);margin-top:var(--s4)}
.hero-bow{position:absolute;width:56px;right:var(--gut);top:4px;transform:rotate(12deg);pointer-events:none}
.hero-bow path{fill:var(--accent)}

.wall{position:relative;container-type:inline-size}
.cards{list-style:none;margin:0;padding:var(--s3) var(--gut) var(--s4);display:flex;gap:var(--s3);overflow-x:auto;scroll-snap-type:x mandatory;margin-inline:calc(var(--gut)*-1)}
.card{flex:0 0 64%;scroll-snap-align:center;background:var(--paper);padding:10px 10px 26px;box-shadow:0 10px 24px -10px rgba(43,16,32,.45);transform:rotate(var(--r,0deg));position:relative;animation:settle .9s cubic-bezier(.34,1.56,.64,1) both;animation-delay:calc(var(--i,0)*90ms)}
.card:nth-child(even){margin-top:var(--s4)}
.card img{width:100%;height:auto;aspect-ratio:3/4;object-fit:cover}
.card::before{content:"";position:absolute;top:-12px;left:50%;width:76px;height:24px;margin-left:-38px;background:rgba(183,228,199,.9);transform:rotate(var(--t,-4deg));clip-path:polygon(0 0,100% 0,96% 25%,100% 50%,96% 75%,100% 100%,0 100%,4% 75%,0 50%,4% 25%)}
.card:nth-child(3n+2)::before{background:rgba(244,182,199,.92)}
.card:nth-child(3n)::before{background:rgba(255,255,255,.78);box-shadow:0 0 0 1px rgba(43,16,32,.12)}
.card{transition:transform .3s cubic-bezier(.34,1.56,.64,1),box-shadow .3s}
.card:hover{transform:rotate(0deg) translateY(-8px) scale(1.03);z-index:5;box-shadow:0 18px 30px -12px rgba(43,16,32,.5)}
@keyframes settle{0%{transform:translateY(40px) rotate(calc(var(--r,0deg)*-3)) scale(.9)}100%{transform:rotate(var(--r,0deg))}}

/* Polish swatch bar */
.polish{background:var(--paper);border-block:2px solid var(--ink);position:relative;z-index:3}
.polish .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s5);padding-block:var(--s3)}
.polish h2{font-size:22px;flex:1 1 220px}
.polish h2 small{display:block;font:600 16px/1.4 var(--body)}
.swatches{display:flex;gap:var(--s1);border:0;margin:0;padding:0}
.swatch{position:relative;display:block}
.swatch input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer;width:100%;height:100%}
.swatch svg{display:block;width:48px;height:64px;transition:transform .25s cubic-bezier(.34,1.56,.64,1);overflow:visible}
.swatch .gloss{fill:#fff;opacity:.45}
.swatch .shape{stroke:var(--ink);stroke-width:0}
.swatch:hover svg{transform:translateY(-4px) rotate(-4deg)}
.swatch input:checked + svg{transform:translateY(-8px) scale(1.12)}
.swatch input:checked + svg .shape{stroke-width:3}
.swatch input:focus-visible + svg{outline:3px solid var(--ink);outline-offset:3px;border-radius:8px;box-shadow:0 0 0 2px var(--blush)}
.polish-name{font-weight:700;min-width:11ch}

/* Services: diagonal blackcurrant band */
.band{background:var(--ink);color:var(--blush);clip-path:polygon(0 40px,100% 0,100% calc(100% - 40px),0 100%);padding:calc(var(--s8) + 84px) 0 calc(var(--s8) + 24px);margin-top:-48px;position:relative}
.band .wrap{display:grid;gap:var(--s6)}
.band h2{font-size:22px;font-family:var(--body);font-weight:700;color:var(--pist);letter-spacing:.04em;text-transform:uppercase}
.svc{list-style:none;margin:var(--s3) 0 0;padding:0}
.svc li{border-top:2px solid rgba(251,239,234,.28);padding:var(--s3) 0;display:flex;align-items:baseline;gap:var(--s3);transition:transform .3s cubic-bezier(.34,1.56,.64,1)}
.svc li:last-child{border-bottom:2px solid rgba(251,239,234,.28)}
.svc li:hover{transform:translateX(12px)}
.svc .w{font:400 39px/1 var(--head)}
.svc i{width:14px;height:22px;flex:none;background:var(--pist);clip-path:polygon(50% 0,85% 35%,100% 100%,0 100%,15% 35%);align-self:center;transition:background-color .25s}
.svc li:hover i{background:var(--accent)}
.svc em{display:block;font:600 16px/1.4 var(--body);font-style:normal;color:var(--pist);margin-top:6px}
.lash{position:relative;width:min(320px,calc(100% - 24px));justify-self:end;margin-right:var(--s3)}
.lash img{width:100%;height:auto;aspect-ratio:3/4;object-fit:cover;clip-path:url(#almond)}
.lash .tag{position:absolute;left:-16px;bottom:48px;transform:rotate(-6deg)}
.tag{white-space:nowrap;display:inline-block;background:var(--pist);color:var(--ink);font:700 16px/1 var(--body);padding:8px 14px;border-radius:999px 999px 999px 4px;border:2px solid var(--ink)}
.spark{position:absolute;width:44px;fill:var(--pist);pointer-events:none}

/* Photo wall: sits between hero and services, last photos hang over the band edge */
.photos{padding:var(--s5) 0 0;position:relative;z-index:3}
.photos h2{margin-bottom:var(--s5);max-width:16ch}
.wallgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s3);align-items:start}
.pic{margin:0;position:relative;translate:0 var(--dm,0px);transform:rotate(var(--r,0deg));transition:transform .3s cubic-bezier(.34,1.56,.64,1)}
.pic:hover{transform:rotate(0) scale(1.03);z-index:2}
.pic img{width:100%;height:auto;object-fit:cover;aspect-ratio:var(--ar,3/4);box-shadow:0 8px 20px -10px rgba(43,16,32,.5)}
.pic .tag{position:absolute;left:8px;bottom:-12px;transform:rotate(-3deg);font-size:16px}
.pic--almond img{clip-path:url(#almond);box-shadow:none}
.pic:nth-child(2){--dm:28px}
.pic:nth-child(4){--dm:64px}
.pic:nth-child(5){--dm:72px;grid-column:1}
.reveal{opacity:1}
/* Progressive enhancement: where scroll-driven animation exists, photos drift up into place. Transform only, never opacity, so nothing can be blank. */
@keyframes drift{from{transform:translateY(28px) rotate(var(--r,0deg))}to{transform:translateY(0) rotate(var(--r,0deg))}}
@supports (animation-timeline:view()){
  .reveal{animation:drift linear both;animation-timeline:view();animation-range:entry 0% entry 70%}
  .reveal:hover{animation:none}
}

/* Kind words */
.words{padding:var(--s6) 0 var(--s8);position:relative}
.words h2{margin-bottom:var(--s7)}
.words blockquote{margin:0 0 var(--s7);padding-top:56px;position:relative;font:600 22px/1.5 var(--body);max-width:30ch}
.words blockquote::before{content:"\201C";position:absolute;left:-4px;top:-6px;font:400 96px/1 var(--head);color:var(--accent);z-index:0}
.words blockquote p{position:relative;z-index:1;margin:0}
.words cite{display:block;position:relative;z-index:1;margin-top:var(--s3);font:700 16px/1.4 var(--body);font-style:normal}
.words blockquote:nth-of-type(2){margin-left:var(--s5);background:var(--pist);padding:64px var(--s4) var(--s4);border-radius:4px 40px 4px 40px;transform:rotate(1deg)}
.words blockquote:nth-of-type(2)::before{color:var(--ink);left:20px;top:2px}

/* Contact band takes the polish colour */
.visit{background:var(--accent);color:var(--on-accent);padding:var(--s7) 0 var(--s8);position:relative;overflow:hidden}
.visit h2{font-size:35px;max-width:14ch;margin-bottom:var(--s4)}
.visit a{color:var(--on-accent)}
.visit .phone{padding:8px 0 4px;font:400 28px/1.2 var(--head);text-decoration:none;display:inline-block;margin-bottom:var(--s3);border-bottom:3px solid currentColor}
.visit .flow{font:400 22px/1.3 var(--head);margin:0 0 var(--s3)}
.visit dl{margin:var(--s4) 0;display:grid;gap:var(--s3)}
.visit dt{font-weight:700;font-size:16px;text-transform:uppercase;letter-spacing:.06em;opacity:.95}
.visit dd{margin:0}
.visit .btn{border-color:var(--ink)}
.visit .btn--ink{background:var(--ink);color:var(--blush)}
.visit .btn--light{background:var(--blush);color:var(--ink)}
.visit .links{display:flex;flex-wrap:wrap;gap:var(--s4);margin-top:var(--s4);font-weight:700}
.visit .links a{padding:12px 0;display:inline-block}
.visit .big-almond{position:absolute;width:260px;right:-60px;bottom:-60px;opacity:.18;fill:var(--on-accent);pointer-events:none;transform:rotate(18deg)}

footer{background:var(--ink);color:var(--blush);padding:var(--s5) 0}
footer .wrap{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s4);justify-content:space-between;font-size:16px;font-weight:600}
footer p{margin:0}

/* Sticky Instagram/Facebook bar on phones */
.dock{position:fixed;inset:auto 0 0 0;z-index:30;display:flex;gap:var(--s2);padding:var(--s2) var(--s3) calc(var(--s2) + env(safe-area-inset-bottom));background:var(--ink);border-top:2px solid var(--pist)}
.dock .btn{flex:1;min-height:48px}
.dock .btn--text{background:var(--blush);color:var(--ink)}
.dock .btn--main{border-color:var(--blush)}
.dock :focus-visible{outline-color:var(--blush);box-shadow:0 0 0 2px var(--ink)}
.band :focus-visible,footer :focus-visible{outline-color:var(--blush);box-shadow:0 0 0 2px var(--ink)}

/* Tablet and up */
@media (min-width:760px){
  body{padding-bottom:0}
  .dock{display:none}
  h1{font-size:55px} h2{font-size:35px}
  .nav{display:flex;align-items:center;flex-shrink:0}
  .nav a:not(.btn){display:none}
  .brand b{font-size:22px}
  .hero{padding:var(--s3) 0 var(--s6)}
  .hero .wrap{grid-template-columns:minmax(0,1fr) minmax(0,1.08fr);align-items:center;gap:var(--s6)}
  .hero-bow{width:112px;top:0;right:12%}
  .cards{display:block;position:relative;padding:0;margin:0;overflow:visible;aspect-ratio:1/.98;min-width:0}
  .card{position:absolute;flex:none;width:var(--w);left:var(--x);top:var(--y);margin:0!important;padding:8px 8px 24px}
  .card:nth-child(1){--w:41cqw;--x:0;--y:5cqw;--r:-6deg;--i:0}
  .card:nth-child(2){--w:37cqw;--x:33cqw;--y:0;--r:4deg;--i:1}
  .card:nth-child(3){--w:40cqw;--x:74cqw;--y:20cqw;--r:7deg;--i:2}
  .card:nth-child(4){--w:36cqw;--x:12cqw;--y:42cqw;--r:-3deg;--i:3}
  .card:nth-child(5){--w:33cqw;--x:50cqw;--y:47cqw;--r:-8deg;--i:4}
  .polish h2{font-size:28px}
  .swatch svg{width:56px;height:76px}
  .band{clip-path:polygon(0 80px,100% 0,100% calc(100% - 80px),0 100%);padding:calc(var(--s8) + 150px) 0 calc(var(--s8) + 64px);margin-top:-60px}
  .band .wrap{grid-template-columns:1.5fr 1fr;align-items:center}
  .svc .w{font-size:69px}
  .svc em{font-size:18px}
  .photos{padding-top:var(--s4)}
  .pic,.pic:nth-child(n){translate:0 var(--dy,0px)}
  .pic:nth-child(5){grid-column:auto}
  .wallgrid{grid-template-columns:1.2fr 1fr 1.1fr 1fr 1.1fr;gap:var(--s5)}
  .words .wrap{display:grid;grid-template-columns:1fr 1fr;column-gap:var(--s7)}
  .words h2{grid-column:1/-1}
    .words blockquote:nth-of-type(2){margin-top:var(--s7)}
  .visit .wrap{display:grid;grid-template-columns:1.1fr 1fr;gap:var(--s7);align-items:end}
  .visit h2{font-size:44px}
}

/* Reduced motion: still pictures, no tilt settling, instant colour change */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  :root{transition:none}
  .card{animation:none}
  .card,.pic,.btn,.svc li,.swatch svg,.nav a{transition:none}
  .btn:hover,.svc li:hover,.card:hover,.pic:hover,.swatch:hover svg{transform:none}
  .card:hover{transform:rotate(var(--r,0deg))}
  .reveal{animation:none!important}
}

/* Header: full nav only where it fits on one line */
@media (min-width:1040px){ .nav a:not(.btn){display:inline-block} }
/* Bow would crowd the pill on very narrow phones */
@media (max-width:400px){ .hero-bow{display:none} }
@media (max-width:359px){ .swatch svg{width:44px;height:60px} .swatches{gap:1px} }
@media (max-width:374px){ .visit .phone{font-size:19px;overflow-wrap:anywhere;display:inline-block;min-height:44px;padding-block:10px} }
