/* The homepage (index.html and its Chinese editions), after Teenage Engineering's "Daily Life of Mr. Update" as
   Swipefile captured it: white paper, black ink and one orange for the tune and what is changing. One heavy headline
   with the way in drawn beside it, and one wide ink scene that plays like a film; under it the page keeps the scene's
   column, small utility type, and its working examples on panels a tone darker than the page instead of ink frames,
   cards or shadows (owner, 2026-10-25), and drawings from the same hand. docs/plans/homepage.md records the decisions; styles.css holds the site's tokens, header, footer and closing
   block. */

/* The poster face: Mona Sans Condensed (SIL OFL 1.1, GitHub), its Latin letters at weights 700 to 900, renamed
   because Mona is a Reserved Font Name (licenses/ScoreStarling-Display.txt), for the headline and closing line.
   Starling's hand: Petaluma Script (SIL OFL 1.1, Steinberg; licenses/Petaluma.txt), for every word in the scene: the
   title, letters and fret numbers it writes, and the balloons. Around the scene, the site's sans for what you read,
   and its mono for small upper-case labels and the film's controls. The title face is preloaded; a headline set in a
   fallback would be twice as wide. */
@font-face {
  font-family: "ScoreStarling Display";
  font-style: normal;
  font-weight: 700 900;
  font-display: block;
  src: url(/assets/fonts/scorestarling-display-v1.woff2) format("woff2");
}
@font-face {
  font-family: "Petaluma Script";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/petaluma-script-v1.10.woff2) format("woff2");
}

.home {
  /* The printed face in every edition: its Latin letters stay printed beside Chinese ones. */
  --poster: var(--poster-face);
  --hand: "Petaluma Script", "Times New Roman", serif;
  /* Match the navigation's measure; only the drawing scales down on short screens. */
  --page: min(1120px, 100vw - 2 * var(--gutter));
  --column: var(--page);
}
.home main {
  overflow-x: clip;
}

/* The header keeps the page's measure (brand.css); only the illustration shrinks on short screens. */
.home .site-header {
  background: var(--paper);
}

