/* Responsive layout and touch targets. */
@media(max-width:1100px){
 header{height:76px;padding-inline:4%;gap:12px}
 header .logo img{width:200px;height:62px}
 header .header-contact{margin-left:auto;margin-right:0;padding:11px 14px;white-space:nowrap}
 header .menu-toggle{display:flex;align-items:center;justify-content:center;flex:0 0 44px;width:44px;height:44px;padding:0;border:0;background:transparent;color:var(--ink);font-size:24px}
 header nav{display:none;position:absolute;top:76px;left:0;right:0;padding:16px 4%;background:var(--paper);box-shadow:0 12px 20px #00000012;max-height:calc(100dvh - 76px);overflow-y:auto}
 header nav.open{display:flex;flex-direction:column;align-items:stretch;gap:4px}
 header nav a{display:block;padding:13px 16px;font-size:16px;line-height:1.5}
 header nav a.active{background:#e5f0f8;color:#205674;border-radius:6px}
 .service-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .contact-layout,.company-split{grid-template-columns:1fr;gap:32px}
 .ipb-footer-promo .ipb-wide-inner{display:block;min-height:0;padding:24px 6% 205px;background-size:360px auto;background-position:right bottom}
 .ipb-footer-promo .ipb-wide-copy{max-width:100%}
 .ipb-footer-promo .ipb-wide-copy h2{font-size:24px}
}
@media(max-width:700px){
 header{height:70px;gap:8px;padding-inline:4%}
 header .logo img{width:clamp(136px,40vw,184px);height:54px}
 header .header-contact{font-size:12px;padding:10px 12px}
 header nav{top:70px;max-height:calc(100dvh - 70px)}
 .hero h1{font-size:clamp(32px,8.8vw,46px);line-height:1.28;letter-spacing:-.06em}
 .hero .actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
 .hero .actions .btn{min-width:0;padding:14px 8px;min-height:48px;font-size:13px}
 .visual.brand-visual{min-width:0;min-height:250px;padding:24px 0;margin-top:20px}
 .hero-art-float{width:94%;translate:0 0}
 .service-orbit{transform:none}
 .service-orbit-label{max-width:29%;white-space:normal;font-size:4.35cqw;animation-name:mobile-label-drift}
 .service-orbit-label.orbit-label-small{font-size:max(10px,3.2cqw);line-height:1.3}
 .hero-bottom>div{width:100%;justify-content:center;row-gap:12px}
 .hero-bottom>div>span{font-size:clamp(7px,2.1vw,11px);padding-inline:clamp(3px,1.2vw,8px)}
 .hero-bottom>div>span:first-child{font-size:11px;letter-spacing:.05em}
 .section h2,.intro h1{overflow-wrap:anywhere;word-break:keep-all}
 .service-card,.library-card,.form,.contact-layout>*,.company-split>*,.detail-layout>*,.article-layout>*{min-width:0}
 .service-card h3{font-size:22px;line-height:1.45}
 .service-card p{font-size:14px;line-height:1.8}
 .card-link{font-size:11px}
 .form{padding:22px 18px}
 #inquiry-form .field input,#inquiry-form .field textarea,.library-search input,.library-controls select{font-size:16px}
 .btn,.filter,.pagination button{min-height:44px}
 .pagination button{min-width:44px}
 .filters{flex-wrap:wrap;gap:8px}
 .library-controls label{flex-wrap:wrap;max-width:100%}
 .library-controls select{max-width:100%}
 .contact-side>a{font-size:28px;overflow-wrap:anywhere}
 .contact-side .email{font-size:18px}
 .company-data{padding:24px 20px}
 .company-data dd{overflow-wrap:anywhere}
 .article-bottom{flex-wrap:wrap}
 .ipb-footer-promo .ipb-wide-inner{padding:24px 6% 190px;background-size:min(100%,330px) auto}
 .ipb-footer-promo .ipb-wide-copy h2{font-size:22px;line-height:1.45;word-break:keep-all}
 .ipb-footer-promo .ipb-wide-copy p{font-size:16px;line-height:1.6;word-break:keep-all}
 .ipb-footer-promo .ipb-wide-copy ul{font-size:12px;line-height:1.85}
 footer{padding-inline:6%}
 footer .logo img{width:min(230px,65vw);height:auto}
 .footer-top{gap:14px}
 .footer-info p,.english-address{font-size:12px;overflow-wrap:anywhere}
 .footer-bottom div{flex-wrap:wrap;gap:10px 20px}
 .footer-bottom a{display:inline-flex;align-items:center;min-height:44px}
 .footer-tagline{align-items:flex-start;font-size:12px;gap:8px}
 .footer-tagline-mark{margin-top:2px}
}
@media(max-width:559px){
 .service-grid,.library-grid,.feature-list{grid-template-columns:minmax(0,1fr)}
 .library-image{height:auto;aspect-ratio:16/9}
 .library-card-body{padding:20px}
 .library-card h3{font-size:18px}
 .library-meta{font-size:12px}
 .process-grid{grid-template-columns:1fr;gap:24px}
 .detail-aside{grid-template-columns:1fr 1fr}
 .detail-aside a{min-height:44px;line-height:1.6}
 .archive-list a{grid-template-columns:1fr 20px;gap:6px 12px}
 .archive-list a small{grid-column:1/-1}
}
@keyframes mobile-label-drift{0%,100%{transform:translate(0,0)}25%{transform:translate(3px,-4px)}50%{transform:translate(-3px,4px)}75%{transform:translate(-2px,-3px)}}
@media(prefers-reduced-motion:reduce){.service-orbit-label{animation:none}}

@media(min-width:701px) and (max-width:1000px){
 .hero-grid{grid-template-columns:1fr;gap:16px}
 .hero h1{font-size:48px}
 .hero .actions{flex-wrap:nowrap}
 .visual.brand-visual{height:auto;min-height:370px;max-width:560px;width:100%;margin:0 auto}
 .hero-art-float{translate:0 0}
}
@media(max-width:700px){
 .visual.brand-visual{min-height:290px}
 .service-orbit-label{font-size:12px;line-height:1.25;max-width:30%;translate:-50% -50%;text-align:center}
 .service-orbit-label.orbit-label-small{font-size:10px;line-height:1.3}
 .service-orbit-label:nth-of-type(1){left:33.77%;top:15.18%;}
 .service-orbit-label:nth-of-type(2){left:24.35%;top:32.01%;}
 .service-orbit-label:nth-of-type(3){left:21.70%;top:49.95%;}
 .service-orbit-label:nth-of-type(4){left:25.49%;top:71.17%;}
 .service-orbit-label:nth-of-type(5){left:35.85%;top:86.71%;}
 .service-orbit-label:nth-of-type(6){left:64.15%;top:13.19%;}
 .service-orbit-label:nth-of-type(7){left:74.51%;top:28.73%;max-width:24%;}
 .service-orbit-label:nth-of-type(8){left:78.30%;top:49.95%;}
 .service-orbit-label:nth-of-type(9){left:73.18%;top:74.30%;max-width:30%;}
 .service-orbit-label:nth-of-type(10){left:61.96%;top:88.42%;}
}

@media(max-width:1100px){#inquiry-form .field input,#inquiry-form .field textarea,.library-search input,.library-controls select{font-size:16px}}
@media(max-width:700px){
 .hero-bottom>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 0;text-align:center}
 .hero-bottom>div>span{font-size:11px;padding-inline:4px}
 .hero-bottom>div>span:first-child{grid-column:1/-1}
 .hero-bottom>div>span:nth-child(5){border-left:0}
}
