/* Only the content region changes. The navigation columns never change width. */
.ft-app-view { display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; gap: var(--ft-app-gap); min-inline-size: 0; }
/* The skip link keeps its own focus ring; this structural container is not a control. */
.ft-shell #main-content:focus { outline: none; }
.ft-app-progress { position: fixed; inset: 0 0 auto; block-size: 3px; z-index: 100001; background: linear-gradient(90deg, var(--ft-primary), #b69add); pointer-events: none; }
.ft-app-progress[hidden] { display: none; }
.ft-app-view.is-entering { animation: ft-view-enter 140ms ease-out; }
@keyframes ft-view-enter { from { opacity: .7; } to { opacity: 1; } }
@media (min-width: 48rem) { .app-layout.ft-shell { grid-template-columns: var(--ft-app-sidebar) minmax(0, 1fr); } }
@media (min-width: 72rem) { .ft-app-view { grid-template-columns: minmax(0, 1fr) var(--ft-app-rail); } }
@media (prefers-reduced-motion: reduce) { .ft-app-view.is-entering { animation: none; } }

/* Only the programmatically focused heading after a pointer navigation. Keyboard rings remain. */
.ft-app-view h1[data-view-heading][data-focus-origin="pointer"]:focus { outline: none; }
