/* Fluid type: rem bounds preserve user sizing; viewport terms interpolate.
   Layout breakpoints only change composition or accommodate short screens. */
:root{
 --type-body:clamp(.8125rem, .74rem + .25vw, 1rem);
 --type-small:clamp(.75rem, .69rem + .18vw, .875rem);
 --type-section:clamp(2rem, 1.18rem + 3.3vw, 4.125rem);
 --type-label:clamp(.5625rem, .52rem + .12vw, .6875rem);
}
.hero-intro h1{font-size:clamp(2rem, 1.3rem + 4.1vw, 5.25rem);line-height:1.02}
.hero-description{font-size:clamp(.75rem, .69rem + .25vw, .9375rem);line-height:1.55}
.hero-intro .eyebrow{font-size:var(--type-label)}
.hero-actions .btn,.nav-actions .btn{font-size:clamp(.75rem, .69rem + .18vw, .875rem)}
.hero-actions .text-link{font-size:var(--type-small)}
.site-header .nav{font-size:var(--type-small)}
.sec-title,.app-copy h2{font-size:var(--type-section);line-height:1.06}
.inside-heading h2{font-size:clamp(1.75rem, 1.3rem + 1.8vw, 3.375rem);line-height:1.08}
.stage-line{font-size:clamp(1.75rem, 1.05rem + 3.25vw, 4.5rem)}
.callout,.callout span{font-size:var(--type-body)}
.callout b{font-size:clamp(1.625rem, 1.25rem + 1.5vw, 2.625rem);line-height:1.08}
#features-title{font-size:clamp(2rem, 1.5rem + 1.6vw, 3.25rem);line-height:1.08}
#features-eyebrow{font-size:var(--type-label)}
.f-txt b{font-size:clamp(.75rem, .625rem + .58vw, 1.375rem)}
.features li.on .f-txt b{font-size:clamp(1.0625rem, 1rem + .6vw, 1.75rem);line-height:1.15}
.f-txt em{font-size:clamp(.625rem, .56rem + .23vw, .9375rem);line-height:1.5}
.ac h5,.ac-meal h5,.ac-pair h5{font-size:clamp(1rem, .9rem + .4vw, 1.25rem)}
.ac-stat strong{font-size:clamp(1.5rem, 1.45rem + .75vw, 2.125rem)}
.ac-stat strong span{font-size:clamp(.75rem, .62rem + .4vw, 1.0625rem)}
.ac p{font-size:clamp(.5625rem, .5rem + .23vw, .6875rem)}
.ac small{font-size:clamp(.5rem, .45rem + .13vw, .625rem)}
.family-labels>span{font-size:clamp(1.375rem, 1.16rem + .83vw, 2rem)}
.inside-caption h3{font-size:clamp(1.0625rem, .75rem + 1.3vw, 1.875rem);line-height:1.14}
.inside-caption p{font-size:clamp(.6875rem, .6rem + .4vw, .9375rem);line-height:1.55}
.band-ghost-word{font-size:clamp(5rem, 19vw, 15.625rem)}
.band-heading>p:last-child,.app-copy>p:not(.eyebrow){font-size:var(--type-body);line-height:1.6}
.combo span{font-size:var(--type-label)}
.app-view-tabs button{font-size:clamp(.625rem, .58rem + .2vw, .75rem)}
.card-copy h3{font-size:clamp(1.375rem, 1.25rem + .35vw, 1.625rem);line-height:1.1}
.card-copy p{font-size:var(--type-body);line-height:1.5}
.dims{font-size:clamp(1.75rem, 1.5rem + .6vw, 2.25rem)}
.press-section h2{font-size:clamp(1.3125rem, 1.25rem + .12vw, 1.4375rem)}
.launch-offer h3{font-size:clamp(1.875rem, 1.7rem + .55vw, 2.25rem)}
.launch-offer>p,.waitlist-intro,.buy-note,.preview-caption{font-size:var(--type-small)}
.buy-form .opt-group h4,.sum-line{font-size:clamp(.8125rem, .75rem + .2vw, .9375rem)}
.sum-line strong{font-size:clamp(1.375rem, 1.2rem + .4vw, 1.625rem)}
.btn-xl{font-size:clamp(.9375rem, .88rem + .16vw, 1.0625rem)}
.modal-card h3{font-size:clamp(1.5rem, 1.35rem + .6vw, 1.875rem)}
.modal-card input{font-size:clamp(1rem, .96rem + .1vw, 1.0625rem)}
.foot-tag{font-size:clamp(1.375rem, 1.15rem + .65vw, 2rem)}
.foot-nav{font-size:var(--type-small)}
.legal{font-size:clamp(.6875rem, .65rem + .12vw, .75rem)}

