@font-face{
    font-family:LINE Seed JP;
    src:url('../fonts/LINESeedJP_OTF_Rg.latin.woff2') format('woff2');
    font-weight:400;
    font-display:swap;
    unicode-range:U+0000-024F,U+1E00-1EFF,U+2000-206F,U+20A0-20CF,U+2122
}
@font-face{
    font-family:LINE Seed JP;
    src:url('../fonts/LINESeedJP_OTF_Bd.latin.woff2') format('woff2');
    font-weight:700;
    font-display:swap;
    unicode-range:U+0000-024F,U+1E00-1EFF,U+2000-206F,U+20A0-20CF,U+2122
}
@font-face{
    font-family:LINE Seed JP;
    src:url('../fonts/LINESeedJP_OTF_Eb.latin.woff2') format('woff2');
    font-weight:800;
    font-display:swap;
    unicode-range:U+0000-024F,U+1E00-1EFF,U+2000-206F,U+20A0-20CF,U+2122
}
:root{
    --red:#d7233a;
    --paper:#f1f1f1;
    --ink:#080808;
    --container:1214px
}
*{
    box-sizing:border-box
}
html{
    scroll-behavior:smooth;
    scroll-padding-top:95px
}
body{
    margin:0;
    font-family:LINE Seed JP,Arial,sans-serif;
    color:var(--ink);
    background:var(--paper);
    line-height:1.2
}
h1,h2,h3,p,dl,dd{
    margin:0
}
a{
    color:inherit;
    text-decoration:none
}
button{
    font:inherit
}
img{
    display:block;
    max-width:100%
}
a:focus-visible,button:focus-visible{
    outline:3px solid #1769aa;
    outline-offset:5px
}
a:hover{
    color:var(--red)
}
.skip-link{
    position:fixed;
    left:20px;
    top:-100px;
    z-index:100;
    background:white;
    padding:12px
}
.skip-link:focus{
    top:12px
}
.site-header{
    height:75px;
    position:absolute;
    top:0;
    left:0;
    width:100%;
    z-index:10;
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:0 max(3.54%,calc((100% - 1338px)/2));
    padding-left:max(4.93%,calc((100% - 1298px)/2));
    background:rgb(255 255 255 / 90%);
    backdrop-filter:blur(2px);
    border-bottom:1px solid #ececec
}
.brand-crop{
    position:relative;
    display:block;
    flex:none;
    width:85px;
    height:62px;
    overflow:hidden
}
.brand-crop img{
    position:absolute;
    max-width:none;
    width:164.81%;
    height:133.11%;
    left:-31.48%;
    top:-3.9%
}
.primary-nav{
    display:flex;
    align-items:center;
    gap:39px;
    font-size:24px
}
.primary-nav a{
    position:relative;
    white-space:nowrap
}
.primary-nav a[aria-current]::after{
    content:'';
    height:2px;
    background:var(--red);
    position:absolute;
    bottom:-6px;
    left:3px;
    right:3px
}
.primary-nav .language-link{
    font-weight:700;
    margin-left:31px
}
.menu-toggle{
    border:0;
    background:none;
    cursor:pointer
}
.menu-toggle[hidden]{
    display:none
}
.hero{
    height:666px;
    position:relative;
    overflow:hidden;
    color:white
}
.hero-image{
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    min-height:0;
    max-width:none;
    object-fit:cover;
    object-position:center
}
.hero-shadow{
    position:absolute;
    left:0;
    top:0;
    width:66.4%;
    height:100%;
    background:linear-gradient(90deg,rgba(0,0,0,.7),rgba(0,0,0,.26) 67.3%,transparent)
}
.hero::after{
    content:'';
    position:absolute;
    z-index:2;
    left:-1%;
    bottom:-114px;
    width:102%;
    height:142px;
    background:var(--red);
    transform:rotate(-1.03deg)
}
.hero-content{
    position:relative;
    max-width:1210px;
    margin:auto;
    padding-top:153px
}
.hero h1{
    font-size:56px;
    line-height:1.12;
    font-weight:800;
    max-width:679px
}
.hero p{
    font-size:28px;
    font-weight:700;
    line-height:1.2;
    margin-top:34px
}
.button{
    display:flex;
    align-items:center;
    justify-content:center;
    min-height:79px;
    width:514px;
    max-width:100%;
    background:var(--red);
    color:white;
    border-radius:4px;
    font-size:28px;
    font-weight:700;
    text-align:center;
    padding:16px 20px;
    transition:background .15s
}
.button:hover{
    color:white;
    background:#b71b30
}
.hero-button{
    margin-top:43px
}
.emergency{
    height:125px;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:59px;
    background:white;
    padding:12px 24px
}
.emergency-icon{
    position:relative;
    width:117px;
    height:100px;
    flex:none;
    overflow:hidden
}
.emergency-icon img{
    position:absolute;
    max-width:none;
    width:150.41%;
    height:117.8%;
    left:-23.97%;
    top:-4.05%
}
.emergency p{
    font-size:32px;
    font-weight:700
}
.emergency a{
    color:var(--red);
    white-space:nowrap
}
.section-container{
    max-width:var(--container);
    margin:auto
}
.services{
    padding-top:94px;
    padding-bottom:67px
}
.section-title{
    font-size:48px;
    line-height:1.1;
    font-weight:700
}
.section-title::after{
    content:'';
    display:block;
    background:var(--red);
    width:303px;
    max-width:100%;
    height:6px;
    border-radius:3px;
    margin-top:18px
}
.service-grid{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:49px 35px;
    margin-top:56px
}
.service-card{
    position:relative;
    min-height:518px;
    background:#fff;
    border-radius:18px;
    overflow:hidden;
    box-shadow:0 4px 21.4px 4px rgb(0 0 0 / 11%);
    padding-bottom:83px
}
.service-photo{
    position:relative;
    height:254px;
    overflow:hidden
}
.service-photo>img:not(.card-accent){
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    object-fit:cover;
    object-position:center
}
.service-photo .card-accent{
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:55px
}
.service-copy{
    padding:25px 28px 0
}
.service-copy h3{
    font-size:18px;
    font-weight:700;
    line-height:1.2
}
.service-copy h3::after{
    content:'';
    display:block;
    width:158px;
    height:3px;
    border-radius:3px;
    background:var(--red);
    margin-top:10px
}
.service-copy p{
    font-size:18px;
    line-height:1.2;
    margin-top:12px
}
.service-link{
    position:absolute;
    bottom:23px;
    right:28px;
    width:46px;
    height:45px;
    transition:transform .15s
}
.service-link:hover{
    transform:translateX(3px)
}
.service-link>img{
    width:46px;
    height:45px
}
.service-link .arrow{
    position:absolute;
    width:23px;
    height:23px;
    top:11px;
    left:12px
}
.more-button{
    width:326px;
    min-height:63px;
    margin:49px auto 0;
    border-radius:0;
    font-size:24px
}
.about{
    background:white
}
.about-inner{
    max-width:1318px;
    margin:auto;
    padding-top:62px;
    padding-bottom:81px;
    display:grid;
    grid-template-columns:566px minmax(0,1fr);
    gap:84px;
    min-height:709px
}
.about-photo{
    position:relative;
    height:566px
}
.about-photo::before{
    content:'';
    position:absolute;
    left:-22px;
    bottom:-22px;
    width:326px;
    height:511px;
    background:var(--red)
}
.about-photo-crop{
    position:relative;
    width:100%;
    height:100%;
    overflow:hidden
}
.about-photo img{
    position:absolute;
    max-width:none;
    width:166.46%;
    height:124.88%;
    left:-20.81%;
    top:-24.87%
}
.about-copy{
    padding-top:17px
}
.about-copy .section-title{
    white-space:nowrap
}
.about-copy .section-title::after{
    margin-top:20px
}
.about-description{
    font-size:28px;
    line-height:1.2;
    margin-top:39px;
    max-width:632px
}
.about-link{
    display:flex;
    width:260px;
    align-items:center;
    justify-content:space-between;
    font-size:25px;
    border-bottom:1px solid var(--red);
    padding:6px 0 10px;
    margin-top:19px
}
.about-link img{
    width:35px;
    height:15px
}
.stats{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:20px;
    text-align:center;
    margin-top:56px
}
.stats dt{
    font-size:50px;
    font-weight:700;
    color:var(--red)
}
.stats dd{
    font-size:20px;
    line-height:1.65;
    margin-top:14px
}
.clients{
    height:151px;
    background:#e1e1e1;
    overflow:hidden;
    display:flex;
    align-items:center;
    padding-left:max(39px,calc((100% - 1362px)/2))
}
.clients img{
    width:1514px;
    height:70.44px;
    max-width:none;
    flex:none
}
.contact{
    height:594px;
    position:relative;
    overflow:hidden;
    background:#1a1d24;
    color:#fff
}
.contact-image{
    position:absolute;
    left:31.6%;
    top:0;
    width:73.125%;
    height:594px;
    overflow:hidden
}
.contact-image img{
    position:absolute;
    max-width:none;
    width:100%;
    height:118.28%;
    top:-18.21%;
    object-fit:cover
}
.contact-shadow{
    position:absolute;
    inset:0;
    background:linear-gradient(90deg,#1a1d24 0%,#1b1d24 36.542%,rgba(27,29,36,.88) 46.158%,rgba(28,30,37,0) 100%)
}
.contact-accent{
    position:absolute;
    top:0;
    left:-7px;
    width:calc(100% + 7px);
    height:43px;
    max-width:none;
    transform:scaleY(-1)
}
.contact-content{
    position:relative;
    max-width:1276px;
    margin:auto;
    padding-top:103px
}
.contact .section-title{
    font-size:55px;
    font-weight:800;
    line-height:1.1
}
.contact .section-title::after{
    width:329px;
    margin-top:12px
}
.contact p{
    font-size:25px;
    line-height:1.2;
    font-weight:700;
    max-width:443px;
    margin-top:35px
}
.contact .button{
    margin-top:36px
}
.site-footer{
    background:white
}
.footer-main{
    max-width:1276px;
    margin:auto;
    height:394px;
    display:grid;
    grid-template-columns:1.1fr 1fr;
    gap:60px;
    padding-top:48px
}
.footer-brand{
    display:flex;
    align-items:center;
    gap:20px;
    font-size:25px;
    font-weight:700;
    line-height:1.2
}
.footer-brand .brand-crop{
    width:133px;
    height:106px
}
.footer-brand .brand-crop img{
    width:179.69%;
    left:-43.34%
}
.footer-brand strong{
    color:var(--red)
}
.footer-tagline{
    font-size:28px;
    line-height:1.2;
    margin-top:34px
}
.footer-nav{
    font-size:30px;
    margin-top:43px;
    white-space:nowrap
}
.footer-contact{
    padding-top:59px;
    text-align:center;
    font-weight:700;
    display:flex;
    align-items:center;
    flex-direction:column
}
.footer-contact p{
    font-size:28px;
    white-space:nowrap
}
.footer-phone{
    color:var(--red);
    font-size:34px;
    margin-top:39px
}
.footer-email{
    color:var(--red);
    font-size:25px;
    margin-top:32px
}
.copyright{
    background:#000;
    color:white;
    min-height:71px;
    padding:21px max(24px,calc((100% - 1276px)/2));
    font-size:24px;
    font-weight:700
}
.inner-page #content{
    min-height:50vh;
    max-width:1214px;
    margin:0 auto;
    padding:125px 24px 60px
}
@media(min-width:1441px){
    .hero-content{
        padding-top:153px
    }
}
@media(max-width:1350px){
    .hero-content,.section-container{
        margin-left:6%;
        margin-right:6%
    }
    .about-inner{
        margin:0 4.3%;
        grid-template-columns:44% minmax(0,1fr);
        gap:6%
    }
    .about-photo{
        height:auto;
        aspect-ratio:1
    }
    .about-copy .section-title{
        font-size:clamp(30px,3.34vw,48px)
    }
    .about-description{
        font-size:25px
    }
    .contact-content,.footer-main{
        margin:0 5.7%
    }
    .footer-main{
        gap:25px;
        grid-template-columns:1.1fr 1fr
    }
    .footer-brand{
        font-size:21px
    }
    .footer-nav{
        font-size:25px
    }
    .footer-contact p{
        font-size:23px
    }
    .footer-email{
        font-size:23px
    }
    .emergency{
        gap:35px
    }
    .emergency p{
        font-size:28px
    }
}
@media(max-width:1050px){
    .primary-nav{
        gap:25px;
        font-size:20px
    }
    .primary-nav .language-link{
        margin-left:10px
    }
    .hero-content{
        padding-top:155px
    }
    .hero h1{
        font-size:50px;
        max-width:600px
    }
    .hero-image{
        height:100%;
        min-height:100%;
        width:100%;
        object-fit:cover;
        top:0;
        object-position:center
    }
    .emergency p{
        font-size:24px
    }
    .service-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
        gap:32px
    }
    .services{
        padding:65px 0
    }
    .about-inner{
        padding:60px 0;
        min-height:0;
        align-items:center;
        gap:5%
    }
    .about-copy{
        padding:0
    }
    .about-copy .section-title{
        white-space:normal
    }
    .about-description{
        font-size:20px;
        margin-top:25px
    }
    .about-link{
        font-size:20px;
        width:220px
    }
    .stats{
        gap:8px;
        margin-top:30px
    }
    .stats dt{
        font-size:38px
    }
    .stats dd{
        font-size:14px
    }
    .about-photo::before{
        height:85%;
        width:60%;
        left:-14px;
        bottom:-14px
    }
    .contact-content{
        padding-top:105px
    }
    .footer-main{
        height:auto;
        padding:40px 0 45px;
        gap:30px
    }
    .footer-brand{
        font-size:17px;
        gap:12px
    }
    .footer-brand .brand-crop{
        width:95px;
        height:76px
    }
    .footer-tagline{
        font-size:22px
    }
    .footer-nav{
        font-size:20px;
        white-space:normal;
        line-height:1.7
    }
    .footer-contact{
        padding-top:30px
    }
    .footer-contact p{
        font-size:20px;
        white-space:normal
    }
    .footer-phone{
        font-size:29px
    }
    .footer-email{
        font-size:19px
    }
    .copyright{
        font-size:18px
    }
}
@media(max-width:700px){
    html{
        scroll-padding-top:20px
    }
    .site-header{
        min-height:75px;
        height:auto;
        flex-wrap:wrap;
        padding:6px 6%;
        gap:8px
    }
    .menu-toggle:not([hidden]){
        display:flex;
        align-items:center;
        gap:12px;
        min-height:44px
    }
    .primary-nav{
        width:100%;
        justify-content:space-between;
        font-size:16px;
        gap:14px;
        padding:10px 0 16px;
        flex-wrap:wrap
    }
    .primary-nav .language-link{
        margin-left:0
    }
    .js-menu .primary-nav{
        display:none
    }
    .js-menu .primary-nav.is-open{
        display:flex;
        flex-direction:column;
        align-items:stretch;
        gap:0
    }
    .js-menu .primary-nav a{
        padding:13px 6px
    }
    .primary-nav a[aria-current]::after{
        right:auto;
        width:45px;
        bottom:6px
    }
    .hero{
        height:auto;
        min-height:640px
    }
    .hero-image{ object-position:center }
    .hero-shadow{
        top:0;
        width:100%;
        height:100%;
        background:linear-gradient(90deg,rgba(0,0,0,.75),rgba(0,0,0,.3))
    }
    .hero-content{
        padding:154px 0 105px;
        margin:0 7%
    }
    .hero h1{
        font-size:clamp(34px,8vw,48px);
        max-width:550px;
        line-height:1.12
    }
    .hero p{
        font-size:22px;
        line-height:1.35;
        margin-top:27px
    }
    .hero-button{
        margin-top:32px
    }
    .button{
        font-size:20px;
        width:100%;
        min-height:64px;
        padding:16px 12px
    }
    .emergency{
        height:auto;
        min-height:135px;
        gap:20px;
        padding:20px 6%
    }
    .emergency-icon{
        width:82px;
        height:70px
    }
    .emergency p{
        font-size:19px;
        line-height:1.4;
        max-width:310px
    }
    .emergency a{
        display:block
    }
    .services{
        padding:52px 0;
        margin:0 7%
    }
    .section-title{
        font-size:34px
    }
    .section-title::after{
        width:215px;
        height:5px;
        margin-top:15px
    }
    .service-grid{
        grid-template-columns:1fr;
        margin-top:35px;
        gap:28px
    }
    .service-card{
        min-height:500px
    }
    .service-photo{
        height:auto;
        aspect-ratio:381/254
    }
    .service-copy{
        padding:25px 26px 0
    }
    .service-copy h3,.service-copy p{
        font-size:18px
    }
    .more-button{
        width:270px;
        margin-top:35px
    }
    .about-inner{
        display:flex;
        flex-direction:column;
        gap:45px;
        margin:0 7%;
        padding:50px 0
    }
    .about-photo{
        width:100%;
        max-width:566px
    }
    .about-copy{
        width:100%
    }
    .about-copy .section-title{
        font-size:32px
    }
    .about-description{
        font-size:22px;
        line-height:1.3
    }
    .stats{
        margin-top:36px;
        gap:8px
    }
    .stats dt{
        font-size:36px
    }
    .stats dd{
        font-size:13px
    }
    .clients{
        height:105px;
        padding-left:24px
    }
    .clients img{
        height:50px;
        width:1075px
    }
    .contact{
        height:auto;
        min-height:555px
    }
    .contact-content{
        padding:83px 0 65px;
        margin:0 7%
    }
    .contact .section-title{
        font-size:40px
    }
    .contact .section-title::after{
        width:240px
    }
    .contact p{
        font-size:22px;
        max-width:380px;
        margin-top:28px
    }
    .contact .button{
        margin-top:30px
    }
    .contact-image{
        left:0;
        width:100%;
        height:100%
    }
    .contact-image img{
        height:100%;
        top:0;
        object-position:65% center
    }
    .contact-shadow{
        background:linear-gradient(90deg,rgba(26,29,36,.98),rgba(26,29,36,.62))
    }
    .contact-accent{
        height:25px
    }
    .footer-main{
        display:flex;
        flex-direction:column;
        margin:0 7%;
        gap:38px;
        padding:35px 0
    }
    .footer-brand{
        font-size:17px;
        gap:15px
    }
    .footer-brand .brand-crop{
        width:90px;
        height:72px
    }
    .footer-tagline{
        font-size:21px;
        margin-top:24px
    }
    .footer-nav{
        font-size:18px;
        margin-top:25px
    }
    .footer-contact{
        padding:0;
        align-items:flex-start;
        text-align:left
    }
    .footer-contact p{
        font-size:20px
    }
    .footer-phone{
        margin-top:18px;
        font-size:29px
    }
    .footer-email{
        margin-top:18px;
        font-size:20px;
        overflow-wrap:anywhere
    }
    .copyright{
        padding:20px 7%;
        font-size:15px;
        line-height:1.5
    }
}
@media(prefers-reduced-motion:reduce){
    html{
        scroll-behavior:auto
    }
    *{
        transition:none!important
    }
}
@media(min-width:701px){
    .menu-toggle:not([hidden]){
        display:none
    }
}
/* Final alignment against the 1440 px HOME frame. */
@media(min-width:1351px){
    .hero-button{
        margin-top:39.7px
    }
    .emergency{
        justify-content:flex-start;
        padding-left:max(6%,calc((100% - 1128px)/2));
        gap:59px
    }
    .emergency p{
        width:923px;
        text-align:center
    }
    .about-description{
        margin-top:34.5px
    }
    .about-link{
        margin-top:22px
    }
    .stats{
        width:596px;
        grid-template-columns:repeat(3,164px);
        justify-content:space-between
    }
    .contact .button{
        margin-top:47px
    }
}
@media(max-width:700px){
    .site-header:has(.is-open){
        background:#fff
    }
    .emergency-separator{
        display:none
    }
}
@media(max-width:700px){
    .stats{
        grid-template-columns:repeat(3,minmax(0,1fr))
    }
    .stats dt{
        font-size:clamp(28px,8.5vw,36px)
    }
    .stats dd{
        font-size:clamp(11px,3.1vw,13px)
    }
    .contact .section-title{
        font-size:clamp(30px,9vw,40px)
    }
}
/* CMS content can grow without colliding with card actions or adjacent sections. */
.service-copy { overflow-wrap: anywhere; }
.service-detail-image { margin: 35px 0; max-height: 550px; width: 100%; object-fit: cover; }
.service-detail > p { font-size: 22px; line-height: 1.5; margin: 25px 0; }
.service-detail .button { margin-top: 30px; }
@media(min-width:1051px) {
    .about-photo { align-self: start; }
}
.about-copy .section-title { white-space: normal; }
@media(min-width:701px) {
    .hero { height: auto; min-height: 666px; }
    .hero-content { padding-bottom: 70px; }
    .contact { height: auto; min-height: 594px; }
    .contact-content { padding-bottom: 100px; }
}
/* Refined type scale and persistent navigation. */
html { scroll-padding-top: 95px; }
.site-header {
    position: fixed;
    color: #fff;
    background: linear-gradient(180deg, rgba(0,0,0,.9), rgba(0,0,0,.5) 65%, transparent);
    border-bottom: 0;
    backdrop-filter: none;
    transition: background .2s, color .2s, box-shadow .2s;
}
.site-header.is-scrolled,
.site-header:has(.primary-nav.is-open) {
    color: var(--ink);
    background: rgba(255,255,255,.97);
    box-shadow: 0 2px 12px rgba(0,0,0,.1);
    backdrop-filter: blur(8px);
}
.menu-toggle { color: inherit; }
.primary-nav { font-size: 18px; }
.hero h1 { font-size: 46px; max-width: 620px; line-height: 1.15; }
.hero p { font-size: 22px; line-height: 1.4; }
.button { font-size: 21px; }
.emergency p { font-size: 24px; }
.section-title, .about-copy .section-title { font-size: 36px; }
.service-copy h3 { font-size: 16px; line-height: 1.3; }
.service-copy p { font-size: 16px; line-height: 1.45; }
.more-button { font-size: 18px; }
.about-description { font-size: 21px; line-height: 1.45; }
.about-link { font-size: 18px; }
.stats dt { font-size: 40px; }
.stats dd { font-size: 16px; }
.contact .section-title { font-size: 42px; }
.contact p { font-size: 20px; line-height: 1.45; }
.footer-brand { font-size: 19px; }
.footer-tagline { font-size: 21px; line-height: 1.4; }
.footer-nav { font-size: 21px; }
.footer-contact p { font-size: 21px; }
.footer-phone { font-size: 27px; }
.footer-email { font-size: 20px; }
.copyright { font-size: 17px; }
.service-detail > p { font-size: 18px; }
.contact-page > p { margin: 28px 0; font-size: 18px; }
.contact-page-phone { font-size: 26px; color: var(--red); font-weight: 700; }
@media (min-width:701px) and (max-width:1050px) {
    .primary-nav { font-size: 17px; gap: 22px; }
    .hero h1 { font-size: 40px; }
    .emergency p { font-size: 20px; }
    .about-copy .section-title { font-size: 28px; }
    .about-description { font-size: 18px; }
    .stats dt { font-size: 32px; }
    .stats dd { font-size: 13px; }
    .footer-brand { font-size: 16px; }
    .footer-tagline, .footer-nav, .footer-contact p, .footer-email { font-size: 17px; }
}
@media (max-width:700px) {
    .primary-nav { font-size: 16px; }
    .hero h1 { font-size: clamp(28px,7vw,34px); }
    .hero p { font-size: 17px; }
    .button { font-size: 17px; min-height: 56px; }
    .emergency p { font-size: 16px; }
    .section-title, .about-copy .section-title { font-size: 26px; }
    .service-copy h3 { font-size: 15px; }
    .service-copy p { font-size: 15px; }
    .more-button { font-size: 16px; }
    .about-description { font-size: 17px; }
    .about-link { font-size: 16px; }
    .stats dt { font-size: 28px; }
    .stats dd { font-size: 11px; }
    .contact .section-title { font-size: 28px; }
    .contact p { font-size: 17px; }
    .footer-main, .footer-company, .footer-contact, .copyright { text-align: center; }
    .footer-brand { justify-content: center; flex-direction: column; font-size: 16px; gap: 14px; }
    .footer-contact { align-items: center; }
    .footer-tagline, .footer-nav, .footer-contact p, .footer-email { font-size: 16px; }
    .footer-phone { font-size: 23px; }
    .copyright { font-size: 13px; }
    .service-detail > p { font-size: 16px; }
}
/* Compact, seamless client-logo ribbon. Static and scrollable without JavaScript. */
.clients { height: 100px; padding: 0; position: relative; display: block; }
.clients-viewport { width: 100%; height: 100%; overflow: auto; display: flex; align-items: center; scrollbar-width: thin; }
.clients-track { display: flex; width: max-content; flex: none; }
.clients-group { display: flex; align-items: center; gap: 48px; padding-right: 48px; flex: none; }
.clients .clients-group img { width: auto; max-width: none; flex: none; object-fit: contain; }
.clients.is-ready .clients-viewport { overflow: hidden; }
.clients.is-ready .clients-track { animation: client-loop var(--loop-duration, 40s) linear infinite; }
.clients.is-paused .clients-track { animation-play-state: paused; }
.clients-toggle { position: absolute; top: 50%; right: 12px; transform: translateY(-50%); width: 40px; height: 40px; display: grid; place-items: center; border: 0; border-radius: 50%; background: rgba(255,255,255,.92); color: #444; cursor: pointer; padding: 0; opacity: 0; pointer-events: none; transition: opacity .2s ease; }
.clients:hover .clients-toggle, .clients:focus-within .clients-toggle { opacity: 1; pointer-events: auto; }
@media (hover:none), (pointer:coarse) {
    .clients-toggle { opacity: 1; pointer-events: auto; }
}
.clients-toggle-icon { width: 12px; height: 14px; border-left: 4px solid currentColor; border-right: 4px solid currentColor; }
.clients-toggle[aria-pressed="true"] .clients-toggle-icon { width: 0; height: 0; border-top: 7px solid transparent; border-bottom: 7px solid transparent; border-left: 11px solid currentColor; border-right: 0; margin-left: 3px; }
.clients-toggle[hidden] { display: none; }
@keyframes client-loop { to { transform: translateX(-50%); } }
.reveal-pending { opacity: 0; transform: translateY(20px); }
.reveal-visible { opacity: 1; transform: none; transition: opacity .7s ease var(--reveal-delay, 0ms), transform .7s cubic-bezier(.2,.65,.3,1) var(--reveal-delay, 0ms); }
@media(max-width:700px) {
    .clients { height: 80px; }
    .clients .clients-group img {  }
    .clients-group { gap: 32px; padding-right: 32px; }
}
@media(prefers-reduced-motion:reduce) {
    .clients.is-ready .clients-track { animation: none; transform: none; }
    .clients.is-ready .clients-viewport { overflow: auto; }
    .reveal-pending, .reveal-visible { opacity: 1; transform: none; transition: none; }
}

@keyframes hero-enter { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
@media(prefers-reduced-motion:no-preference) {
    .hero-content > * { animation: hero-enter .75s ease both; }
    .hero-content > p { animation-delay: .1s; }
    .hero-content > .button { animation-delay: .2s; }
    .hub-intro > *, .service-intro > *, .about-page-hero-inner > *, .contact-page > *, .inner-page #content:not(.services-hub):not(.service-detail):not(.about-page):not(.contact-page) > * { animation: hero-enter .75s ease both; }
    .hub-intro > p, .service-intro > .service-cover { animation-delay: .1s; }
    .about-page-hero-inner > h1, .contact-page > :nth-child(2) { animation-delay: .08s; }
    .about-page-hero-inner > .about-page-lead, .contact-page > :nth-child(n+3) { animation-delay: .16s; }
}
.reveal-pending:focus-within { opacity: 1; transform: none; }
/* Refinement layer — generated from refinements.css; keep after the base styles. */
/* Inner pages have no hero image behind the fixed navigation. */
.inner-page .site-header,
.inner-page .site-header.is-scrolled,
.inner-page .site-header:has(.primary-nav.is-open) {
    color: var(--ink);
    background: #fff;
    border-bottom: 1px solid #e9e9e9;
    box-shadow: 0 2px 12px rgba(0,0,0,.04);
    backdrop-filter: none;
}
/* Shared proportion system: one content edge, restrained type, and an 8px spacing rhythm. */
:root {
    --layout-width: 1200px;
    --page-gutter: clamp(24px, 6vw, 80px);
    --section-space: clamp(56px, 6.2vw, 88px);
    --type-body: 16px;
    --type-lead: clamp(17px, 1.5vw, 20px);
    --type-section: clamp(28px, 2.5vw, 36px);
}
.hub-back { display: inline-block; width: fit-content; margin-bottom: 24px; padding: 4px 0; color: #555; font-size: 14px; }
.hub-back:hover { color: var(--red); }
.about-page-hero .hub-back, .contact-page-hero .hub-back { color: #c8c8c8; }
.about-page-hero .hub-back:hover, .contact-page-hero .hub-back:hover { color: #fff; }
.hero-content, .section-container, .about-inner, .contact-content, .footer-main {
    width: min(var(--layout-width), calc(100% - var(--page-gutter) * 2));
    max-width: var(--layout-width);
    margin-left: auto;
    margin-right: auto;
}
.hero { min-height: 620px; }
.hero-content { padding: 160px 0 96px; }
.hero h1 { font-size: clamp(36px, 3.25vw, 46px); line-height: 1.14; max-width: 620px; letter-spacing: -.025em; text-wrap: balance; }
.hero p { font-size: var(--type-lead); line-height: 1.5; margin-top: 24px; }
.button { width: fit-content; min-width: 280px; min-height: 58px; padding: 16px 28px; border-radius: 6px; font-size: 17px; line-height: 1.35; }
.hero-button, .contact .button { margin-top: 32px; }
.primary-nav { font-size: 17px; gap: 32px; }
.primary-nav .language-link { margin-left: 12px; }
.emergency { height: auto; min-height: 104px; padding: 16px var(--page-gutter); justify-content: center; gap: 28px; }
.emergency-icon { width: 82px; height: 70px; }
.emergency p { width: auto; text-align: left; font-size: 20px; line-height: 1.45; }
.services { padding: var(--section-space) 0; }
.section-title, .about-copy .section-title { font-size: var(--type-section); line-height: 1.18; letter-spacing: -.015em; text-wrap: balance; }
.section-title::after, .about-copy .section-title::after, .contact .section-title::after { width: 96px; height: 4px; margin-top: 18px; }
.service-grid { gap: 32px; margin-top: 40px; }
.service-card { min-height: 0; padding-bottom: 80px; border-radius: 12px; box-shadow: 0 4px 20px rgba(0,0,0,.055); border: 1px solid rgba(0,0,0,.04); }
.service-photo { height: auto; aspect-ratio: 1.6; }
.service-photo .card-accent { height: 44px; }
.service-copy { padding: 24px 24px 0; }
.service-copy h3 { font-size: 16px; line-height: 1.4; min-height: 64px; position: relative; padding-bottom: 16px; }
.service-copy h3::after { position: absolute; bottom: 0; left: 0; width: 56px; height: 2px; margin: 0; }
.service-copy p { font-size: var(--type-body); line-height: 1.6; margin-top: 16px; color: #444; }
.service-link { right: 24px; bottom: 20px; }
.service-link, .hub-service .hub-action { transition: transform .2s ease; }
.service-card:hover .service-link, .service-link:focus-visible,
.hub-service:hover .hub-action, .hub-service:focus-visible .hub-action { transform: scale(1.1); }
@media (prefers-reduced-motion: reduce) {
    .service-link, .hub-service .hub-action { transition: none; }
    .service-card:hover .service-link, .service-link:focus-visible,
    .hub-service:hover .hub-action, .hub-service:focus-visible .hub-action { transform: none; }
}
.more-button { margin: 40px auto 0; min-width: 200px; min-height: 54px; font-size: 16px; }
.about-inner { min-height: 0; padding: var(--section-space) 0; grid-template-columns: minmax(0,1fr) minmax(0,1fr); align-items: center; gap: 72px; }
.about-photo { width: 100%; height: auto; aspect-ratio: 1; align-self: center; }
.about-photo::before { left: -14px; bottom: -14px; width: 58%; height: 85%; }
.about-copy { padding-top: 0; }
.about-description { font-size: var(--type-lead); line-height: 1.65; margin-top: 28px; color: #3c3c3c; }
.about-link { width: fit-content; gap: 24px; min-height: 44px; font-size: 16px; padding: 8px 0; margin-top: 20px; }
.stats { width: 100%; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 16px; margin-top: 40px; padding-top: 28px; border-top: 1px solid #e9e9e9; }
.stats dt { font-size: 36px; line-height: 1.2; }
.stats dd { font-size: 13px; line-height: 1.6; margin-top: 10px; }
.contact { min-height: 480px; height: auto; }
.contact-content { padding: 88px 0; }
.contact .section-title { font-size: clamp(30px, 2.8vw, 40px); line-height: 1.15; letter-spacing: -.02em; }
.contact p { font-size: var(--type-lead); line-height: 1.6; max-width: 440px; margin-top: 28px; }
.footer-main { height: auto; padding: 64px 0; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 64px; align-items: center; }
.footer-brand { font-size: 17px; gap: 16px; line-height: 1.4; }
.footer-brand .brand-crop { width: 96px; height: 77px; }
.footer-tagline { font-size: 17px; line-height: 1.6; margin-top: 24px; }
.footer-nav { font-size: 16px; margin-top: 24px; white-space: normal; line-height: 1.8; }
.footer-contact { padding-top: 0; }
.footer-contact p { font-size: 17px; line-height: 1.5; white-space: normal; }
.footer-phone { font-size: 26px; margin-top: 20px; }
.footer-email { font-size: 17px; margin-top: 16px; }
.copyright { min-height: 58px; font-size: 13px; line-height: 1.6; font-weight: 400; padding: 18px max(var(--page-gutter), calc((100% - var(--layout-width)) / 2)); }
@media(max-width:1050px) {
    .about-inner { gap: 40px; }
    .primary-nav { font-size: 16px; gap: 24px; }
    .stats dt { font-size: 30px; }
    .stats dd { font-size: 12px; }
    .footer-main { gap: 32px; }
    .footer-brand { font-size: 15px; }
    .footer-brand .brand-crop { width: 80px; height: 64px; }
}
@media(max-width:700px) {
    :root { --page-gutter: 24px; --type-body: 15px; --type-section: 27px; }
    .hub-back { margin-bottom: 18px; }
    .hero { min-height: 560px; }
    .hero-content { padding: 136px 0 80px; }
    .hero h1 { font-size: clamp(30px, 7.5vw, 34px); line-height: 1.15; letter-spacing: -.02em; }
    .hero p { margin-top: 24px; font-size: 17px; }
    .button { width: 100%; min-width: 0; min-height: 54px; font-size: 16px; padding: 16px 20px; }
    .hero-button, .contact .button { margin-top: 28px; }
    .primary-nav { gap: 0; }
    .primary-nav .language-link { margin-left: 0; }
    .emergency { min-height: 108px; gap: 20px; padding: 20px var(--page-gutter); }
    .emergency-icon { width: 66px; height: 56px; }
    .emergency p { font-size: 15px; }
    .service-grid { gap: 24px; margin-top: 32px; }
    .service-copy { padding: 22px 22px 0; }
    .service-copy h3 { font-size: 15px; min-height: 0; }
    .service-copy p { line-height: 1.6; }
    .more-button { width: fit-content; min-width: 190px; margin-top: 32px; }
    .about-inner { gap: 48px; }
    .about-photo::before { left: -10px; bottom: -10px; }
    .about-description { font-size: 17px; margin-top: 24px; }
    .stats { gap: 8px; margin-top: 32px; padding-top: 24px; }
    .stats dt { font-size: 28px; }
    .stats dd { font-size: 11px; }
    .contact { min-height: 0; }
    .contact-content { padding: 64px 0; }
    .contact .section-title { font-size: 30px; }
    .contact p { font-size: 17px; margin-top: 24px; }
    .footer-main { padding: 48px 0; gap: 36px; }
    .footer-brand { font-size: 16px; gap: 12px; }
    .footer-tagline { font-size: 16px; margin-top: 20px; }
    .footer-nav { font-size: 15px; margin-top: 20px; }
    .footer-contact { width: 100%; padding-top: 28px; border-top: 1px solid #eee; }
    .footer-contact p, .footer-email { font-size: 16px; }
    .footer-phone { font-size: 24px; margin-top: 16px; }
    .copyright { font-size: 12px; padding: 18px 24px; }
}

