:root{--cream:#faf6f0;--warm-white:#fdfaf6;--sand:#e8e0d8;--taupe:#b8a898;--dusty-rose:#c4878e;--sage:#8ba888;--terracotta:#c4937a;--gold:#d4a97a;--text:#2d2424;--text-light:#6b5b5b;--text-faint:#a09080}*{box-sizing:border-box;margin:0;padding:0}html{scroll-padding-top:2rem}body{background:var(--warm-white);color:var(--text);-webkit-font-smoothing:antialiased;font-family:Inter,system-ui,-apple-system,sans-serif;line-height:1.6;overflow-x:hidden}.pill-nav{z-index:100;opacity:0;background:linear-gradient(170deg,#f8f4f0 0%,#efebe7 35%,#e7e3df 65%,#e2dedb 100%);border:none;border-radius:999px;align-items:center;gap:0;padding:.15rem .25rem;display:flex;position:fixed;top:1.25rem;left:50%;transform:translate(-50%);box-shadow:4px 4px 10px #877f7740,-4px -4px 10px #ffffffb3,inset 1px 1px 3px #fffc,inset -1px -1px 3px #9b938b26}.pill-nav-slider{display:none}.nav-pill{z-index:1;letter-spacing:.02em;color:#a09890;white-space:nowrap;cursor:pointer;border-radius:999px;padding:.2rem .85rem;font-family:Inter,system-ui,-apple-system,sans-serif;font-size:.72rem;font-weight:500;text-decoration:none;transition:color .3s;position:relative}.nav-pill:hover{color:#6b5b5b}.nav-pill.active{color:#2d2424}.greeting{letter-spacing:.12em;text-transform:lowercase;color:var(--text-faint);opacity:0;margin-bottom:.25rem;font-size:.875rem;font-weight:400}.hero-name{letter-spacing:-.03em;color:var(--text);opacity:0;font-family:Playfair Display,Georgia,serif;font-size:clamp(3rem,8vw,5.5rem);font-weight:600;line-height:1.05}.tagline{color:var(--text-light);letter-spacing:.06em;opacity:0;margin-top:.75rem;font-size:1.05rem;font-weight:300}.hero-title{text-align:center;padding:3.8rem 2rem .5rem}.hero-title h1{color:var(--text);letter-spacing:-.01em;opacity:0;font-family:Times New Roman,Times,serif;font-size:clamp(1.8rem,4vw,3rem);font-style:italic;font-weight:400}.room-section{justify-content:center;align-items:center;padding:0 0 1rem;display:flex;position:relative}.room-container{opacity:0;width:100%;max-width:920px;margin:0 auto;padding:0 20px}.room-container svg{will-change:transform;width:100%;height:auto;display:block}.room-hint{text-align:center;color:var(--text-faint);letter-spacing:.06em;opacity:0;margin-top:.75rem;font-size:.75rem}.site-nav{opacity:0;justify-content:center;align-items:center;gap:1.5rem;padding:2.5rem 2rem 3rem;display:flex}.site-nav a{color:var(--text-light);letter-spacing:.04em;font-size:.85rem;font-weight:500;text-decoration:none;transition:color .3s;position:relative}.site-nav a:after{content:"";background:var(--dusty-rose);width:0;height:1.5px;transition:width .3s cubic-bezier(.25,.46,.45,.94);position:absolute;bottom:-4px;left:0}.site-nav a:hover{color:var(--text)}.site-nav a:hover:after{width:100%}.nav-dot{background:var(--taupe);border-radius:50%;width:3px;height:3px}.content-section{border-top:1px solid #ede5dd;padding:5rem 2rem}.section-inner{max-width:640px;margin:0 auto}.content-section h2{letter-spacing:-.01em;opacity:0;margin-bottom:1.5rem;font-family:Playfair Display,Georgia,serif;font-size:2rem;font-weight:600;transform:translateY(30px)}.content-section p{color:var(--text-light);opacity:0;margin-bottom:1rem;font-size:.95rem;line-height:1.75;transform:translateY(20px)}.project-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1.5rem;margin-top:1.5rem;display:grid}.project-card{color:inherit;opacity:0;background:#fff;border:1px solid #ede5dd;border-radius:14px;text-decoration:none;transition:transform .4s cubic-bezier(.25,.46,.45,.94),box-shadow .4s;overflow:hidden;transform:translateY(30px)}.project-card:hover{transform:translateY(-6px);box-shadow:0 12px 32px #2d24241a}.project-thumb{border-radius:0;height:130px;transition:transform .4s}.project-card:hover .project-thumb{transform:scale(1.03)}.project-card h3{padding:1rem 1.25rem .25rem;font-family:Playfair Display,Georgia,serif;font-size:1.05rem;font-weight:600}.project-card p{color:var(--text-light);opacity:1;margin:0;padding:0 1.25rem 1.25rem;font-size:.8rem;line-height:1.5;transform:none}.social-links{gap:1.25rem;margin-top:1.5rem;display:flex}.social-links a{width:46px;height:46px;color:var(--text-light);border:1.5px solid #ddd4cc;border-radius:50%;justify-content:center;align-items:center;transition:all .3s cubic-bezier(.25,.46,.45,.94);display:flex}.social-links a:hover{border-color:var(--dusty-rose);color:var(--dusty-rose);transform:translateY(-3px);box-shadow:0 4px 12px #c4878e33}.site-footer{text-align:center;color:var(--text-faint);letter-spacing:.04em;padding:2.5rem;font-size:.75rem}.hotspot{cursor:pointer}.hotspot-ring{pointer-events:none;animation:2.2s ease-out infinite pulse}@keyframes pulse{0%{r:12;opacity:.4}to{r:22;opacity:0}}.hotspot-dot{transition:r .25s cubic-bezier(.25,.46,.45,.94),fill .25s}.hotspot:hover .hotspot-dot{r:8;fill:#d45a70}.hotspot-tooltip{opacity:0;pointer-events:none;transition:opacity .3s}.hotspot:hover .hotspot-tooltip{opacity:1}.hotspot-modal{z-index:50;pointer-events:none;opacity:0;background:#fffbf8;border:1px solid #ede5dd;border-radius:12px;width:240px;padding:.85rem 1rem;transition:opacity .25s,transform .25s cubic-bezier(.25,.46,.45,.94);position:absolute;transform:translateY(6px)scale(.96);box-shadow:0 8px 28px #2d24241a,0 2px 6px #2d24240f}.hotspot-modal.is-visible{opacity:1;pointer-events:auto;transform:translateY(0)scale(1)}.hotspot-modal--right{transform-origin:0;margin-top:-24px;margin-left:16px}.hotspot-modal--left{transform-origin:100%;margin-top:-24px;margin-left:-256px}.hotspot-modal__image{border-radius:8px;width:100%;margin-bottom:.5rem;display:block}.hotspot-modal__text{color:var(--text-light);margin:0;font-size:.8rem;line-height:1.55;opacity:1!important;transform:none!important}.hotspot-modal__link{letter-spacing:.04em;color:var(--dusty-rose);margin-top:.55rem;font-size:.72rem;font-weight:500;text-decoration:none;transition:color .2s;display:inline-block}.hotspot-modal__link:hover{color:#a6687a}.hotspot-modal__contacts{flex-direction:column;gap:.4rem;margin-top:.5rem;display:flex}.hotspot-modal__contact-link{color:var(--text-light);background:#f5efea;border-radius:8px;align-items:center;gap:.45rem;padding:.4rem .6rem;font-size:.78rem;font-weight:500;text-decoration:none;transition:all .2s;display:flex}.hotspot-modal__contact-link:hover{color:var(--text);background:#ede5dd;transform:translate(2px)}.hotspot-modal__contact-icon{color:var(--dusty-rose);align-items:center;display:flex}.speech-bubble{z-index:40;pointer-events:none;opacity:0;margin-top:-200px;margin-left:15px;animation:3s ease-in-out infinite paused bubbleFloat;position:absolute}.speech-bubble span{letter-spacing:.02em;color:var(--text-light);white-space:nowrap;background:#fffbf8;border:1px solid #ede5dd;border-radius:12px 12px 12px 4px;padding:.5rem .85rem;font-size:.72rem;font-weight:400;display:inline-block;box-shadow:0 4px 16px #2d242414}@keyframes bubbleFadeIn{0%{opacity:0;transform:translateY(8px)scale(.9)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes bubbleFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.room-item{opacity:1}.fairy-glow{animation:3s ease-in-out infinite twinkle}@keyframes twinkle{0%,to{opacity:.9;r:4}50%{opacity:.3;r:3}}.fairy-dot{animation:3s ease-in-out infinite twinkleDot}@keyframes twinkleDot{0%,to{opacity:1}50%{opacity:.5}}.dust-mote{animation:10s ease-in-out infinite dustFloat}@keyframes dustFloat{0%{opacity:0;transform:translate(0)}15%{opacity:.5}85%{opacity:.4}to{opacity:0;transform:translate(-10px,-35px)}}.steam{animation:3.5s ease-out infinite steamRise}@keyframes steamRise{0%{opacity:.25;transform:translateY(0)scaleX(1)}50%{opacity:.15;transform:translateY(-8px)scaleX(1.1)}to{opacity:0;transform:translateY(-18px)scaleX(.8)}}.tail-wag{transform-box:fill-box;transform-origin:0 100%;animation:1s ease-in-out infinite alternate wagTail}@keyframes wagTail{0%{transform:rotate(-4deg)}to{transform:rotate(6deg)}}.candle-flame{transform-box:fill-box;transform-origin:bottom;animation:.8s ease-in-out infinite alternate flicker}@keyframes flicker{0%{opacity:.9;transform:scaleY(1)scaleX(1)}25%{opacity:1;transform:scaleY(1.1)scaleX(.9)}50%{opacity:.85;transform:scaleY(.95)scaleX(1.05)}75%{opacity:.95;transform:scaleY(1.05)scaleX(.95)}to{opacity:.9;transform:scaleY(1)scaleX(1)}}.lamp-pulse{animation:3s ease-in-out infinite lampPulse}@keyframes lampPulse{0%,to{opacity:.25}50%{opacity:.45}}@media (width<=640px){.site-header{padding:4rem 1.5rem 1.5rem}.room-container{padding:0 10px}.content-section{padding:3.5rem 1.5rem}.project-grid{grid-template-columns:1fr}}
