/* HDB: quiet motion, with a short branded handoff between full page loads. */
body.gp-site .gp-loader {
    display: grid;
    place-items: center;
    padding: 28px;
    background: var(--hd-paper);
    color: var(--hd-ink);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 180ms ease, visibility 0s linear 180ms;
}
body.gp-site .gp-loader::before { content: none; }
body.gp-site .gp-loader:not(.is-hidden),
html.hdb-route-arrival body.gp-site .gp-loader {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transition: opacity 140ms ease, visibility 0s;
}
.hdb-loader-content {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 0;
}
body.gp-site .gp-loader-mark {
    width: 142px;
    height: 142px;
    margin-bottom: 25px;
}
body.gp-site .gp-loader-mark::before,
body.gp-site .gp-loader-mark::after {
    inset: 0;
    width: auto;
    height: auto;
    border: 1px solid var(--hd-line);
    border-radius: 50%;
    transform: none;
    animation: none;
}
body.gp-site .gp-loader-mark::after {
    border-color: var(--hd-gold) transparent transparent;
    animation: hdb-loader-orbit 1.6s linear infinite;
    animation-play-state: paused;
}
body.gp-site .gp-loader-mark img {
    width: 72px;
    height: 90px;
    filter: none;
    animation: hdb-logo-breathe 1.8s ease-in-out infinite;
    animation-play-state: paused;
}
body.gp-site .gp-loader:not(.is-hidden) .gp-loader-mark::after,
body.gp-site .gp-loader:not(.is-hidden) .gp-loader-mark img,
html.hdb-route-arrival .gp-loader-mark::after,
html.hdb-route-arrival .gp-loader-mark img { animation-play-state: running; }
.hdb-loader-name { font: 500 30px/1.5 var(--hd-display); }
.hdb-loader-name[lang="en"] { font-size: 34px; }
.hdb-loader-caption { margin-top: 9px; color: var(--hd-muted); font: 400 11px/1.8 var(--hd-body); }
body.gp-site .gp-route-progress { height: 2px; }
body.gp-site .gp-route-progress span { background: linear-gradient(90deg, transparent, var(--hd-gold), transparent); }
@keyframes hdb-loader-orbit { to { transform: rotate(360deg); } }
@keyframes hdb-logo-breathe { 50% { opacity: .65; transform: scale(.96); } }

/* The content is visible without JavaScript. Each section enters only once. */
body.gp-site.gp-motion-ready .gp-reveal {
    opacity: 0;
    transform: translateY(16px);
    transition: opacity 440ms ease var(--gp-reveal-delay, 0ms),
                transform 440ms cubic-bezier(.22, .7, .3, 1) var(--gp-reveal-delay, 0ms);
}
body.gp-site.gp-motion-ready .gp-reveal.is-visible,
body.gp-site.gp-motion-ready .gp-reveal:focus-within {
    opacity: 1;
    transform: none;
}
body.gp-site :is(.hd-button, .hdb-button, .hd-text-link) {
    transition: background-color 180ms ease, color 180ms ease, border-color 180ms ease, transform 180ms ease;
}
body.gp-site :is(.hd-button, .hdb-button):not(:disabled):active { transform: scale(.98); }
.hd-button-arrow { transition: translate 200ms ease; }
.hd-faq summary > span { transition: transform 200ms ease; }
.hd-faq details[open] > p { animation: hdb-answer-in 220ms ease both; }
@keyframes hdb-answer-in { from { opacity: 0; transform: translateY(-5px); } }
.gp-mobile-dock a .gp-icon { transition: transform 180ms ease, stroke 180ms ease; }
.gp-mobile-dock a:active .gp-icon { transform: scale(.9); }

@media (hover: hover) and (pointer: fine) {
    .hdb-card-image img, .hd-category img { transition: transform 550ms cubic-bezier(.22, .7, .3, 1); }
    .hdb-card-image:hover img, .hd-category:hover img { transform: scale(1.035); }
    .hd-button:hover .hd-button-arrow { translate: 4px 0; }
    html[dir="rtl"] .hd-button:hover .hd-button-arrow { translate: -4px 0; }
}
@media (prefers-reduced-motion: reduce) {
    body.gp-site.gp-motion-ready .gp-reveal { opacity: 1; transform: none; }
    body.gp-site .gp-loader-mark img,
    body.gp-site .gp-loader-mark::after { animation: none; }
    body.gp-site :is(.hdb-card-image img, .hd-category img, .hd-button-arrow, .gp-mobile-dock .gp-icon) {
        transform: none;
        translate: none;
    }
}
@media print {
    body.gp-site .gp-loader, .gp-route-progress { display: none; }
    body.gp-site.gp-motion-ready .gp-reveal { opacity: 1; transform: none; }
}
