/* Yuna's own page on paper (YO, docs/specs/yo-yunas-own-page.md on main): this page's own layout, and nothing else.
   The colours, the type, the buttons, the top line, the footer, a section and a picture's frame are
   design/paper.css's; what moves is design/motion.css's, marked in the page's markup. No inline style anywhere.

   The page, in order: her head, with her name, what she does typed after it, and one of her clips beside them; what
   she can do, a claim each with its proof beside it, every clip of hers beside the first; her pictures; what she
   runs on, and the two buttons once more. And one dialog: a clip opened large, with its own sound. */

/* Reading text avoids a last line of one word. */
p,li{text-wrap:pretty}

/* ---------- 1. her head ---------- */
.yhero{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);gap:clamp(24px,4vw,72px);align-items:center;padding-block:clamp(20px,3.4vw,48px) clamp(40px,5.4vw,80px)}
.yhero .eyebrow{color:var(--ink-2);--cps:12ms}
/* Her name, as large as the column lets it be; under it what she does, in the accent, on one line. */
.yhero h1{margin-top:clamp(6px,1vw,14px);font-size:clamp(104px,15.4vw,232px);letter-spacing:-.07em;line-height:.84}
.ysays{display:block;min-height:1.06em;margin-top:.14em;font-size:clamp(30px,4.05vw,61px);letter-spacing:-.05em;line-height:1.06;white-space:nowrap}
/* Its caret, only while it types (page.js). */
.ysays.typing::after{content:"";display:inline-block;width:.055em;height:.8em;margin-left:.07em;background:currentColor;vertical-align:-.04em}
.yhero .ctas{margin-top:clamp(24px,2.8vw,40px)}
.yhero .under{margin-top:18px;color:var(--ink-3)}
/* Her clip stands whole on the first screen: its frame is never taller than the screen leaves it, and never
   narrower than its caption needs. (The first line is for a browser with no dvh.) */
.ylead{width:100%;max-width:min(400px,max(232px,calc((100vh - 200px) * 9 / 16)));max-width:min(400px,max(232px,calc((100dvh - 200px) * 9 / 16)));margin-inline:auto}
.ylead .cap{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-top:8px;color:var(--ink-3)}
/* A moving picture can be stopped: a small line under it, "Pause animation" and "Play animation", as the homepage
   has. It holds everything on the page that moves by itself. It stands on a line of its own under the clip's name,
   so the caption reads the same at every width. Its pointer area is taller than its letters. */
.motion{display:block;appearance:none;border:0;background:none;margin:0 0 -8px;padding:2px 0 8px;font:inherit;color:var(--ink-3);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;cursor:pointer}
.motion:hover{color:var(--ink)}

/* ---------- a clip's frame: upright, and a button. Pressed, the clip opens large. ---------- */
.yclip{display:block;width:100%;aspect-ratio:9/16;padding:0;border:1px solid var(--line);appearance:none;font:inherit;color:inherit;cursor:pointer}
.yclip:hover{border-color:var(--ink)}
.yclip video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* What a press does, said on the frame: the small copy has no sound, the large one has the clip's own. */
.ysound{position:absolute;left:10px;bottom:10px;display:inline-flex;align-items:center;gap:7px;padding:6px 11px 6px 10px;border:1px solid var(--ink);border-radius:var(--r-pill);background:var(--paper);color:var(--ink);white-space:nowrap}
.ysound::before{content:"";border-left:7px solid currentColor;border-block:4.5px solid transparent}

/* ---------- 2. what she can do: a claim each, its proof beside it. Twelve columns; each kind of proof takes its own. ---------- */
.ycan{padding-top:clamp(28px,3.6vw,52px)}
.ycan .who{font-weight:400;color:var(--ink-3)}
.ycan > div{margin-top:14px}
.yshow{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(12px,1.7vw,24px);align-items:center;padding-block:clamp(36px,5vw,76px);border-top:1px solid var(--line)}
.yshow-text{display:flex;flex-direction:column;align-items:flex-start;min-width:0}
.yshow .n{color:var(--ink-3)}
.yshow h3{margin-top:16px;font-size:clamp(34px,4.5vw,70px);letter-spacing:-.055em;line-height:.98}
.yshow .ynote{margin-top:16px;color:var(--ink-2);font-size:clamp(17px,1.35vw,20px);line-height:1.45}
.yshow .btn{margin-top:clamp(22px,2.6vw,36px)}
.yshow-see{min-width:0;border:1px solid var(--line)}
.yshow-see img,.yshow-see video{width:100%;height:auto}
/* Her clips: the claim in the first columns, every clip of hers in the rest, three across. The claim stays in view
   while they pass. */