/* The same melody crosses between two drawn pages; the orange action is a real button. */
.hero {
  --head: 184px;
  padding: 0 0 var(--space-4);
}
/* Keep the converter's first frame still while the story loads behind its complete poster. */
.js
  .hero:not(.hero-ready)
  .converter
  :is(#converter-input-art, #converter-output-art, .converter-caption, .form-result, .bird-cel) {
  animation-play-state: paused;
}
@media (min-width: 961px) {
  /* The whole poster grows with the page's measure (brand.css --page-scale), so its edges stay on the header's and the
     sections'. */
  .hero {
    display: flow-root;
  }
  .home .hero > .wrap {
    width: min(1120px, (100% - 2 * var(--gutter)) / var(--page-scale));
    zoom: var(--page-scale);
  }
}
@media (min-width: 961px) and (min-aspect-ratio: 4 / 3) {
  .hero {
    min-height: calc(100svh - 72px);
  }
}
.masthead {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 300px;
  align-items: center;
  column-gap: var(--space-8);
  min-height: var(--head);
  margin-top: var(--space-6);
}
.hero h1 {
  --poster-size: clamp(64px, 7vw, 88px);
  margin: 0;
  font: 800 var(--poster-size) / 0.94 var(--poster);
  letter-spacing: -0.005em;
  text-transform: uppercase;
}
.hero h1 span {
  display: block;
}
.corner {
  display: grid;
  justify-self: end;
  width: 300px;
  max-width: 100%;
  gap: var(--space-2);
}
.converter-drawing {
  display: block;
  width: 100%;
  height: auto;
  overflow: visible;
}
/* Lettering belongs to the drawing definitions, not their <use> host. */
.format-lettering {
  fill: var(--ink);
  stroke: none;
  font-family: var(--mono);
  font-weight: 400;
}
/* One three-second phrase shared by the format artwork, captions and bird. */
#converter-input-art,
#converter-output-art,
.converter-caption {
  animation: format-page 3s ease-in-out -0.21s infinite;
}
@keyframes format-page {
  0%,
  100% {
    opacity: 0;
  }
  7%,
  91% {
    opacity: 1;
  }
}
.form-result {
  transform-origin: 310px 58px;
  animation: result-settle 3s cubic-bezier(0.22, 1, 0.36, 1) infinite;
}
@keyframes result-settle {
  0%,
  56% {
    transform: translateY(2px);
  }
  76%,
  100% {
    transform: translateY(0);
  }
}
.converter-caption {
  display: grid;
  grid-template-columns: 100fr 160fr 100fr;
  align-items: center;
  min-height: 24px;
  font: 500 12px / 1 var(--mono);
  text-align: center;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
#conversion-output-label {
  grid-column: 3;
}
.pad {
  display: grid;
  gap: var(--space-2);
  color: var(--ink);
  text-decoration: none;
  cursor: pointer;
}
.cta-bubble {
  position: relative;
  isolation: isolate;
  display: grid;
  justify-items: center;
  justify-self: center;
  width: min(100%, 280px);
  gap: 2px;
  padding: 20px 36px 12px;
  color: var(--ink);
  transition: transform 0.2s;
}
.invitation-outline {
  position: absolute;
  z-index: -1;
  inset: 0;
  width: 100%;
  height: 100%;
  fill: var(--paper);
  stroke: var(--ink);
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.invitation-outline path + path {
  fill: none;
  stroke: var(--accent);
  stroke-width: 2;
  stroke-dasharray: 260;
  stroke-dashoffset: 260;
  transition: stroke-dashoffset 0.35s;
}
/* French, German, Spanish and Portuguese words take two lines: even, centred lines stay inside the oval's curve. */
.cta-invite {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  font: 500 20px / var(--lh-ui) var(--sans);
  text-align: center;
  text-wrap: balance;
}
.cta-free {
  position: absolute;
  top: 0;
  right: 20px;
  padding: 0 4px;
  color: var(--accent-text);
  background: var(--paper);
  font:
    400 13px / var(--lh-ui) "Petaluma Script",
    var(--sans);
}
.pad .icon {
  width: 20px;
  height: 20px;
  transition: transform 0.2s;
}
.pad:is(:hover, :focus-visible) .cta-bubble {
  transform: rotate(-1deg) translateY(-2px);
}
.pad:is(:hover, :focus-visible) .invitation-outline path + path {
  stroke-dashoffset: 0;
}
.pad:is(:hover, :focus-visible) .icon {
  transform: translateX(4px);
}
.pad:active .cta-bubble {
  transform: translateY(1px);
}
.pad:focus-visible {
  outline-offset: 4px;
}
/* The bird takes its time over tea while formats keep changing every three seconds. */
.bird-cel {
  opacity: 0;
}
.bird-cel-0 {
  animation: tea-rest 6s steps(1, end) infinite;
}
.bird-cel-1 {
  animation: tea-lift 6s steps(1, end) infinite;
}
.bird-cel-2 {
  animation: tea-sip 6s steps(1, end) infinite;
}
.bird-cel-3 {
  animation: tea-lower 6s steps(1, end) infinite;
}
@keyframes tea-rest {
  0%,
  85%,
  100% {
    opacity: 1;
  }
  25% {
    opacity: 0;
  }
}
@keyframes tea-lift {
  0%,
  40%,
  100% {
    opacity: 0;
  }
  25% {
    opacity: 1;
  }
}
@keyframes tea-sip {
  0%,
  65%,
  100% {
    opacity: 0;
  }
  40% {
    opacity: 1;
  }
}
@keyframes tea-lower {
  0%,
  85%,
  100% {
    opacity: 0;
  }
  65% {
    opacity: 1;
  }
}
/* Pause must outrank the ID-scoped format animation shorthands as well as the caption. */
.converter.is-paused :is(#converter-input-art, #converter-output-art, .converter-caption, .form-result, .bird-cel) {
  animation-play-state: paused;
}

/* The scene: one ink drawing as SVG, the music written on its blank sheet, every word in it lettered by hand.
   hero.js reads --view to choose its crop, so the crop and the column are decided in one place. */
.scene {
  --view: full;
  position: relative;
  margin-top: var(--space-2);
  outline: none;
}
@media (min-width: 920px) and (max-width: 1179.98px) {
  .scene {
    --view: middle;
  }
}
@media (max-width: 679.98px) {
  .scene {
    --view: phone;
  }
}
.stage {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 1536 / 728;
  overflow: hidden;
}
.scene-poster {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}
.scene-poster-phone,
.scene.film-ready .scene-poster {
  display: none;
}
.scene:not(.film-ready) .stage {
  opacity: 0;
}
@media (max-width: 679.98px) {
  .stage {
    aspect-ratio: 1240 / 728;
  }
}
@media (max-width: 679.98px) {
  .scene-poster-full {
    display: none;
  }
  .scene-poster-phone {
    display: block;
  }
}
@media (min-width: 920px) and (min-height: 501px) {
  .stage {
    height: min(var(--column) / 2.11, 100svh - 328px);
  }
}
@media (min-width: 961px) and (min-height: 501px) {
  .stage {
    height: min(var(--column) / 2.11, (100svh - 88px) / var(--page-scale) - 240px);
  }
}
#air {
  fill: var(--accent);
  color: var(--accent);
}
.whoosh {
  fill: var(--ink);
}
.name {
  font: 400 22px var(--hand);
  fill: var(--ink);
  text-anchor: middle;
}
.title {
  font: 400 28px var(--hand);
  fill: var(--ink);
}
.engraving {
  color: var(--ink);
  fill: currentColor;
}
.engraving path,
.engraving rect,
.engraving polygon,
.engraving ellipse {
  stroke: currentColor;
}
.engraving text {
  font-family: var(--hand);
}
.engraving .knock {
  fill: var(--paper);
  stroke: none;
}
/* The balloons in Starling's hand, in capitals as a letterer writes them, with a hairline of ink so the letters carry
   the drawing's weight. */
