/* ============================================================
   CASA GGIÙ — sketchbook edition
   ink on paper · hand-drawn · chalkboard chapter
   ============================================================ */
:root{
  --paper:#f3efe3;
  --paper-2:#ede7d6;
  --paper-card:#fbf9f2;
  --paper-photo:#f6f2e6;
  --ink:#23221b;
  --pencil:#67665a;
  --rosso:#a63229;
  --olive:#a2a24b;
  --peach:#f0c9a8;
  --hl:rgba(162,162,75,.38);
  --hl-red:rgba(166,50,41,.22);
  --board:#5c5e2c;
  --chalk:#f4f0e4;
  --chalk-60:rgba(243,239,227,.82);
  --line-soft:rgba(35,34,27,.22);
  --line-chalk:rgba(243,239,227,.34);
  --hand:'Caveat Brush',cursive;
  --script:'Caveat',cursive;
  --body:'Karla',-apple-system,sans-serif;
  --ez:cubic-bezier(.19,1,.22,1);
  --wob:255px 18px 225px 18px/18px 225px 18px 255px;
  --wob2:18px 225px 18px 255px/225px 18px 255px 18px;
  --pad:clamp(20px,4.6vw,84px);
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{scroll-behavior:smooth;overflow-x:hidden;overflow-x:clip}
body{font-family:var(--body);background:var(--paper);color:var(--ink);font-size:16.5px;line-height:1.68;overflow-x:hidden;overflow-x:clip;-webkit-font-smoothing:antialiased}
body.locked{overflow:hidden}
::selection{background:var(--hl);color:var(--ink)}
::-webkit-scrollbar{width:11px}
::-webkit-scrollbar-track{background:var(--paper)}
::-webkit-scrollbar-thumb{background:#cfc7ad;border:3px solid var(--paper);border-radius:10px}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
button{font:inherit;background:none;border:none;cursor:pointer;color:inherit}
h1,h2,h3{font-family:var(--hand);font-weight:400;line-height:1.12;letter-spacing:.004em}
section{position:relative}
[id]{scroll-margin-top:92px}
.wrap{max-width:1380px;margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}
a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--rosso);outline-offset:4px}
.chalk-s a:focus-visible,.chalk-s button:focus-visible{outline-color:var(--peach)}
.skip-link{position:fixed;left:16px;top:14px;z-index:300;background:var(--ink);color:var(--paper);padding:10px 16px;border:2px solid var(--paper);border-radius:var(--wob);font-weight:700;transform:translateY(-180%);transition:transform .25s var(--ez)}
.skip-link:focus{transform:none}
#main-content:focus{outline:none}

/* paper grain */
.grain{position:fixed;inset:-25%;z-index:120;pointer-events:none;opacity:.55;will-change:transform;
  background-image:url("../images/paper-grain.svg");
  animation:grain 8s steps(6) infinite}
@keyframes grain{0%,100%{transform:translate(0,0)}20%{transform:translate(-4%,3%)}40%{transform:translate(3%,-4%)}60%{transform:translate(-3%,-3%)}80%{transform:translate(4%,4%)}}

/* handwritten eyebrow */
.eyebrow{font-family:var(--script);font-size:22px;font-weight:600;color:var(--rosso);display:flex;align-items:center;gap:12px;letter-spacing:.02em}
.eyebrow svg{width:34px;height:14px;flex:none}
.eyebrow svg path{stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round}
.chalk-s .eyebrow{color:var(--olive)}

/* marker highlight sweep */
.hl{background-image:linear-gradient(var(--hl),var(--hl));background-repeat:no-repeat;background-size:0% 46%;background-position:0 68%;transition:background-size 1s .25s var(--ez);padding:0 .08em;border-radius:2px}
.hl.red{background-image:linear-gradient(var(--hl-red),var(--hl-red))}
.in .hl,.hl.in{background-size:100% 46%}

/* scribble underline (draws on reveal) */
.scrib{display:block;width:min(280px,56%);height:12px;margin-top:8px}
.scrib path{stroke:var(--rosso);fill:none;stroke-width:2.4;stroke-linecap:round;stroke-dasharray:320;stroke-dashoffset:320;transition:stroke-dashoffset 1.3s .3s var(--ez)}
.in .scrib path,.scrib.in path{stroke-dashoffset:0}
.chalk-s .scrib path{stroke:var(--olive)}

/* reveals */
.rv{opacity:0;transform:translateY(30px) rotate(.2deg);transition:opacity 1s var(--ez),transform 1s var(--ez)}
.rv.in{opacity:1;transform:none}
.d1{transition-delay:.1s}.d2{transition-delay:.2s}.d3{transition-delay:.3s}.d4{transition-delay:.4s}
.pop{opacity:0;transform:scale(.86) rotate(-2deg);transition:opacity .9s var(--ez),transform .9s var(--ez)}
.pop.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important}
  .loader,.rv,.pop,.hl,.scrib path,.hero-name .mask>span,.hero-role .rot span,
  .bg-line,.m-menu,.m-menu a>span,.booking,.booking-progress li::before,
  .ob,.book-fab,.book-fab::before,.to-top{transition:none!important}
  .rv,.pop{opacity:1;transform:none}
  .hl{background-size:100% 46%}
  .scrib path{stroke-dashoffset:0}
  html{scroll-behavior:auto}
  .grain{display:none}
}

/* wobbly hand-drawn box + button */
.btn{display:inline-flex;align-items:center;gap:10px;font-family:var(--hand);font-weight:400;font-size:19.5px;letter-spacing:.03em;padding:13px 28px;border:1.8px solid var(--ink);border-radius:var(--wob);transition:background .35s var(--ez),color .35s,transform .35s var(--ez),box-shadow .35s;position:relative}
.btn svg{width:17px;height:17px;flex:none;transition:transform .35s var(--ez)}
.btn:hover{transform:rotate(-1.2deg) translateY(-2px)}
.btn:hover svg{transform:translateX(4px) rotate(8deg)}
.btn-ink{background:var(--ink);color:var(--paper)}
.btn-ink:hover{background:var(--rosso);border-color:var(--rosso);box-shadow:4px 5px 0 rgba(35,34,27,.25)}
.btn-ghost:hover{background:var(--ink);color:var(--paper);box-shadow:4px 5px 0 var(--hl)}
.btn-chalk{border-color:var(--chalk);color:var(--chalk)}
.btn-chalk:hover{background:var(--olive);border-color:var(--olive);color:var(--board);box-shadow:4px 5px 0 rgba(0,0,0,.3)}

