/* Responsive header, footer and brand contact controls. */
.head .brand{flex-shrink:0}nav{gap:clamp(12px,1.5vw,20px);white-space:nowrap}nav .btn{padding:12px 17px}.menu-toggle{width:44px;height:44px;border-radius:12px}.menu-toggle:hover{background:#eee8dc}.footer-row{align-items:flex-start}.footer-row .brand{flex:0 1 360px}.footer-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;max-width:540px;width:100%;margin:0}.footer-links a{display:flex;align-items:center;min-height:48px;padding:12px 16px;border:1px solid var(--line);border-radius:12px;background:#fffdf85c;overflow-wrap:anywhere}.fine{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}.owner-link{margin:0;min-height:44px;display:inline-flex;align-items:center}.app-detail-image{aspect-ratio:4/5;background:#eee8dc}.contact-float{position:fixed;right:max(16px,env(safe-area-inset-right));top:140px;z-index:11;display:flex;flex-direction:column;gap:8px}.contact-icon{width:48px;height:48px;border:1px solid var(--line);border-radius:17px;background:var(--paper);color:var(--accent-text,var(--olive));display:flex;align-items:center;justify-content:center;position:relative;box-shadow:0 5px 18px #3b302712;font-weight:700;font-size:18px}.contact-icon svg{width:23px;height:23px}.contact-icon:hover{background:#eee8dc}.contact-channels{display:flex;flex-direction:column;gap:8px}.contact-label{position:absolute;right:58px;white-space:nowrap;background:var(--paper);border:1px solid var(--line);padding:4px 9px;border-radius:8px;font-size:11px;font-weight:500;opacity:0;pointer-events:none}.contact-icon:hover .contact-label,.contact-icon:focus-visible .contact-label{opacity:1}.contact-float.open #contactToggle{background:var(--olive);color:var(--accent-foreground,#fff)}.contact-float.open #contactToggle{animation:contact-wobble .42s ease}.contact-float.open .contact-channels .contact-icon{animation:contact-enter .28s ease both}.contact-channels .contact-icon:nth-child(2){animation-delay:.05s!important}.contact-channels .contact-icon:nth-child(3){animation-delay:.1s!important}.contact-channels .contact-icon:nth-child(4){animation-delay:.15s!important}.contact-float.closing .contact-channels{animation:contact-exit .2s ease both}.contact-float.closing #contactToggle{animation:contact-wobble .3s ease}@keyframes contact-wobble{0%,100%{transform:rotate(0)}25%{transform:rotate(-12deg)}65%{transform:rotate(9deg)}}@keyframes contact-enter{from{opacity:0;transform:translateY(-12px) scale(.8)}to{opacity:1;transform:none}}@keyframes contact-exit{to{opacity:0;transform:translateY(-12px) scale(.9)}}
@media(max-width:1100px){.head{height:78px;position:relative}.head .brand-logo{width:200px}.menu-toggle{display:block}nav{display:none;position:absolute;top:calc(100% + 8px);left:auto;right:24px;width:260px;max-width:calc(100vw - 40px);padding:12px;flex-direction:column;align-items:stretch;gap:4px;background:var(--paper);border:1px solid var(--line);border-radius:16px;box-shadow:0 12px 32px #3b30271c;max-height:calc(100dvh - 110px);overflow-y:auto}nav.open{display:flex;top:calc(100% + 8px)}nav a{padding:12px 14px;border-radius:9px;min-height:46px}nav a:hover{background:#eee8dc}nav .btn{margin-top:7px;white-space:normal}.footer-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:30px}.foot{padding-top:30px;padding-bottom:40px}.foot .brand-logo{width:min(220px,100%)}.contact-float{top:122px;right:12px}body:has(nav.open) .contact-float{visibility:hidden}}
@media(max-width:600px){.head{height:74px}.head .brand-logo{width:180px}nav{right:18px;width:245px}.footer-row{grid-template-columns:1fr;gap:20px}.footer-row .brand p{font-size:12px;line-height:1.9;margin-bottom:0}.footer-links{max-width:none;gap:8px}.footer-links a{padding:12px;font-size:11px}.fine{display:block;margin-top:20px;padding-top:15px;line-height:1.8}.owner-link{margin-top:8px}.foot{padding-bottom:calc(95px + env(safe-area-inset-bottom));padding-top:26px}.mobile-bottom{padding-bottom:calc(10px + env(safe-area-inset-bottom))}.contact-float{top:118px;right:10px}.contact-icon{width:44px;height:44px;border-radius:15px}.contact-label{right:52px}}
@media(prefers-reduced-motion:reduce){.contact-float *{animation:none!important;transition:none!important}}

@media(min-width:601px) and (max-width:800px){.foot{padding-bottom:calc(100px + env(safe-area-inset-bottom))}}
/* The open phone link occupies the launcher position: four icons total. */
.contact-float.open:not(.closing) #contactToggle{display:none}.contact-float.closing #contactToggle{display:flex}.contact-float.closing .contact-channels .contact-icon:first-child{display:none}

/* A gentle greeting wobble, followed by the channel cascade. */
.contact-float.open .contact-channels .contact-icon:first-child{animation:contact-greeting 1.5s ease-in-out both}
.contact-float.closing #contactToggle{animation:contact-greeting 1.5s ease-in-out both}
.contact-channels .contact-icon:nth-child(5){animation-delay:.2s!important}
@keyframes contact-greeting{0%,100%{transform:rotate(0)}12%{transform:rotate(-10deg)}25%{transform:rotate(9deg)}38%{transform:rotate(-8deg)}51%{transform:rotate(7deg)}64%{transform:rotate(-5deg)}77%{transform:rotate(4deg)}90%{transform:rotate(-2deg)}}
@media(prefers-reduced-motion:reduce){.contact-float *{animation:none!important}}

/* Quiet text links in the footer, with generous touch targets. */
.footer-links{display:flex;flex-wrap:wrap;gap:6px 22px;width:auto;max-width:600px}.footer-links a{display:inline-flex;min-height:44px;padding:5px 0;border:0;border-radius:0;background:none;font-size:12px}.footer-row .brand{flex:0 1 340px}
.contact-float.closing .contact-channels{animation:contact-soft-exit .95s cubic-bezier(.22,.61,.36,1) both}
@keyframes contact-soft-exit{0%{opacity:1;transform:none}100%{opacity:0;transform:translateY(-28px) scale(.94)}}
@media(max-width:1100px){.footer-row{grid-template-columns:minmax(0,1fr)}.footer-links{margin:0;gap:4px 22px}}
@media(prefers-reduced-motion:reduce){.contact-float *{animation:none!important}}