.balloon text {
  font: 400 32px var(--hand);
  letter-spacing: 0.01em;
  text-transform: uppercase;
  text-anchor: middle;
  fill: var(--ink);
  stroke: var(--ink);
  stroke-width: 0.7px;
  stroke-linejoin: round;
  paint-order: stroke;
}
.balloon[id^="reply"] > text {
  font-size: 28px;
}
/* Until hero.js has every drawing, the film's moving parts wait out of sight behind the complete poster. The
   balloons' drawings have no size or place until then, so shown they would cover the musician at full size. */
.scene:not(.film-ready) :is(#pencil, .balloon) {
  visibility: hidden;
}

#score-status text {
  fill: var(--muted);
  font: 400 20px var(--hand);
}
.request-diagram {
  color: var(--ink);
}
.balloon .request-diagram text {
  font: 400 24px var(--hand);
  stroke: none;
  text-transform: none;
}
.status {
  margin: var(--space-2) 0 0;
  color: var(--accent-text);
}
.status:not(.shown) {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
}
.fallback {
  margin: var(--space-4) 0 0;
}
.fallback a {
  text-decoration: underline;
}

/* Sections: each opens on an ink rule with its heading in the site's light display face and a lede under it, then
   its own layout. Space, not boxes, keeps them apart. */
.home .section {
  padding: clamp(80px, 9vw, 128px) 0 0;
}
.home .section-head {
  display: grid;
  gap: var(--space-4);
  max-width: none;
  margin: 0 0 clamp(40px, 5vw, 64px);
  padding-top: 0;
  border: 0;
}
.home .section-head h2 {
  margin: 0;
  max-width: 22ch;
  font: 800 var(--display-2) / 1 var(--poster);
  letter-spacing: 0;
  text-transform: uppercase;
}
.home .section-lede {
  max-width: 48ch;
  margin: 0;
  font-size: var(--lede);
  line-height: var(--lh-snug);
  color: var(--muted);
  text-wrap: pretty;
}
.home h3 {
  margin: 0;
  font: 500 20px / var(--lh-heading) var(--sans);
  letter-spacing: -0.02em;
}
.home h3 a {
  text-decoration: none;
}
.home h3 a:hover {
  text-decoration: underline 1.5px;
  text-underline-offset: 4px;
}
.home main p {
  text-wrap: pretty;
}
.spot {
  display: block;
  width: 100%;
  height: auto;
}
.home .link-arrow {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  min-height: 44px;
  padding: 0;
  border: 0;
  font: 500 15px / 1 var(--sans);
  color: var(--ink);
  text-decoration: underline 1.5px var(--line);
  text-underline-offset: 6px;
  transition: text-decoration-color 0.15s;
}
.home .link-arrow:hover {
  text-decoration-color: currentColor;
}
.home .link-arrow .icon {
  width: 16px;
  height: 16px;
  transition: transform 0.2s var(--ease);
}
.home .link-arrow:hover .icon {
  transform: translateX(2px);
}