/* Laptop hero also responds to available height to leave room for the dog. */
@media(min-width:901px) and (min-height:560px) and (max-height:900px){
 .hero-intro h1{font-size:clamp(2.5rem, min(1.3rem + 4.1vw, 8.2svh), 4.25rem);line-height:.96}
 .hero-description{font-size:clamp(.8125rem, .73rem + .1vw, .875rem);line-height:1.5}
 .hero-intro .eyebrow{font-size:clamp(.5625rem, .51rem + .08vw, .625rem)}
}
@media(min-width:901px) and (min-height:560px) and (max-height:650px){
 .hero-intro{top:82px}
 .hero-intro h1{font-size:clamp(2.5rem, 7.4svh, 3rem);line-height:.94}
 .hero-intro .eyebrow{margin-bottom:4px}
 .hero-description{margin:6px auto 10px}
}
@media(max-width:900px){
 #features-title{font-size:clamp(1.5rem, 1.25rem + 2.3vw, 2.25rem)}
 #features-eyebrow{font-size:clamp(.5rem, .46rem + .1vw, .5625rem)}
 .stage-line{font-size:clamp(1.625rem, 1.25rem + 2.4vw, 2.5rem)}
 .callout b{font-size:clamp(1.5rem, 1.25rem + 1vw, 1.875rem)}
 .hero-benefits li{font-size:clamp(.625rem, .58rem + .18vw, .75rem)}
}
@media(max-width:900px) and (max-height:710px){
 .hero-intro h1{font-size:clamp(1.875rem, 1.3rem + 3.6vw, 3rem)}
 #features-title{font-size:clamp(1.4375rem, 1.02rem + 2.1vw, 1.6875rem)}
 .features li.on .f-txt b{font-size:clamp(1rem, .93rem + .4vw, 1.125rem)}
}
/* Longer translations retain their two-line composition on narrow screens. */
@media(max-width:649px){
 html[lang=fi] .hero-intro h1{font-size:clamp(1.25rem, 1rem + 2vw, 2.5rem)}
 html[lang=de] .hero-intro h1{font-size:clamp(1.3125rem, 1rem + 2.4vw, 2.625rem)}
 html[lang=fi] .features li.on .f-txt b,
 html[lang=de] .features li.on .f-txt b,
 html[lang=fr] .features li.on .f-txt b{font-size:clamp(.875rem, .8rem + .45vw, 1.0625rem)}
}
@media(max-height:520px) and (orientation:landscape){
 .hero-intro h1{font-size:clamp(1.625rem, 1.3rem + 1.1vw, 2rem)}
 #features-title{font-size:clamp(1.125rem, 1rem + .6vw, 1.5rem)}
 .f-txt b{font-size:clamp(.6875rem, .6rem + .15vw, .8125rem)}
 .features li.on .f-txt b{font-size:clamp(.8125rem, .7rem + .25vw, .9375rem)}
 .inside-heading h2{font-size:clamp(1.375rem, 1.15rem + .6vw, 1.625rem)}
 .inside-caption h3{font-size:clamp(1rem, .9rem + .2vw, 1.125rem)}
}

/* Keep phrases intact across languages without freezing whole paragraphs. */
h1,h2,h3,h4,h5,.f-txt b,.hero-benefits li,.tick figcaption b{ text-wrap:balance; }
p,.f-txt em,.tick figcaption span,.waitlist-consent span,.order-note{ text-wrap:pretty; }
.hero-description{max-width:54ch;margin-left:auto;margin-right:auto}
.hero-description>span,.band-heading>p>span,.app-copy>p>span{display:inline}
.hero-description>span+span::before{content:' ';white-space:normal}
.band-heading>p:last-child,.app-copy>p:not(.eyebrow){max-width:48ch;margin-left:auto;margin-right:auto}
.card-copy p,.inside-caption p,.tick figcaption span,.order-note,.legal{hyphens:auto}
.hero-word-mask,.f-txt,.app-welcome>div,.vet-pet>div{min-width:0}
.features li.on .f-txt em{max-height:5em}
.sum-line>span:first-child{min-width:0;overflow-wrap:anywhere;text-wrap:pretty}
.sum-pricing{flex-shrink:0}
.availability{line-height:1.5;text-wrap:pretty}
.launch-offer h3{max-width:19ch;text-wrap:balance}
#preorder-btn,#order-form button[type=submit]{white-space:normal;text-wrap:balance;line-height:1.25}
@media(max-width:649px){
 .hero-description{max-width:44ch}
 .app-view-tabs{gap:4px}
 .app-view-tabs button{white-space:normal;line-height:1.25;text-wrap:balance;min-width:0}
 html[lang=de] .hero-intro h1{font-size:clamp(1.3125rem,1rem + 2.4vw,2.625rem)}
 html[lang=es] .hero-intro h1,html[lang=fr] .hero-intro h1{font-size:clamp(1.7rem,1.15rem + 3.3vw,3rem)}
}