/* tape */
.tape{position:absolute;width:86px;height:26px;background:rgba(224,213,170,.65);box-shadow:0 1px 3px rgba(35,34,27,.18);z-index:4;pointer-events:none}
.tape::before,.tape::after{content:"";position:absolute;top:0;bottom:0;width:5px;background:inherit;clip-path:polygon(0 0,100% 12%,0 26%,100% 40%,0 55%,100% 70%,0 84%,100% 100%,0 100%,0 0)}
.tape::before{left:-4px}.tape::after{right:-4px;transform:scaleX(-1)}

/* polaroid */
.pol{background:var(--paper-card);padding:10px 10px 36px;box-shadow:3px 6px 0 rgba(35,34,27,.14),0 14px 34px -18px rgba(35,34,27,.35);border:1px solid rgba(35,34,27,.12);position:relative;transition:transform .5s var(--ez)}
.pol img{width:100%;object-fit:cover}
.pol figcaption{position:absolute;left:0;right:0;bottom:6px;text-align:center;font-family:var(--script);font-size:19px;color:var(--pencil)}
@media(hover:hover){.pol:hover{transform:rotate(0deg) scale(1.02)!important;z-index:5}}

/* ============ loader ============ */
.loader{position:fixed;inset:0;z-index:200;background:var(--paper);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;transition:opacity .7s var(--ez),visibility 0s .7s}
.loader.done{opacity:0;visibility:hidden}
.loader-logo{width:150px;height:150px;position:relative;animation:popIn .9s .1s var(--ez) both}
.loader-logo img{width:100%;height:100%}
@keyframes popIn{0%{opacity:0;transform:scale(.7) rotate(-6deg)}100%{opacity:1;transform:none}}
.loader-ring{position:absolute;inset:-12px}
.loader-ring circle{fill:none;stroke:var(--ink);stroke-width:2;stroke-linecap:round;stroke-dasharray:560;stroke-dashoffset:560;animation:ring 1.3s .3s var(--ez) forwards}
@keyframes ring{to{stroke-dashoffset:0}}
.loader-word{font-family:var(--script);font-size:26px;color:var(--pencil);animation:fadeIn 1s .8s var(--ez) both}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* ============ nav ============ */
.nav{position:fixed;inset:0 0 auto 0;z-index:102;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:13px var(--pad);transition:background .5s var(--ez),box-shadow .5s}
.nav.scrolled{background:rgba(243,239,227,.92);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 1.5px 0 var(--line-soft)}
.nav.dark{background:rgba(38,41,32,.92);box-shadow:0 1.5px 0 var(--line-chalk)}
.nav.dark .nav-a,.nav.dark .brand-word,.nav.dark .nav-meta{color:var(--chalk)}
.nav.dark .nav-book{border-color:var(--chalk);color:var(--chalk)}
.nav.dark .nav-book:hover{background:var(--olive);border-color:var(--olive);color:var(--board)}
.nav.dark .bg-line{background:var(--chalk)}
.brand{display:flex;align-items:center;gap:11px;position:relative;z-index:102}
.brand img{width:44px;height:44px;border-radius:50%;box-shadow:0 0 0 1.6px var(--line-soft);transition:transform .5s var(--ez)}
.brand:hover img{transform:rotate(-8deg)}
.brand-word{font-family:var(--hand);font-weight:400;font-size:22px;letter-spacing:.03em;transition:color .4s;white-space:nowrap}
.brand-word em{font-style:normal;color:var(--rosso)}
.nav.dark .brand-word em{color:var(--olive)}
.nav-mid{display:flex;gap:30px;align-items:center}
.nav-a{font-family:var(--hand);font-weight:400;font-size:18px;letter-spacing:.04em;position:relative;padding:2px 0;transition:color .35s}
.nav-a::after{content:"";position:absolute;left:0;right:0;bottom:-3px;height:6px;background:url("../images/nav-underline.svg") repeat-x left center/44px 6px;opacity:0;transform:translateY(3px);transition:.4s var(--ez)}
.nav-a:hover::after{opacity:1;transform:none}
.nav-side{display:flex;align-items:center;gap:20px}
.nav-meta{font-family:var(--script);font-size:19px;color:var(--pencil);display:flex;align-items:center;gap:8px;transition:color .4s;white-space:nowrap}
.nav-meta i{width:7px;height:7px;border-radius:50%;background:var(--olive);display:inline-block;animation:blink 2.4s ease infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.25}}
.nav-book{font-family:var(--hand);font-weight:400;font-size:17px;border:1.7px solid var(--ink);border-radius:var(--wob);padding:8px 20px;transition:.35s var(--ez);white-space:nowrap}
.nav-book:hover{background:var(--ink);color:var(--paper);transform:rotate(-1.5deg)}
.bg-btn{display:none;width:44px;height:44px;position:relative;z-index:102}
.bg-line{position:absolute;left:9px;width:24px;height:2px;background:var(--ink);transition:.45s var(--ez);border-radius:2px}
.bg-line:nth-child(1){top:14px;transform:rotate(-2deg)}
.bg-line:nth-child(2){top:21px;transform:rotate(1.5deg)}
.bg-line:nth-child(3){top:28px;transform:rotate(-1deg)}
body.menu-open .bg-line{background:var(--chalk)!important}
body.menu-open .bg-line:nth-child(1){top:21px;transform:rotate(45deg)}
body.menu-open .bg-line:nth-child(2){opacity:0}
body.menu-open .bg-line:nth-child(3){top:21px;transform:rotate(-45deg)}
body.menu-open .brand-word{color:var(--chalk)}
body.menu-open .brand-word em{color:var(--olive)}
.m-menu{position:fixed;inset:0;z-index:101;background:var(--board);display:flex;flex-direction:column;justify-content:center;padding:0 var(--pad);clip-path:inset(0 0 100% 0);transition:clip-path .8s cubic-bezier(.65,.05,.36,1);visibility:hidden}
body.menu-open .m-menu{clip-path:inset(0);visibility:visible}
.m-menu a{font-family:var(--hand);font-weight:400;font-size:clamp(34px,9vw,52px);color:var(--chalk);padding:13px 0;border-bottom:1.5px dashed var(--line-chalk);display:flex;align-items:baseline;justify-content:space-between;overflow:hidden}
.m-menu a>span{display:inline-block;transform:translateY(120%);transition:transform .8s cubic-bezier(.65,.05,.36,1)}
body.menu-open .m-menu a>span{transform:none}
body.menu-open .m-menu a:nth-child(2)>span{transition-delay:.06s}
body.menu-open .m-menu a:nth-child(3)>span{transition-delay:.12s}
body.menu-open .m-menu a:nth-child(4)>span{transition-delay:.18s}
body.menu-open .m-menu a:nth-child(5)>span{transition-delay:.24s}
.m-menu small{font-family:var(--script);font-size:22px;color:var(--olive)}
.m-menu .m-foot{border:none;margin-top:28px;font-family:var(--script);font-size:24px;color:var(--chalk-60);display:block}