/* What people use it for: a catalog row, each use drawn from the same hand, its title and a short description. */
.home .uses {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-9) var(--space-10);
  margin: 0;
  padding: 0;
  list-style: none;
}
.home .use {
  display: grid;
  grid-template-columns: 176px minmax(0, 1fr);
  align-items: center;
  column-gap: var(--space-6);
  row-gap: var(--space-2);
  padding: 0;
  border: 0;
}
.use .spot {
  width: 176px;
  height: 176px;
  margin: 0;
  object-fit: contain;
  object-position: center;
}
.use-copy {
  display: grid;
  gap: var(--space-2);
}
.home .use p {
  margin: 0;
  font-size: 16px;
  line-height: var(--lh-snug);
  color: var(--ink-soft);
}

/* Every note within reach: the workbench on a panel a tone darker than the page, the score raised on white with a
   hairline ring as in the workspace, the chosen note in orange. */
.home .editor {
  margin: 0;
  border: 0;
  border-radius: var(--radius-lg);
  background: var(--layer-1);
  box-shadow: none;
  overflow: visible;
}
.home .editor-bar {
  padding: 8px 8px 8px 20px;
  border-bottom: 1px solid var(--hair-strong);
  background: none;
}
.home .editor-doc strong {
  font: 600 16px / 1 var(--sans);
}
.home .editor-doc span,
.home .editor-version,
.home .insp-label,
.home .editor-position {
  font: 500 12px / 1 var(--mono);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--muted);
}
.home .editor-version i {
  border-radius: 50%;
  background: var(--ink);
}
.home .editor-canvas {
  padding: 24px 0 24px 24px;
  background: none;
  border-right: 0;
}
.home .editor-stage {
  padding: 24px 8px;
  border: 0;
  border-radius: var(--radius-md);
  background: var(--white);
  box-shadow: var(--ring);
}
.home .inspector {
  border-left: 0;
  background: none;
}
.home .insp-label {
  margin-bottom: var(--space-2);
  font: 500 13px / var(--lh-ui) var(--sans);
  letter-spacing: 0;
  text-transform: none;
}
.home .insp-note {
  font: 500 32px / var(--lh-heading) var(--sans);
  letter-spacing: 0;
  color: var(--ink);
}
.home .insp-meta {
  margin-top: var(--space-1);
  font-size: 13px;
  line-height: var(--lh-snug);
}
.home .stepper {
  grid-template-columns: 44px minmax(0, 1fr) 44px;
  gap: var(--space-2);
  border: 0;
  border-radius: 0;
  background: none;
}
.home .stepper output {
  border: 0;
  font: 500 16px / var(--lh-ui) var(--sans);
}
.home .stepper button {
  border: 0;
  border-radius: var(--radius-sm);
  background: var(--white);
  box-shadow: var(--ring);
}
.home .insp-tools {
  gap: var(--space-4);
  margin-top: var(--space-4);
}
.home .tool-group {
  border: 0;
  background: none;
}
.home .tool {
  border-color: transparent;
  border-radius: var(--radius-sm);
  background: var(--white);
  box-shadow: var(--ring);
}
.home .tool:not(:disabled):hover {
  border-color: transparent;
  box-shadow: 0 0 0 1px var(--hair-strong);
}
.home .inspector .tool[aria-pressed="true"] {
  color: var(--accent-text);
  background: var(--accent-tint);
  box-shadow: inset 0 0 0 1px var(--accent-text);
}
.home .editor-tools .tool:disabled {
  background: none;
  box-shadow: none;
}
.home .editor-stage:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
  box-shadow: none;
}
.home .editor-shortcuts {
  border-top: 1px solid var(--hair-strong);
}
.home .editor-shortcuts summary {
  display: list-item;
  min-height: 44px;
  padding: 12px 0;
  font-size: 13px;
  cursor: pointer;
}
.home .insp-keys {
  margin: var(--space-2) 0 0;
  padding: 0;
  border: 0;
}
.home .tool {
  min-width: 44px;
  min-height: 44px;
}
.home .stepper > * {
  min-height: 44px;
}
.home kbd {
  border: 0;
  border-radius: 4px;
  background: var(--white);
  box-shadow: var(--ring);
  font: 500 11px / 1 var(--mono);
}
.home .editor-transport {
  border-top: 1px solid var(--hair-strong);
  background: none;
}
.home .btn-mini {
  border-color: transparent;
  border-radius: var(--radius-sm);
  background: var(--white);
  box-shadow: var(--ring);
}
.home .btn-mini:hover {
  border-color: transparent;
  box-shadow: 0 0 0 1px var(--hair-strong);
}
.home .btn-mini-ink {
  background: var(--ink);
  color: var(--paper);
}
.home .features {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-7);
  margin: clamp(40px, 5vw, 56px) 0 0;
  padding: 0;
  list-style: none;
}
.home .feature {
  display: grid;
  align-content: start;
  gap: var(--space-3);
  padding: 0;
  border: 0;
  background: none;
}
.feature-art {
  aspect-ratio: 1;
  overflow: hidden;
}
.feature-art img {
  display: block;
  width: 300%;
  max-width: none;
  height: 100%;
  transform: translateX(calc(var(--panel, 0) * -100% / 3));
}
.feature:nth-child(2) .feature-art {
  --panel: 1;
}
.feature:nth-child(3) .feature-art {
  --panel: 2;
}
.home .feature p {
  margin: 0;
  color: var(--muted);
}
.home .section-more {
  margin: var(--space-6) 0 0;
}

