.carino-app {
  position: relative;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  width: 100%;
  height: calc(var(--carino-viewport-height) - var(--admin-bar-offset));
  min-height: 0;
  overflow: hidden;
  isolation: isolate;
}

body.admin-bar {
  --admin-bar-offset: 32px;
}

@media (max-width: 782px) {
  body.admin-bar {
    --admin-bar-offset: 46px;
  }
}

.site-header {
  position: relative;
  z-index: 20;
  min-width: 0;
  padding:
    max(var(--space-2), env(safe-area-inset-top))
    max(var(--space-4), env(safe-area-inset-right))
    var(--space-2)
    max(var(--space-4), env(safe-area-inset-left));
  background: linear-gradient(to bottom, rgb(251 248 238 / 96%), rgb(251 248 238 / 80%));
  border-bottom: var(--border-soft);
  backdrop-filter: blur(8px);
}

.site-header__inner,
.site-header-inner {
  display: grid;
  grid-template-columns: minmax(max-content, 1fr) auto auto;
  align-items: center;
  gap: var(--space-4);
  width: min(100%, var(--content-wide));
  min-width: 0;
  margin-inline: auto;
}

.site-brand,
.site-title {
  min-width: 0;
  color: var(--color-ink);
  font-family: var(--font-serif);
  font-size: clamp(1.2rem, 0.95rem + 1vw, 1.85rem);
  line-height: 1.2;
  letter-spacing: 0.08em;
  text-decoration: none;
  white-space: nowrap;
}

.site-nav {
  min-width: 0;
}

.site-nav ul,
.site-nav__list {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(0.45rem, 0.25rem + 1.1vw, 1.6rem);
  padding: 0;
  margin: 0;
  list-style: none;
}

.site-nav a {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--tap-size);
  color: var(--color-ink-soft);
  font-family: var(--font-serif);
  font-size: clamp(0.72rem, 0.63rem + 0.34vw, 0.95rem);
  letter-spacing: 0.08em;
  text-decoration: none;
  text-align: center;
  white-space: normal;
}

.site-nav a::after {
  position: absolute;
  right: 10%;
  bottom: 0.35rem;
  left: 10%;
  height: 2px;
  background: linear-gradient(90deg, transparent, var(--color-red), transparent);
  content: "";
  opacity: 0;
  transform: scaleX(0.45);
  transition: opacity var(--duration-fast), transform var(--duration-fast);
}

.site-nav a:hover,
.site-nav a[aria-current="page"] {
  color: var(--color-red);
}

.site-nav a:hover::after,
.site-nav a[aria-current="page"]::after {
  opacity: 1;
  transform: scaleX(1);
}

.carino-stage {
  position: relative;
  display: grid;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  padding:
    var(--space-3)
    max(var(--space-4), env(safe-area-inset-right))
    max(var(--space-3), env(safe-area-inset-bottom))
    max(var(--space-4), env(safe-area-inset-left));
}

.carino-view {
  position: relative;
  display: grid;
  width: min(100%, var(--content-wide));
  min-width: 0;
  min-height: 0;
  max-height: 100%;
  margin-inline: auto;
  overflow: hidden;
  opacity: 1;
  transition:
    opacity var(--duration-normal) var(--ease-watercolor),
    filter var(--duration-normal) var(--ease-watercolor),
    transform var(--duration-normal) var(--ease-watercolor);
}

.carino-app.is-transitioning .carino-view,
.carino-view.is-leaving {
  opacity: 0;
  filter: blur(5px) saturate(0.85);
  transform: scale(0.995);
}

.carino-view.is-entering {
  animation: carino-view-enter var(--duration-normal) var(--ease-watercolor) both;
}

@keyframes carino-view-enter {
  from {
    opacity: 0;
    filter: blur(5px) saturate(0.85);
  }

  to {
    opacity: 1;
    filter: blur(0) saturate(1);
  }
}

.view-panel,
.reader-panel,
.carino-view.is-scrollable {
  min-width: 0;
  min-height: 0;
}

[data-carino-scroll-region],
.is-scrollable,
.reader-panel {
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-color: rgb(47 119 114 / 45%) transparent;
  scrollbar-gutter: stable;
  scroll-padding-block: var(--space-4);
  -webkit-overflow-scrolling: touch;
}

[data-carino-scroll-region]::-webkit-scrollbar,
.is-scrollable::-webkit-scrollbar,
.reader-panel::-webkit-scrollbar {
  width: 0.6rem;
}

[data-carino-scroll-region]::-webkit-scrollbar-thumb,
.is-scrollable::-webkit-scrollbar-thumb,
.reader-panel::-webkit-scrollbar-thumb {
  background: rgb(47 119 114 / 36%);
  border: 2px solid transparent;
  border-radius: 999px;
  background-clip: padding-box;
}

@media (max-width: 46rem) {
  .site-header {
    padding-inline: max(var(--space-3), env(safe-area-inset-left));
    padding-right: max(var(--space-3), env(safe-area-inset-right));
  }

  .site-header__inner,
  .site-header-inner {
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      "brand speaker"
      "nav nav";
    row-gap: 0;
  }

  .site-brand,
  .site-title {
    grid-area: brand;
  }

  .site-nav {
    grid-area: nav;
  }

  .speaker-control {
    grid-area: speaker;
  }

  .site-nav ul,
  .site-nav__list {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.15rem;
    width: 100%;
  }

  .site-nav a {
    width: 100%;
    font-size: clamp(0.66rem, 2.9vw, 0.78rem);
    letter-spacing: 0.035em;
  }

  .carino-stage {
    padding: var(--space-2) max(var(--space-2), env(safe-area-inset-right))
      max(var(--space-2), env(safe-area-inset-bottom)) max(var(--space-2), env(safe-area-inset-left));
  }
}

@media (max-width: 22rem) {
  .site-nav ul,
  .site-nav__list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-height: 38rem), (orientation: landscape) and (max-height: 32rem) {
  .site-header {
    padding-block: max(0.25rem, env(safe-area-inset-top)) 0.25rem;
  }

  .site-nav a,
  .speaker-control {
    min-height: 2.25rem;
  }

  .carino-view > .view-panel,
  .carino-view > .reader-panel {
    overflow-y: auto;
  }
}

@media (min-resolution: 1.5dppx) {
  .site-header {
    border-bottom-width: 0.5px;
  }
}