/* ============ hero ============ */
.hero{position:relative;padding:calc(92px + 4vh) 0 0;max-width:1380px;margin:0 auto}
.hero-meta{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:0 var(--pad) 16px;border-bottom:1.6px dashed var(--line-soft);font-family:var(--script);font-size:20px;color:var(--pencil);flex-wrap:wrap}
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(28px,4.5vw,70px);align-items:center;padding:clamp(28px,4vw,54px) var(--pad) clamp(50px,7vw,96px)}
.hero-grid>*{position:relative;z-index:1}
.hero-name h1{font-size:clamp(52px,8.7vw,126px);letter-spacing:0}
.hero-name .mask{display:block;overflow:hidden;padding-bottom:.1em;margin-bottom:-.1em}
.hero-name .mask>span{display:inline-block;transform:translateY(115%);transition:transform 1.1s cubic-bezier(.65,.05,.36,1)}
.hero-name .mask.in>span{transform:none}
.hero-role{font-family:var(--script);font-size:clamp(26px,3.4vw,44px);font-weight:600;margin-top:14px;color:var(--ink)}
.hero-role .rot{display:inline-grid;overflow:hidden;vertical-align:bottom;color:var(--rosso)}
.hero-role .rot span{grid-area:1/1;white-space:nowrap;opacity:0;visibility:hidden;transform:translateY(42%);transition:opacity .28s var(--ez),transform .32s var(--ez),visibility 0s .32s}
.hero-role .rot span.on{opacity:1;visibility:visible;transform:none;transition:opacity .28s var(--ez),transform .32s var(--ez),visibility 0s}
.hero-role .rot span.off{opacity:0;visibility:hidden;transform:translateY(-42%)}
.hero-state{margin-top:26px;max-width:520px;color:var(--pencil);font-size:17px}
.hero-state strong{color:var(--ink);font-weight:700}
.hero-tags{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}
.tag{font-family:var(--hand);font-weight:400;font-size:16.5px;border:1.5px solid var(--line-soft);border-radius:var(--wob);padding:6px 15px;transition:.35s var(--ez)}
.tag:nth-child(2n){border-radius:var(--wob2)}
.tag:hover{background:var(--hl);border-color:var(--ink);transform:rotate(-1.6deg)}
.hero-ctas{display:flex;flex-wrap:wrap;gap:14px;margin-top:32px}
.hero-visual{position:relative;justify-self:end;width:100%;max-width:500px;padding:10px 0 30px}
.hero-pol{transform:rotate(2.2deg)}
.hero-pol img{aspect-ratio:.92}
.hero-pol .tape{top:-13px;left:50%;transform:translateX(-50%) rotate(-3deg)}
.hero-note{position:absolute;left:-30px;top:-28px;font-family:var(--script);font-size:25px;font-weight:600;color:var(--rosso);transform:rotate(-7deg);z-index:6}
.hero-note svg{display:block;width:64px;height:36px;margin:2px auto 0}
.hero-note svg path{stroke:var(--rosso);fill:none;stroke-width:2.2;stroke-linecap:round}
.hero-doodle{position:absolute;right:-14px;bottom:-6px;width:86px;height:86px;transform:rotate(8deg);z-index:6}
.hero-doodle path{stroke:var(--ink);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:560px){.hero-note{left:0;top:-34px}}