/* Meet Starling: three ways to work with it, each drawn, beside the conversation itself. The chat's night tokens
   point at this page's paper, its panel tone and hairlines. */
#starling {
  --night: var(--paper);
  --night-raise: var(--layer-1);
  --night-line: var(--hair-strong);
  --on-night: var(--ink);
  --on-night-muted: var(--muted);
  --accent-night: var(--accent);
}
.meet-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
  gap: clamp(32px, 5vw, 80px);
  align-items: start;
}
.home .meet {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 0;
  margin: 0;
  padding: 0;
  list-style: none;
  border: 0;
}
.meet-way {
  display: grid;
  grid-template-columns: 144px minmax(0, 1fr);
  gap: var(--space-6);
  align-items: start;
  padding: 0 0 32px;
  border: 0;
}
.meet-way .spot {
  width: 144px;
  height: 144px;
  object-fit: contain;
  object-position: center bottom;
}
.meet-text {
  display: grid;
  gap: var(--space-2);
}
.meet-text p {
  margin: 0;
  font-size: 16px;
  line-height: var(--lh-snug);
  color: var(--ink-soft);
}
.meet-text .meet-more {
  margin: 0;
}

/* The conversation on a panel a tone darker than the page: your words on ink, Starling's on the panel, its scores
   and files raised on white with a hairline ring. */
