html{scroll-behavior:smooth}
body{margin:0;background:#ece7d6;font-family:'Work Sans',sans-serif;color:#23261f;overflow-x:hidden;opacity:1;transition:opacity .14s ease}
html.page-loading body,html.page-leaving body{opacity:0}
::selection{background:#4a6741;color:#ece7d6}

/* Hard horizontal lock for every page. `clip` clips the x axis without turning
   the element into a scroll container, so the page can never be panned
   sideways and overflow-y stays `visible` -- position:sticky and smooth
   scrolling keep working. body{overflow-x:hidden} above remains the fallback
   for engines without overflow:clip (pre-Safari 16). */
@supports (overflow:clip){
  html{overflow-x:clip}
  body{overflow-x:clip}
}

a[href="book.html"]{display:none!important}
a[data-tel]{cursor:pointer}

@keyframes nav-button-entry{
  0%{opacity:0;transform:translateY(-24px) rotate(-5deg) scale(.72)}
  58%{opacity:1;transform:translateY(4px) rotate(1.5deg) scale(1.07)}
  78%{transform:translateY(-2px) rotate(-.5deg) scale(.98)}
  100%{opacity:1;transform:translateY(0) rotate(0) scale(1)}
}
.nav-btn--current{display:none!important}
.site-nav-ready > .nav-btn:not(.nav-btn--current){
  animation:nav-button-entry 1s cubic-bezier(.22,1,.36,1) backwards;
  animation-delay:calc(var(--nav-index,0) * .08s);
}

@media (min-width:769px){
  .nav-btn{
    padding:14px 18px!important;
    font-size:12px!important;
    border-radius:8px!important;
    transition:transform .18s ease;
    transform-origin:center;
  }
}
@media (min-width:769px) and (hover:hover) and (pointer:fine){
  .nav-btn:hover{transform:scale(1.05)}
}
@media (max-width:400px){
  .nav-btn{padding:8px 9px!important;font-size:8px!important}
}

.mobile-nav-shell{display:none}
@media (max-width:768px){
  .site-nav{display:none!important}
  .mobile-nav-shell{
    position:fixed;display:block;z-index:1000000;pointer-events:none;
  }
  .mobile-nav-toggle{
    position:absolute;top:18px;right:18px;width:48px;height:44px;
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
    padding:0;border:2px solid #4a6741;border-bottom-width:4px;border-radius:9px;
    background:#ece7d6;box-shadow:0 5px 14px rgba(35,38,31,.2);
    cursor:pointer;pointer-events:auto;
  }
  .mobile-nav-toggle span{display:block;width:23px;height:3px;border-radius:2px;background:#31462b}
  .mobile-nav-shade{
    position:absolute;inset:0;background:rgba(16,18,14,.56);opacity:0;
    transition:opacity .25s ease;pointer-events:none;
  }
  .mobile-nav-drawer{
    position:absolute;top:0;right:0;width:min(82%,340px);height:100%;
    padding:84px 24px 32px;background:#ece7d6;border-left:3px solid #4a6741;
    box-shadow:-14px 0 36px rgba(18,21,16,.28);transform:translateX(105%);
    transition:transform .32s cubic-bezier(.22,1,.36,1);pointer-events:none;
  }
  .mobile-nav-close{
    position:absolute;top:20px;right:20px;width:44px;height:44px;border:0;
    background:transparent;cursor:pointer;
  }
  .mobile-nav-close span{position:absolute;left:9px;top:20px;width:27px;height:3px;border-radius:2px;background:#23261f}
  .mobile-nav-close span:first-child{transform:rotate(45deg)}
  .mobile-nav-close span:last-child{transform:rotate(-45deg)}
  .mobile-nav-links{display:flex;flex-direction:column;align-items:stretch;gap:13px}
  .mobile-nav-links .nav-btn{
    width:100%;box-sizing:border-box;text-align:center;padding:15px 14px!important;
    font-size:10px!important;opacity:0;transform:translateX(38px);animation:none;
  }
  .mobile-nav-shell.is-open .mobile-nav-toggle{opacity:0;pointer-events:none}
  .mobile-nav-shell.is-open .mobile-nav-shade{opacity:1;pointer-events:auto}
  .mobile-nav-shell.is-open .mobile-nav-drawer{transform:translateX(0);pointer-events:auto}
  .mobile-nav-shell.is-open .mobile-nav-links .nav-btn{
    opacity:1;transform:translateX(0);
    transition:opacity .3s ease calc(var(--mobile-nav-index) * 55ms + 80ms),transform .35s cubic-bezier(.22,1,.36,1) calc(var(--mobile-nav-index) * 55ms + 80ms);
  }
  html.mobile-nav-open{overflow:hidden}
  html.mobile-nav-open .wheel-nav{visibility:hidden!important;pointer-events:none!important}
}

@media (prefers-reduced-motion:reduce){
  body{transition:none}
  .nav-btn{animation:none}
  .mobile-nav-shade,.mobile-nav-drawer,.mobile-nav-links .nav-btn{transition:none!important}
}

@keyframes stamp-drop{
  0%{opacity:0;scale:1.5}
  70%{opacity:1;scale:.94}
  100%{opacity:1;scale:1}
}
@keyframes stamp-dot{0%,60%{opacity:1}61%,100%{opacity:.15}}

.coming-soon-stamp{
  display:inline-flex;align-items:center;gap:.7em;
  background:#3f5a38;color:#f2eeda;
  font-family:'Press Start 2P',monospace;letter-spacing:1px;line-height:1;
  padding:.85em 1em;border-radius:6px;
  border-bottom:.28em solid #26361f;
  box-shadow:0 .3em .9em rgba(35,38,31,.3);
  rotate:var(--stamp-r,9deg);
  animation:stamp-drop .7s cubic-bezier(.22,1,.36,1) .35s backwards;
  white-space:nowrap;
}
.coming-soon-stamp::before{
  content:'';width:.55em;height:.55em;border-radius:50%;
  background:#ffd479;flex:0 0 auto;
  animation:stamp-dot 1.4s steps(1,end) infinite;
}

@keyframes bar-scan{0%{transform:translateX(-100%)}100%{transform:translateX(240%)}}
@keyframes bar-flicker{
  0%,100%{opacity:1}
  6%{opacity:.55}
  9%{opacity:1}
  38%{opacity:.72}
  41%{opacity:1}
  73%{opacity:.5}
  77%{opacity:1}
}

.build-bar{
  position:relative;height:16px;border-radius:3px;overflow:hidden;
  background:#2c3327;border:2px solid #55614a;
}
.build-bar-fill{
  position:absolute;inset:0 auto 0 0;width:var(--pct,90%);
  background:repeating-linear-gradient(115deg,#8fb3a8 0 10px,#7ba396 10px 20px);
  animation:bar-flicker 3.6s ease-in-out infinite;
}
.build-bar-fill::after{
  content:'';position:absolute;top:0;bottom:0;width:32%;
  background:linear-gradient(90deg,transparent,rgba(242,238,218,.55),transparent);
  animation:bar-scan 2.4s linear infinite;
}
.build-bar-track-light{background:#ded7bd;border-color:#b3ab8b}
.build-bar-track-light .build-bar-fill{
  background:repeating-linear-gradient(115deg,#5f8069 0 10px,#4a6741 10px 20px);
}

.terminal-footer{position:relative;background:#20231c;color:#c8d8bd;padding:36px 24px 28px}
.terminal-footer-inner{max-width:1180px;margin:0 auto}
.terminal-footer-dots{display:flex;gap:8px;margin-bottom:24px}
.terminal-footer-dots span{width:12px;height:12px;border-radius:50%;display:block}
.terminal-footer-grid{
  display:grid;grid-template-columns:minmax(0,1.35fr) minmax(260px,.65fr);
  gap:clamp(30px,4vw,64px);align-items:start;margin:4px 0 28px;
  font-family:'VT323',monospace;font-size:20px;line-height:1.7;color:#e9ece1;
}
.terminal-footer-column{min-width:0}
.terminal-footer-progress{max-width:560px}
.terminal-footer-contact{overflow-wrap:anywhere}
.terminal-footer-bottom{
  display:flex;gap:16px;flex-wrap:wrap;font-family:'Work Sans',sans-serif;
  font-size:13px;color:#9aa78d;border-top:1px solid #3a442f;padding-top:20px;
}
.terminal-footer-bottom a{text-decoration:none}
@media (max-width:800px){
  .terminal-footer-grid{grid-template-columns:1fr;gap:28px}
  .terminal-footer-progress{max-width:520px}
}

@media (prefers-reduced-motion:reduce){
  .coming-soon-stamp{animation:none}
  .coming-soon-stamp::before{animation:none}
  .build-bar-fill{animation:none}
  .build-bar-fill::after{animation:none;display:none}
}
