/*!
 * AN-SIGNATURE
 * PL: AI chciało animować wszystko. Artur poprosił, żeby chociaż kawa stała spokojnie.
 * DE: Die KI wollte alles animieren. Artur bestand auf einer ruhigen Kaffeetasse.
 * EN: AI wanted to animate everything. Artur asked it to leave the coffee alone.
 *
 * Artur Nowis · https://arturnowis.com/
 */
/* Motion is confined to opacity/transform; geometry stays stable while reading. */
:root { view-transition-name: none; }
#concept-preview { view-transition-name: rs-page; }
::view-transition { pointer-events: none; }
::view-transition-group(rs-page) { animation: none; }
::view-transition-old(rs-page) { animation: direction-out 240ms ease-out both; }
::view-transition-new(rs-page) { animation: direction-in 460ms cubic-bezier(.22, 1, .36, 1) both; }
@keyframes direction-out { to { opacity: 0; transform: translateY(-8px); } }
@keyframes direction-in { from { opacity: 0; transform: translateY(12px); } }
/* Pending is a scheduling marker; content stays visible if observation fails. */
.reading-progress { position: absolute; bottom: -1px; left: 0; height: 2px; width: 100%; background: #547e5d; transform: scaleX(0); transform-origin: left; pointer-events: none; }
.primary-cta, .header-cta, .extensions-trigger { transition: transform 200ms ease, box-shadow 200ms ease, filter 200ms ease; }
.cta-arrow, .detail-arrow, .area-link svg { transition: transform 220ms cubic-bezier(.22, 1, .36, 1); }
.disclosure-icon { transition: transform 280ms cubic-bezier(.22, 1, .36, 1); }
.menu-toggle span { transition: transform 180ms ease; }
.service-details summary, .faq-item summary { transition: color 180ms ease; }
.faq-item[open] .faq-answer, .service-details[open] .service-detail-copy { animation: answer-in 280ms ease; }
@keyframes answer-in { from { opacity: .3; transform: translateY(-4px); } }
#extensions-dialog[open] { animation: dialog-in 320ms cubic-bezier(.22, 1, .36, 1) both; }
#extensions-dialog::backdrop { animation: backdrop-in 250ms ease; }
#extensions-dialog.dialog-closing { pointer-events: none; }
@keyframes dialog-in { from { opacity: 0; transform: translateY(18px) scale(.985); } }
@keyframes backdrop-in { from { background-color: transparent; backdrop-filter: blur(0); } }
.extensions-tabs button, .concept-tabs button { transition: background-color 180ms ease, color 180ms ease, border-color 180ms ease; }
.service-photo-trigger .service-photo { transition: transform 650ms cubic-bezier(.22, 1, .36, 1); transform-origin: center; }
.service-photo-action { transition: transform 350ms cubic-bezier(.22, 1, .36, 1), background-color 350ms ease; }
.site-nav a { position: relative; text-decoration: none!important; }
.site-nav a::after { content: ''; position: absolute; left: 0; right: 0; bottom: -6px; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: left; transition: transform 300ms cubic-bezier(.22, 1, .36, 1); }
.site-nav a:focus-visible::after { transform: scaleX(1); }
#service-gallery[open] { animation: gallery-in 300ms cubic-bezier(.22, 1, .36, 1); }
#service-gallery[open]::backdrop { animation: gallery-backdrop-in 240ms ease-out; }
.service-gallery-media { animation: gallery-image-in 340ms cubic-bezier(.22, 1, .36, 1); }
@keyframes gallery-in { from { opacity: .25; transform: translateY(12px) scale(.985); } to { opacity: 1; transform: none; } }
@keyframes gallery-backdrop-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes gallery-image-in { from { opacity: .25; transform: scale(.99); } to { opacity: 1; transform: none; } }
@media (hover: hover) and (pointer: fine) {
  .primary-cta:hover, .header-cta:hover, .extensions-trigger:hover { transform: translateY(-2px); box-shadow: 0 8px 22px #00000018; }
  a:hover .cta-arrow, a:hover .detail-arrow, .area-link:hover svg { transform: translateX(4px); }
  .service-details summary:hover, .faq-item summary:hover { color: color-mix(in srgb, var(--ink) 80%, var(--accent)); }
  .service-photo-trigger:hover .service-photo { transform: scale(1.035); }
  .service-photo-trigger:hover .service-photo-action { transform: translateY(-2px); }
  .site-nav a:hover::after { transform: scaleX(1); }
}
@supports (interpolate-size: allow-keywords) and selector(::details-content) {
  .faq-list, .service-details { interpolate-size: allow-keywords; }
  .faq-item::details-content, .service-details::details-content {
    block-size: 0;
    overflow: clip;
    content-visibility: hidden;
    transition: block-size 350ms cubic-bezier(.22, 1, .36, 1), content-visibility 350ms allow-discrete;
  }
  .faq-item[open]::details-content, .service-details[open]::details-content { block-size: auto; content-visibility: visible; }
  @media (prefers-reduced-motion: reduce) {
    .faq-item::details-content, .service-details::details-content { transition: none!important; }
  }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .motion-pending { opacity: 1!important; }
  .website *, .website *::after, #extensions-dialog, #extensions-dialog *, #extensions-dialog::backdrop, #service-gallery, #service-gallery *, #service-gallery::backdrop, .concept-tabs button {
    animation: none!important;
    transition: none!important;
  }
  ::view-transition-group(rs-page), ::view-transition-old(rs-page), ::view-transition-new(rs-page) { animation: none!important; }
  .primary-cta:hover, .header-cta:hover, .extensions-trigger:hover, a:hover .cta-arrow, a:hover .detail-arrow, .area-link:hover svg { transform: none; }
  .service-photo-trigger:hover .service-photo, .service-photo-trigger:hover .service-photo-action { transform: none; }
}
@media print { .motion-pending { opacity: 1!important; } .reading-progress { display: none; } }