.home .chat {
  margin: 0;
  border: 0;
  border-radius: var(--radius-lg);
  background: var(--layer-1);
}
.home .chat-bar {
  padding: 12px 16px;
  border-bottom: 1px solid var(--hair-strong);
  font: 500 12px / 1 var(--mono);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--ink);
}
.home .chat-conn {
  color: var(--muted);
  text-transform: none;
  letter-spacing: 0;
}
.home .chat-conn i {
  display: none;
}
.home .msg-user {
  border: 0;
  border-radius: var(--radius-md) var(--radius-md) var(--radius-xs) var(--radius-md);
  background: var(--ink);
  color: var(--paper);
}
.home .msg-user .attach {
  color: color-mix(in srgb, var(--paper) 70%, transparent);
}
.home .avatar {
  border-radius: 0;
  background: none;
  padding: 0;
}
.home .panel {
  border: 0;
  border-radius: var(--radius-md);
  background: var(--white);
  box-shadow: var(--ring);
}
.home .panel-head {
  border-bottom: 1px solid var(--hair-strong);
  background: none;
}
.home .panel-head strong {
  font: 500 12px / 1 var(--mono);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.home .file-row {
  border: 0;
  border-radius: 0;
}
.home .file-row + .file-row {
  border-top: 1px solid var(--hair-strong);
}

.home .chat-log {
  gap: var(--space-4);
  padding: 20px;
}
.home .chat-audio {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
  margin-top: 0;
  border: 0;
  background: none;
  color: inherit;
}
.chat-audio a {
  color: inherit;
  font: 400 13px / var(--lh-ui) var(--mono);
  text-underline-offset: 3px;
}
.chat-audio small {
  font: 400 12px / var(--lh-ui) var(--mono);
}
.home .chat-downloads:not([hidden]) {
  display: flex;
  gap: var(--space-3);
  border-top: 1px solid var(--hair-strong);
  padding: 8px 12px;
}
.home .chat-downloads .file-row {
  display: inline-flex;
  gap: var(--space-2);
  padding: 0;
  min-height: 44px;
  border: 0;
}

/* The end of the page as the end of a piece, the headline's bookend: Starling on the final bar line of a staff that
   runs the width of the column, then the line in the poster face and the way in. */
.home .finale {
  padding: clamp(112px, 13vw, 184px) 0 clamp(72px, 8vw, 112px);
  text-align: left;
}
.home .finale-staff {
  max-width: none;
  height: 73px;
  margin: 0 0 var(--space-8);
  background: repeating-linear-gradient(to bottom, var(--ink) 0 1px, transparent 1px 18px);
}
.home .final-bar {
  border-left-width: 2px;
  border-right-width: 7px;
}
.home .finale-staff img {
  right: 28px;
  top: -95px;
  width: 112px;
  height: auto;
}
.home .finale-row {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--space-6) var(--space-8);
}
.home .finale h2 {
  --finale-size: min(132px, var(--column) / 8.2);
  max-width: none;
  margin: 0;
  font: 900 var(--finale-size) / 0.86 var(--poster);
  letter-spacing: -0.005em;
  text-transform: uppercase;
  text-wrap: balance;
}
.home .finale h2 em {
  display: block;
  font-style: normal;
}
.home .finale-actions {
  margin: 0;
}

