/* Phone layouts are applied last so desktop and archived game styling stay intact. */
@media (max-width: 700px) {
  html {
    scroll-padding-top: 12px;
  }
  .site-header {
    position: relative;
    display: block;
    background: #fff;
    border-bottom: 1px solid #dfe2e5;
  }
  .site-header .wordmark {
    display: flex;
    width: 100%;
    height: 52px;
    padding: 8px 18px 4px;
    font-size: 15px;
  }
  .site-header .pm-header-logo {
    width: 48px;
  }
  .site-header nav {
    display: flex;
    gap: 0;
    padding: 0 10px;
  }
  .site-header nav a {
    flex: 1;
    justify-content: center;
    padding: 10px 4px;
    font-size: 12px;
    min-height: 44px;
  }
  .system-bar {
    top: 108px;
    right: 16px;
    transform: none;
    font-size: 10px;
  }
  .system-bar > span:first-child {
    font-size: 9px;
  }
  .system-bar > span:last-child {
    padding: 5px 8px;
  }
  .sky-banner {
    height: 178px;
  }
  .launch-window {
    left: 16px;
    right: 16px;
    width: auto;
    max-width: none;
    bottom: 14px;
  }
  .launch-window > a {
    min-height: 48px;
    padding: 8px;
  }
  .hero {
    margin-inline: 20px;
    padding-block: 30px 32px;
  }
  .hero .eyebrow {
    font-size: 10px;
    gap: 10px;
    margin-bottom: 20px;
  }
  .hero h1 {
    font-size: clamp(44px, 11vw, 64px);
  }
  .hero-actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
  }
  .hero-actions a {
    gap: 8px;
    padding: 12px;
    min-height: 48px;
  }
  .section {
    padding: 48px 20px;
  }
  .work.section {
    padding-top: 24px;
  }
  .section-heading {
    margin-bottom: 28px;
  }
  .section-heading h2,
  .about h2 {
    font-size: clamp(32px, 8vw, 40px);
    line-height: 1.05;
  }
  .section-heading > p {
    margin-top: 18px;
    line-height: 1.6;
  }
  .project-top,
  .project-bottom {
    font-size: 10px;
    line-height: 1.6;
  }
  .project-body {
    padding-block: 22px;
    gap: 20px;
  }
  .project h3 {
    font-size: clamp(34px, 10vw, 44px);
  }
  .project-contribution dd {
    font-size: 16px;
  }
  .project-tags span {
    padding: 5px 9px;
  }
  .project-stats {
    gap: 18px;
  }
  .project-stats span {
    font-size: 12px;
  }
  .project-links {
    gap: 8px 18px;
  }
  .project-links a,
  .details-toggle,
  .project-media > summary,
  .workbench-link {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    font-size: 12px;
  }
  .project-gallery {
    grid-template-columns: repeat(3, 84%);
    scroll-snap-type: x mandatory;
  }
  .project-gallery figcaption {
    font-size: 11px;
  }
  .project-details {
    padding: 18px;
  }
  .recommendation {
    padding: 20px;
  }
  .recommendation blockquote {
    font-size: 19px;
  }
  .about-opening {
    font-size: 22px;
    line-height: 1.5;
  }
  .about-narrative {
    font-size: 16px;
  }
  .about-layout {
    gap: 28px;
  }
  .about-notebook {
    padding: 20px 16px;
  }
  .about-notebook-content {
    padding: 0;
  }
  .about h2 {
    letter-spacing: -1.6px;
  }
  .about-layout {
    padding-top: 24px;
  }
  .about-perspectives dd {
    margin-left: 0;
    font-size: 16px;
  }
  .about-background,
  .about-world-copy {
    font-size: 15px;
  }
  .about-foundations {
    padding: 24px 20px;
  }
  .about-contact {
    min-height: 44px;
    font-size: 13px;
  }
  .about-globe-heading {
    flex-direction: column;
    gap: 14px;
  }
  .about-globe-heading h3 {
    font-size: 26px;
    line-height: 1.2;
  }
  .about-globe-heading h3 span {
    font-size: 17px;
    margin-top: 8px;
  }
  .globe-motion {
    min-height: 44px;
    padding: 10px 14px;
    font-size: 12px;
  }
  .about-globe {
    aspect-ratio: 1.05;
    margin-block: 12px;
  }
  .globe-pin-label {
    padding: 5px 7px;
    font-size: 11px;
  }
  .flight-controls button {
    width: 64px;
    height: 44px;
  }
  .globe-flight {
    padding-top: 16px;
  }
  .globe-flight > .flight-destination {
    font-size: 26px;
    overflow-wrap: anywhere;
  }
  .about .about-label {
    font-size: 11px;
  }
  .about-tools li {
    font-size: 12px;
    padding: 7px 10px;
  }
  .small-projects p,
  .about-foundations p {
    font-size: 16px;
    line-height: 1.65;
  }
  .contact h2 {
    font-size: clamp(32px, 8.5vw, 42px);
    line-height: 1.05;
    margin-block: 24px;
  }
  .contact-link {
    font-size: clamp(27px, 8vw, 42px);
    gap: 12px;
    letter-spacing: -1px;
  }
  .contact-socials {
    gap: 20px;
  }
  .contact > p:last-child {
    margin-top: 22px;
  }
  footer {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 18px 12px;
    padding: 24px 20px;
    font-size: 10px;
  }
  footer > span {
    overflow-wrap: anywhere;
  }
  footer > a:last-child {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
  }
  .orbit-section {
    padding: 32px 12px;
  }
  .derby-heading {
    display: block;
    margin-inline: 8px;
  }
  .derby-heading h2 {
    font-size: clamp(32px, 9.5vw, 50px);
  }
  .derby-heading h2 > span {
    display: table;
    margin: 12px 0 0;
    font-size: 12px;
    padding: 7px 10px;
  }
  .derby-heading > p {
    font-size: 15px;
  }
  .derby-shell {
    box-shadow: 4px 4px 0 #cfd6dd;
  }
  .derby-shell .player-title {
    gap: 8px;
    padding: 8px 10px;
    margin: 0;
    font-size: 11px;
  }
  .derby-shell .player-title > span:nth-child(2) {
    display: none;
  }
  .derby-shell button {
    min-height: 44px;
    font-size: 12px;
  }
  .derby-roster {
    font-size: 10px;
    padding: 10px 12px;
    line-height: 1.5;
  }
  .derby-stage {
    min-height: 0;
    height: clamp(310px, 46svh, 390px);
  }
  .derby-hud {
    padding: 10px;
    gap: 6px;
  }
  .derby-hud span {
    padding: 7px 8px;
  }
  .derby-hud small {
    font-size: 9px;
  }
  .derby-hud b {
    font-size: 18px;
  }
  .derby-overlay {
    inset: 66px 0 0;
    gap: 12px;
    padding: 16px 12px;
    overflow-y: auto;
    justify-content: safe center;
  }
  .derby-overlay h3 {
    font-size: clamp(28px, 8vw, 38px);
    letter-spacing: -1px;
  }
  .derby-overlay p {
    font-size: 13px;
    line-height: 1.5;
  }
  .derby-overlay small {
    font-size: 9px;
  }
  .derby-controls {
    inset: auto 10px 9px;
    gap: 6px;
  }
  .derby-controls > span {
    padding: 5px 7px;
    font-size: 11px;
  }
  .derby-controls small {
    font-size: 10px;
  }
  .derby-roll-console {
    grid-template-columns: 1fr;
    padding: 14px 12px;
    gap: 12px;
  }
  .derby-roll-instructions {
    display: grid;
    grid-template-columns: 1.3fr 1fr;
    gap: 5px 12px;
    align-items: center;
  }
  .derby-roll-instructions .eyebrow {
    display: none;
  }
  .derby-roll-instructions h3 {
    grid-row: span 2;
    font-size: 18px;
    margin: 0;
  }
  .derby-roll-instructions p {
    display: block;
    grid-column: 1 / -1;
    grid-row: 3;
    margin: 5px 0 0;
    font-size: 12px;
    line-height: 1.5;
  }
  .derby-howto {
    margin: 12px auto 16px;
    font-size: 13px;
  }
  .derby-roll-instructions label {
    font-size: 9px;
  }
  .derby-roll-instructions meter {
    margin: 0;
  }
  .derby-shell #derby-roll {
    padding: 12px 8px;
  }
  .derby-roll-meter {
    height: 38px;
    margin: 0 0 8px;
  }
  .derby-roll-guide {
    margin: 0 0 12px;
    font-size: 9px;
    letter-spacing: 0;
  }
  .derby-roll-caption {
    flex-direction: row;
    gap: 8px;
  }
  .derby-roll-caption b {
    font-size: 18px;
    white-space: nowrap;
  }
  #derby-roll-cue {
    font-size: 9px;
    text-align: right;
  }
  .derby-results {
    padding: 22px 16px;
  }
  .derby-results h3 {
    font-size: 30px;
  }
  .derby-results label,
  .derby-results small {
    font-size: 13px;
  }
  .derby-results input:not([type='checkbox']),
  .derby-results textarea {
    font-size: 16px;
    min-height: 48px;
  }
  .derby-form-grid,
  .derby-leaderboard {
    grid-template-columns: 1fr;
  }
  .derby-form-inline {
    flex-direction: column;
  }
  .derby-form-inline input {
    width: 100%;
  }
  .derby-form-inline button,
  .derby-result-actions button {
    width: 100%;
  }
  .derby-results .derby-consent {
    gap: 12px;
  }
  .derby-consent input {
    flex-shrink: 0;
    width: 20px;
    height: 20px;
  }
  .derby-leaderboard {
    margin: 28px 8px 0;
  }
  .derby-leaderboard h3 {
    font-size: 24px;
  }
  .derby-leaderboard li {
    font-size: 14px;
  }
  .game-notes {
    margin-inline: 8px;
    gap: 14px;
  }
  .game-notes p:first-child {
    font-size: 14px;
    line-height: 1.65;
  }
  .game-notes p:last-child {
    font-size: 12px;
  }
}
@media (max-width: 370px) {
  .site-header nav {
    padding-inline: 4px;
  }
  .site-header nav a {
    font-size: 11px;
  }
  .hero .eyebrow {
    flex-direction: column;
    gap: 6px;
  }
  .hero-location {
    padding: 0;
    border: 0;
  }
  .derby-hud b {
    font-size: 16px;
  }
  .derby-roll-caption {
    align-items: start;
  }
}

@media (max-width: 700px) {
  /* Six occupied lanes need 40px each, independent of short phone viewports. */
  .derby-stage {
    height: 460px;
    min-height: 460px;
  }
  .derby-field {
    padding: 10px 12px;
  }
  .derby-field ol {
    grid-template-columns: 1fr 1fr;
    gap: 16px 10px;
  }
  .derby-field small {
    font-size: 10px;
  }
  .derby-announcement {
    padding: 12px;
    font-size: 13px;
  }
  .derby-board-toolbar {
    flex-direction: column;
    align-items: stretch;
    padding: 12px;
  }
  .derby-board-toolbar p {
    font-size: 11px;
  }
  .derby-board-columns,
  .derby-leaderboard li {
    grid-template-columns: 32px minmax(0, 1fr) auto;
    gap: 8px;
    padding-inline: 12px;
  }
  .derby-placings {
    grid-template-columns: 1fr;
    font-size: 12px;
  }
}