.yshow-clips{align-items:start}
.yshow-clips .yshow-text{grid-column:1 / span 4;position:sticky;top:24px}
.yshow-clips h3{font-size:clamp(32px,3.9vw,60px)}
.yclips{grid-column:5 / span 8;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(12px,1.7vw,24px)}
.yclip-name{margin-top:10px;font-size:16px;font-weight:450;letter-spacing:-.015em;line-height:1.3}
/* A moving picture of her: the claim on the left, her on the right. */
.yshow-loop .yshow-text{grid-column:1 / span 7}
.yshow-loop .yshow-see{grid-column:9 / span 4}
/* A wide picture: the picture on the left, the claim on the right. */
.yshow-pic .yshow-see{grid-column:1 / span 7;order:-1}
.yshow-pic .yshow-text{grid-column:9 / span 4}
.yshow-pic h3{font-size:clamp(32px,3.9vw,60px)}

/* ---------- 3. her pictures: one height, each as wide as its own shape; more than fit scroll sideways inside the row ---------- */
.ypics{--tall:clamp(320px,38vw,540px);display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x proximity}
.ypics figure{flex:none;border:1px solid var(--line);scroll-snap-align:start}
.ypics img{width:auto;max-width:none;height:var(--tall)}

/* ---------- 4. what she runs on, and the two buttons once more ---------- */
.yruns p{max-width:15em;font-size:clamp(34px,4.9vw,76px)}
.yruns .on{color:var(--acc);text-decoration:underline;text-decoration-thickness:.04em;text-underline-offset:.12em}
.yruns .on:hover{text-decoration-thickness:.07em}
.yruns .ctas{margin-top:clamp(26px,3.2vw,44px)}

/* ---------- a clip, large: the dialog is as wide as the clip, which is as tall as the screen leaves it ---------- */
.yplayer{width:fit-content;max-width:none;max-height:none;padding:12px;overflow:visible;color:var(--ink)}
.yplayer::backdrop{background:rgba(20,20,18,.62)}
.yplayer-frame{width:min(calc(100vw - 58px),calc(min(100vh - 140px,840px) * 9 / 16));width:min(calc(100vw - 58px),calc(min(100dvh - 140px,840px) * 9 / 16));aspect-ratio:9/16;margin-inline:auto}
.yplayer-frame video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
/* The player fills its frame, which cuts off what is drawn outside it: the keys' ring is drawn inside instead. */
.yplayer-frame video:focus-visible{outline-offset:-3px}
.yplayer-none{position:absolute;inset:0;display:grid;place-items:center;padding:24px;color:var(--paper);text-align:center}
.yplayer-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:12px}
.yplayer-bar h2{font-size:18px;font-weight:450;letter-spacing:-.02em;line-height:1.2}

/* ---------- this page's own motion: the caret of what she does blinks, where motion is welcome ---------- */
@media (prefers-reduced-motion:no-preference){
  .ysays.typing::after{animation:ycaret 1.06s steps(1,end) infinite}
  @keyframes ycaret{50%{opacity:0}}
}

/* ---------- narrower screens ---------- */
@media (max-width:1080px){
  .yshow-clips .yshow-text{grid-column:1 / -1;position:static}
  .yclips{grid-column:1 / -1;margin-top:clamp(24px,3vw,36px)}
}
@media (max-width:900px){
  .yhero{grid-template-columns:1fr;padding-top:10px}
  .yhero h1{font-size:clamp(92px,31vw,176px)}
  .ysays{font-size:clamp(23px,7.6vw,54px)}
  .yhero .ctas .btn,.yruns .ctas .btn{flex:1 1 150px;padding-inline:14px;white-space:nowrap}
  .ylead{max-width:340px}
  .yshow{row-gap:clamp(24px,5vw,36px)}
  .yshow-text,.yshow-loop .yshow-text,.yshow-pic .yshow-text{grid-column:1 / -1}
  .yshow-loop .yshow-see,.yshow-pic .yshow-see{grid-column:1 / -1;order:0}
  .yshow-loop .yshow-see{max-width:340px}
  .yshow h3,.yshow-clips h3,.yshow-pic h3{font-size:clamp(32px,9.4vw,56px)}
  .ypics{--tall:clamp(300px,96vw,440px)}
}
@media (max-width:640px){
  .yclips{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ysound{left:8px;bottom:8px}
}
/* The narrowest phones: a clip's frame is two across, so its words are set smaller to stay on their one line. */
@media (max-width:380px){
  .yclips .ysound{left:6px;bottom:6px;gap:5px;padding:5px 8px 5px 7px;font-size:10px}
}