/* Middle widths: the masthead keeps its row while the picture takes the guitar to the lamp. */
@media (max-width: 1179.98px) {
  .home .uses {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-9) var(--space-7);
  }
  .meet-grid {
    grid-template-columns: minmax(0, 1fr);
  }
  .home .chat {
    max-width: 720px;
  }
}
@media (min-width: 680px) and (max-width: 919.98px) {
  .masthead {
    grid-template-columns: minmax(0, 1fr) 280px;
    column-gap: var(--space-6);
  }
  .hero h1 {
    --poster-size: min(76px, var(--column) / 9.5);
  }
  .corner {
    width: 280px;
  }
}
@media (max-width: 679.98px) {
  .masthead {
    grid-template-columns: minmax(0, 1fr);
    height: auto;
    margin-top: var(--space-5);
  }
  .hero h1 {
    --poster-size: min(80px, var(--column) / 7.5);
  }
  .corner {
    width: 100%;
    justify-self: center;
    margin-top: var(--space-4);
  }
  .converter {
    width: min(300px, 100%);
    margin-inline: auto;
  }
  .pad {
    justify-content: normal;
  }
  /* The picture runs edge to edge, so its type and notation keep their size. */
  .scene {
    margin-inline: calc(-1 * var(--gutter));
  }
}
@media (max-width: 919.98px) {
  .home .features {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--space-5);
  }
}
@media (max-width: 760px) {
  .home .uses {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--space-9);
  }
  .home .use {
    grid-template-columns: 96px minmax(0, 1fr);
    column-gap: var(--space-5);
  }
  .use .spot {
    width: 96px;
    height: 120px;
  }
  .home .editor-canvas {
    padding: 16px 16px 0;
  }
  .home .inspector {
    border-left: 0;
  }
  .meet-way {
    grid-template-columns: 80px minmax(0, 1fr);
    gap: var(--space-4);
  }
  .meet-way .spot {
    width: 80px;
    height: 80px;
  }
  .home .finale h2 {
    --finale-size: min(104px, var(--column) / 6.9);
  }
  .home .finale-staff img {
    right: 16px;
    top: -76px;
    width: 88px;
  }
}
/* The smallest phones give the conversation's panels the chat's whole width, so the longest file name still fits. */
@media (max-width: 400px) {
  .home .chat-log {
    padding: 20px 16px 24px;
  }
  .home .msg-bot {
    max-width: none;
  }
  .home .panel-files {
    padding: 12px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .pad,
  .pad .icon {
    transition: none;
  }
  .converter * {
    animation: none;
  }
  .cta-bubble,
  .pad .icon {
    transition: none;
  }
  .pad:is(:hover, :focus-visible) .cta-bubble,
  .pad:is(:hover, :focus-visible) .icon {
    transform: none;
  }
  .pad:hover {
    transform: none;
  }
}

/* No dark theme: the homepage keeps white paper whatever the visitor chose (data-theme-fixed, apps/app/shared/theme.js), since
   its drawings are ink on paper and, inverted, read as a photographic negative. */

/* Chinese editions: the headline in the platform's heaviest Chinese face, which needs no upper case or tight tracking. */
:root:is(:lang(zh), :lang(ja), :lang(ko)) .hero h1 {
  --poster-size: min(84px, var(--head) / 2.16);
  font-family: var(--display);
  font-weight: 600;
  letter-spacing: 0.02em;
  line-height: 1.08;
  text-transform: none;
}
@media (min-width: 680px) and (max-width: 919.98px) {
  :root:is(:lang(zh), :lang(ja), :lang(ko)) .hero h1 {
    --poster-size: clamp(44px, 7.5vw, 64px);
  }
}
@media (max-width: 679.98px) {
  :root:is(:lang(zh), :lang(ja), :lang(ko)) .hero h1 {
    --poster-size: clamp(40px, 13.5vw, 72px);
  }
}
/* The corner's words in the same Chinese face; on a phone the pad stays within the headline's two shorter lines. */
:root:is(:lang(zh), :lang(ja), :lang(ko)) .pad {
  font-family: var(--display);
  font-weight: 600;
  letter-spacing: 0;
  text-transform: none;
}

/* The balloons in the platform's Chinese sans at its heaviest, which needs no ink added: few platforms have a Chinese
   hand installed. */
:root:is(:lang(zh), :lang(ja), :lang(ko)) .balloon text {
  font-family: var(--display);
  font-weight: 600;
  letter-spacing: 0;
  text-transform: none;
  stroke: none;
}
/* Chinese titles and annotations use the same sans as the surrounding illustration labels. */
:root:is(:lang(zh), :lang(ja), :lang(ko)) .title {
  font-family: var(--sans);
  font-weight: 500;
}
:root:is(:lang(zh), :lang(ja), :lang(ko)) #score-status text {
  font-family: var(--sans);
}
:root:is(:lang(zh), :lang(ja), :lang(ko)) .converter-caption {
  text-transform: none;
  letter-spacing: 0;
}
:root:is(:lang(zh), :lang(ja), :lang(ko)) .home .section-head h2 {
  font-family: var(--display);
  font-weight: 600;
  line-height: var(--lh-heading);
  letter-spacing: 0;
  text-transform: none;
}
/* The closing line is the headline's bookend: the same face, weight and size. */
:root:is(:lang(zh), :lang(ja), :lang(ko)) .home .finale h2 {
  --finale-size: min(84px, var(--column) / 6.9);
  max-width: none;
  font-family: var(--display);
  font-weight: 600;
  letter-spacing: 0.02em;
  line-height: 1.08;
  text-transform: none;
}

/* A phone turned sideways leaves less height below Safari's address and tab bars. */
@media (min-width: 600px) and (max-height: 500px) {
  .masthead {
    grid-template-columns: minmax(0, 1fr) 240px;
    min-height: 160px;
    margin-top: var(--space-2);
  }
  .corner {
    width: 240px;
  }
  .hero h1,
  :root:is(:lang(zh), :lang(ja), :lang(ko)) .hero h1 {
    --poster-size: 48px;
  }
  .cta-bubble {
    padding: 16px 28px 8px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .converter * {
    animation: none;
  }
  .bird-cel-0,
  #converter-input-art,
  #converter-output-art,
  .converter-caption {
    opacity: 1;
  }
  .form-result {
    opacity: 1;
  }
}