/* ============ marquee ============ */
.marquee{background:var(--paper-2);overflow:hidden;padding:16px 0;border-top:1.6px dashed var(--line-soft);border-bottom:1.6px dashed var(--line-soft)}
.mq-track{display:flex;width:max-content;will-change:transform;animation:marqueeFlow 42s linear infinite}
.mq-set{display:flex;align-items:center;gap:44px;padding-right:44px;font-family:var(--hand);font-weight:400;font-size:19.5px;letter-spacing:.05em;white-space:nowrap;color:var(--ink)}
.mq-set svg{width:26px;height:16px;flex:none}
.mq-set svg path{stroke:var(--rosso);fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
@keyframes marqueeFlow{to{transform:translate3d(-33.333333%,0,0)}}

/* ============ section head ============ */
.sec{padding:clamp(84px,10.5vw,160px) 0}
.sec-head{margin-bottom:clamp(42px,5.5vw,80px)}
.sec-head .eyebrow{margin-bottom:18px}
.sec-head h2{font-size:clamp(37px,5.4vw,75px);max-width:16em}
.sec-head h2 em{font-style:normal;color:var(--rosso)}
.chalk-s .sec-head h2 em{color:var(--olive)}
.sec-head .lead{margin-top:20px;font-size:17px;color:var(--pencil);max-width:560px}
.chalk-s .lead{color:var(--chalk-60)}

/* ============ services ============ */
.services{background:var(--paper-2);overflow:hidden;isolation:isolate}
.rows{border-top:1.6px dashed var(--line-soft)}
.row{display:grid;grid-template-columns:76px 1fr auto;gap:clamp(18px,3vw,42px);align-items:center;padding:clamp(24px,3.2vw,40px) 0;border-bottom:1.6px dashed var(--line-soft);position:relative}
.row-idx{position:relative;font-family:var(--script);font-size:24px;font-weight:600;color:var(--pencil);width:56px;height:56px;display:flex;align-items:center;justify-content:center;transition:color .4s}
.row-idx svg{position:absolute;inset:-4px;transition:transform .5s var(--ez)}
.row-idx svg circle{fill:none;stroke:var(--line-soft);stroke-width:1.8;stroke-dasharray:4 5;stroke-linecap:round;transition:stroke .4s}
.row-main h3{font-size:clamp(27px,3.5vw,48px);transition:transform .5s var(--ez),color .4s}
.row-main p{margin-top:6px;font-size:15.5px;color:var(--pencil);max-width:640px}
.row-arrow{width:52px;height:52px;border:1.7px solid var(--line-soft);border-radius:var(--wob);display:flex;align-items:center;justify-content:center;flex:none;transition:.45s var(--ez)}
.row-arrow svg{width:20px;height:20px;transition:transform .45s var(--ez)}
.row-arrow svg path{stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
@media(hover:hover){
  .row:hover .row-main h3{transform:translateX(12px) rotate(-.6deg);color:var(--rosso)}
  .row:hover .row-idx{color:var(--rosso)}
  .row:hover .row-idx svg{transform:rotate(120deg)}
  .row:hover .row-idx svg circle{stroke:var(--rosso)}
  .row:hover .row-arrow{background:var(--ink);border-color:var(--ink);color:var(--paper);transform:rotate(-42deg)}
}
.row-thumb{display:none}
.preview{position:fixed;left:0;top:0;z-index:60;width:280px;pointer-events:none;transform:translate(-50%,-50%) scale(0);opacity:0;transition:opacity .3s;will-change:transform;background:var(--paper-card);padding:9px 9px 30px;box-shadow:5px 8px 0 rgba(35,34,27,.16),0 24px 50px -20px rgba(35,34,27,.45)}
.preview .pv-frame{position:relative;aspect-ratio:.8;overflow:hidden}
.preview img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .4s var(--ez)}
.preview img.on{opacity:1}
.preview figcaption{position:absolute;left:0;right:0;bottom:3px;text-align:center;font-family:var(--script);font-size:18px;color:var(--pencil)}
@media(pointer:coarse),(max-width:900px){
  .preview{display:none}
  .row{grid-template-columns:1fr auto;grid-template-areas:"main thumb" "main arrow"}
  .row-idx{display:none}
  .row-main{grid-area:main}
  .row-arrow{grid-area:arrow;width:44px;height:44px;align-self:end}
  .row-thumb{display:block;grid-area:thumb;width:88px;background:var(--paper-card);padding:5px 5px 6px;box-shadow:2px 3px 0 rgba(35,34,27,.14);transform:rotate(2.4deg)}
  .row-thumb img{width:100%;aspect-ratio:1;object-fit:cover}
}
.svc-note{margin-top:clamp(34px,4vw,54px);display:flex;align-items:center;gap:16px;font-family:var(--script);font-size:clamp(22px,2.4vw,29px);font-weight:600;color:var(--ink)}
.svc-note svg{width:30px;height:30px;flex:none}
.svc-note svg path{stroke:var(--rosso);fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}

/* ============ doodle divider ============ */
.doodles{display:flex;justify-content:center;align-items:center;gap:clamp(26px,5vw,60px);padding:clamp(8px,2vw,24px) var(--pad)}
.doodles svg{height:52px;width:auto}
.doodles path,.doodles circle,.doodles ellipse{stroke:var(--ink);fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:300;stroke-dashoffset:300;transition:stroke-dashoffset 1.8s var(--ez)}
.doodles.in path,.doodles.in circle,.doodles.in ellipse{stroke-dashoffset:0}
.doodles .g2 path,.doodles .g2 ellipse{transition-delay:.25s}
.doodles .g3 path{transition-delay:.5s}

/* ============ why ============ */
#why{overflow:hidden;isolation:isolate}
.why-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(42px,6vw,100px);align-items:center}
.why-item{padding:24px 0;border-bottom:1.6px dashed var(--line-soft);display:flex;gap:20px}
.why-item:first-child{border-top:1.6px dashed var(--line-soft)}
.why-check{flex:none;width:30px;height:30px;margin-top:4px}
.why-check path{stroke:var(--olive);fill:none;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:60;stroke-dashoffset:60;transition:stroke-dashoffset .9s .3s var(--ez)}
.why-item.in .why-check path{stroke-dashoffset:0}
.why-item h3{font-size:clamp(23px,2.2vw,32px);margin-bottom:5px}
.why-item p{color:var(--pencil);font-size:15.5px;max-width:460px}
.why-photos{position:relative;min-height:560px}
.why-photos .pol{position:absolute}
.why-pa{width:60%;top:0;left:2%;transform:rotate(-3deg);z-index:2}
.why-pa img{aspect-ratio:.78}
.why-pa .tape{top:-12px;left:18%;transform:rotate(-6deg)}
.why-pb{width:52%;bottom:0;right:0;transform:rotate(2.5deg)}
.why-pb img{aspect-ratio:.84}
.why-pb .tape{top:-12px;right:14%;transform:rotate(5deg)}

