@view-transition { navigation: auto; }

::view-transition-old(root),
::view-transition-new(root) { animation-duration: .28s; animation-timing-function: ease; }

.global-nav a.is-current { color: var(--color-primary); text-decoration: underline; text-decoration-color: var(--color-secondary); text-decoration-thickness: 2px; text-underline-offset: .45em; }
.site-header:not(.scrolled):not(.menu-active) .global-nav a.is-current { color: inherit; }
.footer-nav { display: none; }
.noscript-nav { display: flex; flex-wrap: wrap; gap: 1rem; padding: 1rem; color: #fff; background: var(--color-primary-dark); font: 500 var(--font-size-xs)/1.5 var(--font-en); }

.page-hero { padding: calc(8rem + var(--announcement-height)) 0 4.5rem; color: #fff; background: var(--color-primary-dark); }
.page-hero .section-label { color: var(--color-secondary-light); }
.page-hero h1 { margin-bottom: 1rem; color: #fff; font-size: var(--font-size-xl); }
.page-hero p:last-child { max-width: 44rem; margin-bottom: 0; color: rgba(255,255,255,.76); }

.summary-card-grid { display: grid; gap: 1rem; }
.summary-card-grid article { padding: 1.35rem; border: 1px solid var(--color-border); background: #fff; }
.summary-card-grid h3 { margin-bottom: .55rem; font-size: 1.25rem; }
.summary-card-grid article > p:last-child { margin-bottom: 0; color: var(--color-text-soft); font-size: var(--font-size-sm); }
.text-link { display: inline-flex; align-items: center; gap: .7rem; margin-top: 1.5rem; color: var(--color-primary); font-weight: 500; text-decoration: underline; text-decoration-color: var(--color-secondary-light); text-underline-offset: .3em; }
.representative-summary { background: #fff; }
.representative-summary-grid { display: grid; gap: 2rem; align-items: center; }
.representative-summary .portrait-placeholder { min-height: 0; }
.representative-summary p:not(.section-label):not(.profile-role) { color: var(--color-text-soft); }

.service-detail { background: #fff; }
.service-detail:nth-of-type(even) { background: var(--color-background); }
.service-detail .panel-title { margin-bottom: 2rem; }
.service-detail .model-heading h3 { margin: 0; color: var(--color-primary); font-size: var(--font-size-base); font-weight: 500; }
.service-detail .use-case-card h3 { margin: 0 0 .45rem; font-size: 1.05rem; }
.profile-section-title { margin-bottom: 2rem; }
.profile-card-list { display: grid; gap: 3rem; }
.profile-card { padding: clamp(1.25rem,4vw,2.5rem); border: 1px solid var(--color-border); background: #fff; }

.origin { background: #fff; }
.origin-copy { display: grid; gap: 2rem; align-items: center; margin-top: 2rem; }
.origin-copy img { width: 8rem; height: auto; }
.origin-copy p { color: var(--color-text-soft); }
.business-info { position: relative; padding-bottom: calc(var(--spacing-section) + 2.5rem); overflow: hidden; background: var(--color-background); }
.business-table { margin: 2rem 0 0; border-top: 1px solid var(--color-border); }
.business-table div { display: grid; grid-template-columns: 6.5rem 1fr; gap: 1rem; padding: 1rem 0; border-bottom: 1px solid var(--color-border); }
.business-table dt { color: var(--color-text-soft); }
.business-table dd { margin: 0; }
.business-dog { position: absolute; right: 3vw; bottom: .6rem; display: none; width: clamp(7.5rem,10vw,10rem); color: var(--color-secondary); opacity: .48; pointer-events: none; }
.business-dog svg { display: block; width: 100%; height: auto; overflow: visible; }
.business-dog .tiny-boat { fill: none; stroke: currentColor; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.business-dog-rock { transform-origin: 50% 80%; animation: hidden-dog-rock 5.5s ease-in-out infinite; }
@keyframes hidden-dog-rock { 0%,100% { transform: translateY(-1px) rotate(-1deg); } 50% { transform: translateY(2px) rotate(1deg); } }

.utility-page { min-height: 100vh; }
.utility-section { display: grid; min-height: calc(100svh - 7rem); place-items: center; padding: calc(8.5rem + var(--announcement-height)) 0 4rem; background: #fff; }
.utility-panel { text-align: center; }
.utility-copy { max-width: 47rem; margin-inline: auto; }
.utility-copy h1 { margin-bottom: 1rem; font-size: var(--font-size-xl); }
.utility-copy > p:last-child { color: var(--color-text-soft); }
.dog-stage { max-width: 48rem; margin: 1.5rem auto .5rem; color: var(--color-secondary); }
.dog-stage svg { display: block; width: 100%; height: auto; overflow: visible; }
.stage-boat,.stage-wave,.search-shore,.search-mark { fill: none; stroke: currentColor; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.stage-boat { fill: rgba(125,97,130,.06); stroke: var(--color-primary); }
.stage-wave,.search-shore { opacity: .46; }
.waiting-boat { transform-origin: 50% 80%; animation: waiting-boat-rock 6s ease-in-out infinite; }
.waiting-dog-a,.waiting-dog-b { transform-box: fill-box; transform-origin: center bottom; }
.waiting-dog-a { animation: waiting-dog-breathe 4.5s ease-in-out infinite; }
.waiting-dog-b { animation: waiting-dog-walk 8s ease-in-out infinite; }
@keyframes waiting-boat-rock { 0%,100% { transform: translateY(-2px) rotate(-.7deg); } 50% { transform: translateY(3px) rotate(.7deg); } }
@keyframes waiting-dog-breathe { 0%,100% { transform: translateY(7px) scaleY(.78); } 50% { transform: translateY(6px) scaleY(.82); } }
@keyframes waiting-dog-walk { 0%,100% { transform: translateX(-12px); } 50% { transform: translateX(12px); } }
.search-dog-a,.search-dog-b { transform-box: fill-box; transform-origin: center bottom; }
.search-dog-a { animation: dog-search-a 4.6s ease-in-out infinite; }
.search-dog-b { animation: dog-search-b 4.1s .35s ease-in-out infinite; }
.search-mark { opacity: .4; }
@keyframes dog-search-a { 0%,100% { transform: translateX(-35px) translateY(0) rotate(-1deg); } 50% { transform: translateX(95px) translateY(-7px) rotate(2deg); } }
@keyframes dog-search-b { 0%,100% { transform: translateX(45px) translateY(-2px) rotate(1deg); } 50% { transform: translateX(-85px) translateY(-10px) rotate(-2deg); } }
.utility-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .75rem 1.5rem; }
.utility-primary { color: #fff; background: var(--color-primary); }
.utility-primary:hover { color: #fff; background: var(--color-secondary); }
.utility-actions .text-link { margin-top: 0; }
.utility-links { display: flex; flex-wrap: wrap; justify-content: center; gap: .65rem 1.25rem; font: 500 var(--font-size-xs)/1.5 var(--font-en); letter-spacing: .08em; }
.utility-links a { padding-block: .45rem; color: var(--color-primary); border-bottom: 1px solid var(--color-secondary-light); }

.news-archive { min-height: 30rem; }
.contact-steps { display: grid; gap: 1rem; margin: 2rem 0 0; padding: 0; list-style: none; }
.contact-steps li { padding: 1.35rem; border: 1px solid var(--color-border); background: #fff; }
.contact-steps span { color: var(--color-secondary); font: 500 var(--font-size-sm)/1 var(--font-en); letter-spacing: .12em; }
.contact-steps h3 { margin: .65rem 0 .5rem; font-size: 1.25rem; }
.contact-steps p { margin: 0; color: var(--color-text-soft); font-size: var(--font-size-sm); }

.mini-check { background: #fff; }
.mini-check .section-heading { display: block; }
.mini-check .section-heading > p { max-width: 48rem; }
.mini-check h2 { font-size: clamp(1.75rem,4vw,2.35rem); word-break: keep-all; }
.mini-check-shell { display: grid; gap: 2rem; margin-top: 2rem; padding: clamp(1.25rem,4vw,2.5rem); border: 1px solid var(--color-border); background: var(--color-background); }
.mini-check-progress { margin: 0; color: var(--color-secondary); font: 500 var(--font-size-xs)/1.5 var(--font-en); letter-spacing: .1em; }
.mini-check-step { min-width: 0; padding: 0; border: 0; }
.mini-check-step legend { width: 100%; margin-bottom: 1rem; color: var(--color-primary); font-size: clamp(1.15rem,3vw,1.45rem); font-weight: 500; line-height: 1.6; }
.mini-check-options { display: grid; gap: .75rem; }
.mini-check-option { position: relative; display: flex; min-height: 3.5rem; align-items: center; gap: .8rem; padding: .75rem 1rem; border: 1px solid var(--color-border); background: #fff; cursor: pointer; }
.mini-check-option:has(input:checked) { color: var(--color-primary); border-color: var(--color-primary); }
.mini-check-option input { width: 1.1rem; height: 1.1rem; margin: 0; accent-color: var(--color-primary); }
.mini-check-controls { display: flex; flex-wrap: wrap; gap: .65rem; margin-top: 1.25rem; }
.mini-check-controls button,.mini-check-result__reset { min-height: 3rem; padding: .65rem 1rem; border: 1px solid var(--color-primary); font: 500 var(--font-size-sm)/1.5 var(--font-ja); cursor: pointer; }
.mini-check-next { color: #fff; background: var(--color-primary); }
.mini-check-back,.mini-check-result__reset { color: var(--color-primary); background: transparent; }
.mini-check-result { padding: clamp(1.25rem,4vw,2rem); border-left: 4px solid var(--color-secondary); background: #fff; }
.mini-check-result h3 { margin-bottom: .65rem; font-size: clamp(1.4rem,4vw,1.9rem); }
.mini-check-result p { color: var(--color-text-soft); }
.mini-check-result__note { margin-top: 1rem; font-size: var(--font-size-xs); }
.mini-check-result .button { margin-top: .5rem; color: #fff; background: var(--color-primary); }
.mini-check-result__reset { display: block; margin-top: 1rem; }

.no-js .mini-check-progress,.no-js .mini-check-controls { display: none; }
.no-js .mini-check-step + .mini-check-step { margin-top: 1.75rem; }
.no-js .mini-check-result { display: none; }

@media (min-width:48rem) {
  .summary-card-grid, .contact-steps { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .representative-summary-grid { grid-template-columns: minmax(15rem,.65fr) minmax(0,1.35fr); gap: clamp(3rem,7vw,6rem); }
  .origin-copy { grid-template-columns: 10rem 1fr; }
  .business-dog { display: block; }
  .mini-check-shell { grid-template-columns: minmax(0,1fr); }
  .mini-check-options { grid-template-columns: repeat(2,minmax(0,1fr)); }
}

@media (min-width:64rem) {
  .footer-inner { display: grid; grid-template-columns: auto 1fr auto; }
  .footer-nav { display: flex; justify-content: center; gap: 1.5rem; font: 500 var(--font-size-xs)/1.5 var(--font-en); letter-spacing: .08em; }
  .global-nav a.is-current { color: inherit; }
}

@media (prefers-reduced-motion:reduce) {
  ::view-transition-group(*), ::view-transition-old(root), ::view-transition-new(root) { animation: none !important; }
  .business-dog-rock,.waiting-boat,.waiting-dog-a,.waiting-dog-b,.search-dog-a,.search-dog-b { animation: none !important; transform: none; }
}