/* ============ about ============ */
.about{background:var(--paper-2);overflow:hidden;isolation:isolate}
.about-grid{display:grid;grid-template-columns:.95fr 1.05fr;gap:clamp(42px,6vw,100px);align-items:center}
.about-visual{position:relative;padding:16px 0 44px}
.about-pa{transform:rotate(-2deg);width:88%}
.about-pa img{aspect-ratio:.82}
.about-pa .tape{top:-13px;left:8%;transform:rotate(-5deg)}
.about-pb{position:absolute;width:46%;right:0;bottom:0;transform:rotate(4deg);z-index:3}
.about-pb img{aspect-ratio:.9}
.about-pb .tape{top:-12px;left:50%;transform:translateX(-50%) rotate(3deg)}
.about-copy h2{font-size:clamp(37px,5vw,68px)}
.about-copy h2 em{font-style:normal;color:var(--rosso)}
.journey{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:26px 0 4px;font-family:var(--script);font-size:clamp(22px,2vw,27px);font-weight:600}
.journey svg{width:34px;height:16px;flex:none}
.journey svg path{stroke:var(--rosso);fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.about-copy p{color:var(--pencil);font-size:16.5px;max-width:560px;margin-top:16px}
.about-copy p strong{color:var(--ink);font-weight:700}
.about-sign{margin-top:30px;font-family:var(--script);font-size:34px;font-weight:600;color:var(--rosso);transform:rotate(-2deg);display:inline-block}

/* ============ casa ggiù — chalkboard ============ */
.casa{background:var(--board);color:var(--chalk);box-shadow:inset 0 0 160px rgba(48,50,22,.34);overflow:hidden;isolation:isolate}
.casa .wrap{position:relative}
.casa-hero{text-align:center;padding-top:clamp(90px,11vw,160px)}
.casa-sticker{width:clamp(140px,16vw,190px);height:auto;margin:0 auto 8px;position:relative;display:block;transform:rotate(-3deg)}
.casa-sticker img{width:100%;border-radius:50%;box-shadow:0 10px 30px -10px rgba(0,0,0,.55)}
.casa-sticker .tape{top:-12px;left:50%;transform:translateX(-50%) rotate(-2deg);background:rgba(224,213,170,.8)}
.casa-kick{font-family:var(--script);font-size:clamp(22px,2.4vw,29px);font-weight:600;color:var(--peach);margin-top:20px}
.casa-title{font-family:var(--hand);font-size:clamp(58px,11.6vw,168px);letter-spacing:.01em;text-transform:uppercase;line-height:1.02;margin:8px 0 2px;color:var(--chalk);text-shadow:0 0 14px rgba(237,231,214,.14)}
.casa-title .fill{color:var(--peach)}
.casa-sub{font-family:var(--script);font-size:clamp(22px,2.6vw,30px);color:var(--chalk-60)}
.casa-triple{display:flex;justify-content:center;gap:clamp(16px,4vw,54px);flex-wrap:wrap;margin-top:38px;font-family:var(--hand);font-weight:400;font-size:clamp(18px,1.9vw,24px)}
.casa-triple span{position:relative;padding-left:22px}
.casa-triple span::before{content:"";position:absolute;left:0;top:50%;width:11px;height:11px;transform:translateY(-50%) rotate(-6deg);border:1.8px solid var(--peach);border-radius:50% 46% 52% 48%}
.casa-motto{margin-top:24px;font-family:var(--script);font-size:22px;color:var(--chalk-60)}
.casa-body{display:grid;grid-template-columns:1fr 1fr;gap:clamp(42px,6vw,96px);align-items:center;margin-top:clamp(70px,8.5vw,130px)}
.casa-body.flip .casa-photo{order:2}
.casa-photo{justify-self:center;width:min(100%,470px)}
.casa-photo .pol{background:var(--paper-photo);transform:rotate(-2.4deg)}
.casa-body.flip .casa-photo .pol{transform:rotate(2.2deg)}
.casa-photo img{aspect-ratio:.8}
.casa-photo .tape{top:-13px;left:50%;transform:translateX(-50%) rotate(-3deg);background:rgba(224,213,170,.8)}
.casa-text h3{font-size:clamp(32px,3.7vw,52px);margin-bottom:24px;color:var(--chalk)}
.casa-text h3 em{font-style:normal;color:var(--peach)}
.verse{font-family:var(--hand);font-weight:400;font-size:clamp(21px,2.1vw,28px);line-height:1.5;color:var(--chalk)}
.verse+.verse{margin-top:20px}
.verse.red{color:var(--peach)}
.verse .acc{color:var(--peach)}
.casa-note{margin-top:24px;font-family:var(--script);font-size:21px;color:var(--chalk-60);max-width:460px}
.casa-collab{margin-top:clamp(70px,8.5vw,120px);border:2px dashed var(--line-chalk);border-radius:14px;padding:clamp(34px,5vw,60px);text-align:center;position:relative}
.casa-collab h3{font-size:clamp(29px,3.4vw,45px);color:var(--chalk)}
.casa-collab p{margin:14px auto 28px;max-width:540px;color:var(--chalk-60)}
.chalk-doodle{position:absolute;pointer-events:none}
.chalk-doodle path,.chalk-doodle circle{stroke:var(--chalk-60);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.cd-1{left:2%;top:150px;width:70px;transform:rotate(-10deg)}
.cd-2{right:3%;top:230px;width:64px;transform:rotate(12deg)}
@media(max-width:900px){.chalk-doodle{display:none}}

/* ============ gallery (on chalkboard) ============ */
.gallery{background:var(--board);padding:clamp(60px,7vw,110px) 0 clamp(84px,10vw,150px);box-shadow:inset 0 0 160px rgba(48,50,22,.34)}
.strip-head{display:flex;align-items:center;gap:16px;padding:0 var(--pad);margin-bottom:26px;color:var(--chalk-60);font-family:var(--script);font-size:23px}
.strip-head::after{content:"";flex:1;border-bottom:1.8px dashed var(--line-chalk)}
.strip{display:flex;gap:26px;overflow-x:auto;padding:14px var(--pad) 30px;scrollbar-width:none;cursor:grab;user-select:none;-webkit-user-select:none}
.strip::-webkit-scrollbar{display:none}
.strip.dragging{cursor:grabbing}
.strip .pol{flex:0 0 clamp(252px,64vw,310px);background:var(--paper-photo)}
.strip .pol img{aspect-ratio:.8;pointer-events:none}
.strip .pol:nth-child(odd){transform:rotate(-2deg)}
.strip .pol:nth-child(even){transform:rotate(1.8deg)}
.strip .pol .tape{top:-12px;left:50%;transform:translateX(-50%) rotate(-2deg);background:rgba(224,213,170,.8)}
.strip-bar{margin:0 var(--pad);height:3px;border-radius:3px;overflow:hidden;background:var(--line-chalk)}
.strip-bar i{display:block;height:100%;width:100%;background:var(--paper);border-radius:3px;transform:scaleX(.18);transform-origin:left center;transition:transform .2s linear}

/* ============ booking dialog ============ */
.booking{position:fixed;inset:0;z-index:180;background:rgba(35,34,27,.36);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;isolation:isolate;padding:clamp(18px,3vw,42px);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .45s var(--ez),visibility 0s .45s}
.booking.is-open{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .45s var(--ez),visibility 0s}
.booking .wrap{min-height:100%;display:flex;align-items:center;justify-content:center}
.booking-shell{position:relative;width:min(1180px,100%);background:var(--paper);border:1.8px solid var(--ink);border-radius:18px;padding:clamp(28px,4.8vw,68px);box-shadow:8px 12px 0 rgba(35,34,27,.28)}
.booking-close{position:absolute;right:18px;top:18px;width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:var(--paper-card);color:var(--ink);border:1.6px solid var(--line-soft);border-radius:52% 48% 50% 50%/48% 52% 50% 50%;transition:.35s var(--ez)}
.booking-close:hover{background:var(--ink);color:var(--paper);border-color:var(--ink);transform:rotate(5deg)}
.booking-close svg{width:19px;height:19px}
.booking-close path{stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round}
.booking-head{display:grid;grid-template-columns:.82fr 1.18fr;gap:clamp(28px,5vw,70px);align-items:start}
.booking h2{font-size:clamp(43px,6.1vw,90px)}
.booking h2 em{font-style:normal;color:var(--rosso)}
.booking-lead{margin-top:20px;font-size:17px;color:var(--pencil);max-width:460px}
.booking-panel{position:relative}
.booking-progress{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:28px}
.booking-progress li{list-style:none;height:8px;border:1.4px solid var(--line-soft);border-radius:20px;background:var(--paper-card);overflow:hidden}
.booking-progress li::before{content:"";display:block;width:100%;height:100%;background:var(--olive);transform:scaleX(0);transform-origin:left center;transition:transform .45s var(--ez)}
.booking-progress li.is-on::before{transform:scaleX(1)}
.booking-step{display:none}
.booking-step.is-active{display:block}
.booking-kicker{font-family:var(--script);font-size:23px;font-weight:600;color:var(--rosso);margin-bottom:8px}
.booking-step h3{font-size:clamp(30px,3.6vw,52px);margin-bottom:18px}
.booking-options{display:flex;flex-direction:column;border-top:1.6px dashed var(--line-soft)}
.booking-choice{display:grid;grid-template-columns:minmax(0,1fr) 52px;grid-template-areas:"heading arrow" "copy arrow";align-items:center;gap:5px 24px;width:100%;min-height:92px;text-align:left;padding:18px 0;background:transparent;color:var(--ink);border:0;border-bottom:1.6px dashed var(--line-soft);border-radius:0}
.booking-choice-heading{grid-area:heading;display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0}
.booking-choice strong{font-family:var(--hand);font-weight:400;font-size:clamp(25px,2.4vw,31px);line-height:1.08;transition:color .3s var(--ez),transform .4s var(--ez)}
.booking-choice-copy{grid-area:copy;display:block;max-width:50ch;font-size:14.5px;color:var(--pencil);line-height:1.45}
.booking-choice .booking-choice-tagline{font-family:var(--script);font-size:19px;font-weight:600;color:var(--rosso);line-height:1.15}
.booking-choice-arrow{grid-area:arrow;align-self:center;justify-self:end;width:52px;height:52px;border:1.7px solid var(--line-soft);border-radius:var(--wob);display:flex;align-items:center;justify-content:center;flex:none;transition:.45s var(--ez)}
.booking-choice-arrow::before{content:"";width:20px;height:20px;background:currentColor;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 12 C 8 10, 14 13, 19 11 M15 7 l5 4 -6 4' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 12 C 8 10, 14 13, 19 11 M15 7 l5 4 -6 4' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat}
.booking-choice:hover strong,.booking-choice.is-selected strong{color:var(--rosso);transform:translateX(8px) rotate(-.4deg)}
.booking-choice:hover .booking-choice-arrow,.booking-choice.is-selected .booking-choice-arrow{background:var(--ink);border-color:var(--ink);color:var(--paper);transform:rotate(-42deg)}
.booking-choice:focus-visible{outline:none}
.booking-choice:focus-visible strong{text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:5px}
.booking-choice:focus-visible .booking-choice-arrow{border-color:var(--ink);box-shadow:0 0 0 3px var(--hl-red)}
.booking-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.booking-field{display:flex;flex-direction:column;gap:7px}
.booking-field.wide{grid-column:1/-1}
.booking-field label{font-family:var(--script);font-size:21px;font-weight:600;color:var(--pencil)}
.booking-field input,.booking-field textarea{width:100%;background:var(--paper-card);border:1.6px solid var(--line-soft);border-radius:12px;padding:13px 14px;font:inherit;color:var(--ink);outline:none;transition:border-color .3s,box-shadow .3s}
.booking-field textarea{min-height:118px;resize:vertical}
.booking-field input:focus,.booking-field textarea:focus{border-color:var(--rosso);box-shadow:0 0 0 3px var(--hl-red)}
.booking-field input:focus-visible,.booking-field textarea:focus-visible{outline:2px solid var(--rosso);outline-offset:2px}
.booking-summary{background:var(--paper-card);border:1.6px dashed var(--line-soft);border-radius:14px;padding:18px 20px;white-space:pre-wrap;color:var(--pencil);font-size:15.5px;line-height:1.6;min-height:190px}
.booking-nav{display:flex;justify-content:space-between;gap:14px;margin-top:24px;flex-wrap:wrap}
.booking-nav .btn[disabled]{opacity:.38;pointer-events:none}
.booking-send{margin-left:auto}
#bookingNext[hidden],.booking-send[hidden]{display:none}
@media(max-width:1080px){.booking-head{grid-template-columns:1fr}}
@media(max-width:680px){
  .booking{padding:0;background:var(--paper)}
  .booking>.ob{display:none}
  .booking .wrap{align-items:stretch}
  .booking-shell{min-height:100vh;min-height:100dvh;border:0;border-radius:0;box-shadow:none;padding:72px 20px 28px}
  .booking-fields{grid-template-columns:1fr}
  .booking-choice{grid-template-columns:minmax(0,1fr) 44px;gap:5px 14px;min-height:0;padding:17px 0}
  .booking-choice-arrow{width:44px;height:44px}
  .booking-choice strong{font-size:26px}
  .booking-choice-copy{font-size:14px}
  .booking-send{margin-left:0}
}

/* ============ contact ============ */
.contact{background:var(--paper);overflow:hidden;isolation:isolate}
.contact-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(42px,6vw,96px)}
.contact h2{font-size:clamp(43px,6.1vw,90px)}
.contact h2 em{font-style:normal;color:var(--rosso)}
.contact-lead{margin-top:20px;font-size:17px;color:var(--pencil);max-width:480px}
.contact-ctas{display:flex;flex-wrap:wrap;gap:14px;margin-top:30px}
.contact-meta{margin-top:40px;display:flex;flex-direction:column}
.contact-meta a{display:flex;align-items:center;gap:14px;font-size:16px;color:var(--pencil);padding:13px 0;border-bottom:1.6px dashed var(--line-soft);transition:color .35s,transform .45s var(--ez)}
.contact-meta a:first-child{border-top:1.6px dashed var(--line-soft)}
.contact-meta a:hover{color:var(--rosso);transform:translateX(8px)}
.contact-meta svg{width:20px;height:20px;flex:none}
.contact-meta svg path,.contact-meta svg rect,.contact-meta svg circle{stroke:var(--ink);fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.faq h3{font-family:var(--script);font-size:26px;font-weight:600;color:var(--pencil);margin-bottom:10px}
.faq details{border-bottom:1.6px dashed var(--line-soft)}
.faq details:first-of-type{border-top:1.6px dashed var(--line-soft)}
.faq summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:20px;align-items:center;font-family:var(--hand);font-weight:400;font-size:clamp(19px,1.8vw,24px);padding:19px 0;transition:color .3s}
.faq summary:hover{color:var(--rosso)}
.faq summary::-webkit-details-marker{display:none}
.faq .pl{flex:none;width:22px;height:22px;position:relative}
.faq .pl::before,.faq .pl::after{content:"";position:absolute;background:var(--rosso);transition:transform .4s var(--ez);border-radius:2px}
.faq .pl::before{left:0;top:10px;width:22px;height:2.2px;transform:rotate(-2deg)}
.faq .pl::after{left:10px;top:0;width:2.2px;height:22px;transform:rotate(2deg)}
.faq details[open] .pl::after{transform:rotate(2deg) scaleY(0)}
.faq .faq-a{overflow:hidden}
.faq .faq-a p{padding:0 0 20px;color:var(--pencil);font-size:15.5px;max-width:520px}

/* ============ footer ============ */
footer{background:var(--paper-2);border-top:1.6px dashed var(--line-soft)}
.foot-cta{text-align:center;padding:clamp(64px,8vw,120px) var(--pad) clamp(46px,5.5vw,80px)}
.foot-cta .eyebrow{justify-content:center;margin-bottom:16px}
.foot-cta h2{font-size:clamp(43px,7.6vw,112px)}
.foot-cta h2 em{font-style:normal;color:var(--rosso)}
.foot-cta .btn{margin-top:32px}
.foot{display:flex;justify-content:space-between;align-items:center;gap:22px;flex-wrap:wrap;padding:28px var(--pad);border-top:1.6px dashed var(--line-soft)}
.foot small{font-size:13.5px;color:var(--pencil)}
.foot-social{display:flex;gap:12px}
.foot-social a{width:44px;height:44px;border:1.7px solid var(--line-soft);border-radius:var(--wob);display:flex;align-items:center;justify-content:center;transition:.4s var(--ez)}
.foot-social a:nth-child(2){border-radius:var(--wob2)}
.foot-social a:hover{background:var(--ink);border-color:var(--ink);color:var(--paper);transform:rotate(-5deg)}
.foot-social svg{width:17px;height:17px}

/* ============ hanging booking sign ============ */
.book-fab{position:fixed;right:24px;bottom:24px;z-index:90;
  display:inline-flex;align-items:center;gap:11px;
  padding:15px 28px;background:var(--paper-card);color:var(--ink);
  border:1.8px solid var(--ink);border-radius:var(--wob);
  font-family:var(--hand);font-weight:400;font-size:22px;line-height:1;letter-spacing:.03em;white-space:nowrap;
  box-shadow:4px 6px 0 rgba(35,34,27,.3);
  transform-origin:50% -27px;                     /* the nail */
  opacity:0;transform:translateY(26px) rotate(-15deg);
  transition:background .4s var(--ez),color .4s var(--ez),border-color .4s var(--ez),box-shadow .4s var(--ez)}
/* swings in, then keeps breathing like a sign in the air */
.book-fab.up{opacity:1;transform:rotate(-1.8deg);
  animation:fabHang 1.7s var(--ez) backwards, fabSway 7s ease-in-out 1.8s infinite alternate}
@keyframes fabHang{
  0%{opacity:0;transform:translateY(26px) rotate(-16deg)}
  26%{opacity:1;transform:translateY(0) rotate(9.5deg)}
  44%{transform:rotate(-6.5deg)}
  60%{transform:rotate(4.2deg)}
  75%{transform:rotate(-2.8deg)}
  89%{transform:rotate(.6deg)}
  100%{transform:rotate(-1.8deg)}}
@keyframes fabSway{from{transform:rotate(-3.4deg)}to{transform:rotate(-.2deg)}}
.book-fab.up:hover{animation-play-state:paused;background:var(--ink);color:var(--paper-card);
  border-color:var(--ink);box-shadow:6px 8px 0 rgba(35,34,27,.34)}
/* one rope draped over the hanging point — meets the sign edge, no joints */
.bf-cords{position:absolute;left:50%;bottom:100%;width:104px;height:32px;margin-left:-52px;pointer-events:none}
.bf-cords svg{width:104px;height:32px;display:block;overflow:visible}
.bf-cords path{fill:none;stroke-linecap:round;stroke-linejoin:round}
.bf-cords .h{stroke:var(--paper);stroke-width:3.6;opacity:.45}
.bf-cords .c{stroke:var(--ink);stroke-width:1.6}
/* pencil guide-line sketched around the sign */
.book-fab::before{content:"";position:absolute;inset:-7px -9px -9px -7px;
  border:1.7px solid var(--ink);border-radius:var(--wob2);
  transform:rotate(2.6deg);opacity:0;pointer-events:none;
  transition:transform .55s var(--ez),opacity .4s var(--ez)}
.book-fab.up::before{opacity:.45;animation:fabRing .7s 1.1s var(--ez) backwards}
@keyframes fabRing{from{opacity:0;transform:rotate(10deg) scale(.84)}to{opacity:.45;transform:rotate(2.6deg) scale(1)}}
.book-fab.up:hover::before{transform:rotate(-2.4deg) scale(1.04);opacity:.7}
.bf-t{position:relative;display:inline-block}
.bf-s{position:absolute;left:-2px;right:-2px;bottom:-8px;width:calc(100% + 4px);height:8px;overflow:visible}
.bf-s path{stroke:var(--olive);fill:none;stroke-width:2.6;stroke-linecap:round;
  stroke-dasharray:140;stroke-dashoffset:140;transition:stroke-dashoffset .75s var(--ez)}
.book-fab.up:hover .bf-s path{stroke-dashoffset:0}
.bf-a{width:19px;height:19px;flex:none;transition:transform .4s var(--ez)}
.bf-a path{stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.book-fab.up:hover .bf-a{transform:translateX(4px) rotate(8deg)}
@media(prefers-reduced-motion:reduce){.book-fab{opacity:1;transform:rotate(-1.8deg)}
  .book-fab.up{animation:none}.book-fab::before{opacity:.45;animation:none}}
@media(max-width:560px){.book-fab{right:17px;bottom:20px;padding:13px 23px;font-size:20px;gap:9px;transform-origin:50% -23px}
  .bf-cords{width:88px;height:28px;margin-left:-44px}
  .bf-cords svg{width:88px;height:28px}
  .book-fab::before{inset:-6px -7px -7px -6px}
  .bf-a{width:17px;height:17px}}

/* ============ back to top ============ */
.to-top{position:fixed;left:24px;bottom:26px;z-index:90;
  width:48px;height:48px;display:flex;align-items:center;justify-content:center;
  background:var(--paper-card);color:var(--ink);border:1.8px solid var(--ink);
  border-radius:52% 48% 50% 50%/48% 52% 50% 50%;
  box-shadow:3px 4px 0 rgba(35,34,27,.28);
  opacity:0;visibility:hidden;transform:translateY(18px) rotate(-7deg) scale(.9);
  transition:opacity .45s var(--ez),transform .55s var(--ez),visibility 0s .55s,
             background .35s var(--ez),color .35s var(--ez),box-shadow .35s var(--ez)}
.to-top.up{opacity:1;visibility:visible;transform:rotate(-2.4deg) scale(1);
  transition:opacity .45s var(--ez),transform .55s var(--ez),visibility 0s,
             background .35s var(--ez),color .35s var(--ez),box-shadow .35s var(--ez)}
.to-top.up:hover{background:var(--ink);color:var(--paper-card);transform:rotate(0deg) translateY(-3px);
  box-shadow:4px 6px 0 rgba(35,34,27,.32)}
.to-top svg{width:22px;height:22px}
.to-top svg path{stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.to-top.up:hover svg{animation:topNudge .6s var(--ez)}
@keyframes topNudge{0%{transform:translateY(0)}45%{transform:translateY(-3px)}100%{transform:translateY(0)}}
@media(max-width:560px){.to-top{left:16px;bottom:22px;width:44px;height:44px}
  .to-top svg{width:20px;height:20px}}

/* ============ responsive ============ */
@media(max-width:1080px){
  .hero-grid{grid-template-columns:1fr}
  .hero-visual{justify-self:center;max-width:min(470px,88vw);margin:28px auto 0}
  .why-grid,.about-grid,.casa-body,.contact-grid{grid-template-columns:1fr}
  .casa-body.flip .casa-photo{order:0}
  /* stacked overlapping collage: big readable photos, still hand-placed */
  .why-photos{min-height:0;display:block;max-width:520px;margin:0 auto;width:100%}
  .why-photos .pol{position:relative}
  .why-pa{width:82%;top:auto;left:auto;transform:rotate(-2.2deg);z-index:2}
  .why-pb{width:64%;bottom:auto;right:auto;margin:-16% 0 0 auto;transform:rotate(2.6deg);z-index:3}
  .about-visual{padding:12px 0 0;max-width:520px;margin:0 auto;width:100%}
  .about-pa{width:84%}
  .about-pb{position:relative;right:auto;bottom:auto;width:62%;margin:-18% 0 0 auto;z-index:3}
  .casa-photo{width:min(100%,470px)}
}
@media(max-width:700px){
  .grain{opacity:.3}
  .why-pa,.about-pa{width:88%}
  .why-pb,.about-pb{width:68%;margin-top:-14%}
}
@media(max-width:900px){
  .nav-mid,.nav-meta{display:none}
  .bg-btn{display:block}
}
@media(max-width:560px){
  .nav-book{display:none}
  .hero-meta span:nth-child(2){display:none}
  .foot{justify-content:center;text-align:center}
  .hero-doodle{display:none}
}

/* ============ olive branch — crossing the page ============ */
.ob{
  background:url("../images/olive-branch-mask.png") center/contain no-repeat;
  filter:brightness(0) saturate(100%) invert(23%) sepia(38%) saturate(2528%) hue-rotate(331deg) brightness(91%) contrast(91%);
  aspect-ratio:1.4118;
  position:absolute;pointer-events:none;z-index:6;
  mix-blend-mode:multiply;
  clip-path:inset(0 100% 0 0);
  transition:clip-path 2.6s var(--ez);
}
.ob.in{clip-path:inset(0 0 0 0)}
@media(prefers-reduced-motion:reduce){.ob{clip-path:none}}
/* chalkboard: light chalk, screen blend so it glows instead of darkening */
.ob-chalk{filter:brightness(0) saturate(100%) invert(96%) sepia(11%) saturate(329%) hue-rotate(354deg) brightness(103%) contrast(91%);mix-blend-mode:screen;opacity:.42}

/* each branch runs top-to-bottom across the content */
.ob-x1{width:clamp(440px,72vh,820px);top:-6%;right:-13%;transform:rotate(58deg)}
.ob-x2{width:clamp(420px,68vh,780px);top:10%;left:-17%;transform:rotate(58deg) scaleY(-1)}
.ob-x3{width:clamp(460px,74vh,840px);top:4%;right:-15%;transform:rotate(62deg)}
.ob-x4{width:clamp(420px,66vh,760px);bottom:-12%;left:-15%;transform:rotate(54deg) scaleY(-1)}
.ob-x5{width:clamp(440px,70vh,800px);top:0%;right:-14%;transform:rotate(60deg)}
.ob-hero-x{width:clamp(380px,60vh,700px);top:12%;right:-12%;transform:rotate(64deg);opacity:.8;z-index:6}

@media(max-width:900px){
  .ob{opacity:.78}
  .ob-chalk{opacity:.62}
  .ob-x1{width:clamp(360px,60vh,520px);right:-26%;top:-3%}
  .ob-x2{width:clamp(350px,56vh,500px);left:-30%;top:14%}
  .ob-x3{width:clamp(370px,62vh,540px);right:-28%}
  .ob-x4{width:clamp(350px,56vh,500px);left:-30%}
  .ob-x5{width:clamp(360px,58vh,520px);right:-28%}
  .ob-hero-x{width:clamp(310px,50vh,430px);right:-26%;opacity:.6}
}

/* ============ 404 ============ */
.not-found{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:var(--pad);overflow:hidden}
.error-page{width:min(760px,100%);text-align:center;position:relative;z-index:1}
.error-brand{display:block;width:112px;margin:0 auto 18px;transition:transform .4s var(--ez)}
.error-brand:hover{transform:rotate(-7deg)}
.error-brand img{width:100%;height:auto;border-radius:50%;box-shadow:0 0 0 2px var(--line-soft)}
.error-code{font-family:var(--script);font-size:clamp(34px,6vw,64px);font-weight:700;color:var(--pencil)}
.error-page h1{font-size:clamp(52px,9vw,96px);margin-top:4px}
.error-page>p:not(.error-code){max-width:560px;margin:20px auto 0;color:var(--pencil);font-size:18px}
.error-actions{display:flex;justify-content:center;gap:14px;flex-wrap:wrap;margin-top:32px}
