/* /work (four paths) and /redraw. Loaded only by work.html and redraw.html. */

/* ---------- Page head + path chooser ---------- */
.w-head { padding: clamp(64px, 9vw, 120px) var(--gutter) clamp(48px, 6vw, 80px); border-bottom: 1px solid var(--line); }
.w-head h1 { font: 700 clamp(2.4rem, 5.4vw, 5rem)/1.02 var(--sans); letter-spacing: -0.035em; max-width: 16ch; margin-top: 22px; }
.w-head > p { margin-top: 22px; color: var(--ink-2); font-size: clamp(16px, 1.25vw, 19px); max-width: 54ch; }
.w-pick { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin-top: clamp(36px, 5vw, 56px); }
.w-card { display: flex; flex-direction: column; gap: 12px; min-height: 270px; padding: 26px 24px 20px; background: var(--sheet); border: 1px solid var(--line-2); color: var(--ink); text-decoration: none; transition: border-color .25s var(--ease), background-color .25s var(--ease); }
.w-card:hover { border-color: var(--red); background: var(--red-soft); }
.w-card.is-lead { border-color: var(--red); }
.w-card .k { font: 500 11.5px/1.35 var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-3); }
.w-card.is-lead .k { color: var(--red-ink); }
.w-card b { font-size: 28px; font-weight: 650; letter-spacing: -0.025em; line-height: 1.08; }
.w-card p { color: var(--ink-2); font-size: 15px; line-height: 1.5; flex-grow: 1; }
.w-card .go { display: flex; justify-content: space-between; padding-top: 14px; border-top: 1px solid var(--line); font-size: 14px; font-weight: 600; }
.w-card .go::after { content: "↓"; color: var(--ink-3); transition: color .25s, transform .25s var(--ease); }
.w-card:hover .go::after { color: var(--red-ink); transform: translateY(3px); }
@media (max-width: 1100px) { .w-pick { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .w-pick { grid-template-columns: 1fr; } .w-card { min-height: 0; } }

/* ---------- Path sections ---------- */
.w-path .sheet-head { margin-bottom: clamp(32px, 4vw, 48px); }
.w-path .eyebrow { margin-bottom: 14px; }
.w-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(28px, 5vw, 80px); align-items: start; }
.w-pair { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 16px; }
@media (max-width: 860px) { .w-split, .w-pair { grid-template-columns: 1fr; } }

/* join form */
.w-join { display: flex; flex-wrap: wrap; gap: 10px; max-width: 540px; }
.w-join input { flex: 1 1 240px; min-width: 0; height: 52px; padding: 0 16px; background: var(--sheet); border: 1px solid var(--line-2); color: var(--ink); font: 400 16px var(--sans); border-radius: 0; }
.w-join input:focus { outline: 2px solid var(--red); outline-offset: 1px; }
.w-join .btn-accent { height: 52px; }
.w-join.bad input { border-color: var(--red); }
.w-join-note { margin-top: 12px; font: 400 12.5px/1.5 var(--mono); color: var(--ink-3); }
.w-join-done { display: flex; gap: 12px; align-items: center; font-size: 17px; }
.w-join-done svg { color: var(--red); flex: none; }
.w-lead { color: var(--ink-2); font-size: 16.5px; max-width: 46ch; margin-bottom: 26px; }

/* library list */
.w-lib { border: 1px solid var(--line-2); background: var(--sheet); }
.w-lib > p { padding: 15px 22px; border-bottom: 1px solid var(--line); font: 500 11.5px/1 var(--mono); letter-spacing: .12em; text-transform: uppercase; color: var(--ink-3); }
.w-lib a { display: grid; grid-template-columns: 64px minmax(0, 1fr) 20px; gap: 14px; align-items: center; padding: 17px 22px; border-bottom: 1px solid var(--line); color: var(--ink); text-decoration: none; transition: background-color .25s var(--ease); }
.w-lib a:last-child { border-bottom: 0; }
.w-lib a:hover { background: var(--red-soft); }
.w-lib a > span:first-child { font: 500 11.5px var(--mono); color: var(--ink-3); text-transform: uppercase; letter-spacing: .06em; }
.w-lib b { display: block; font-weight: 600; }
.w-lib small { color: var(--ink-2); font-size: 14.5px; }
.w-lib a::after { content: "→"; color: var(--ink-3); }

/* offer cards */
.w-offer { display: flex; flex-direction: column; gap: 16px; padding: clamp(24px, 3vw, 40px); background: var(--sheet); border: 1px solid var(--line-2); }
.w-offer.is-lead { border-color: var(--red); }
.w-offer .k { font: 500 11.5px/1.35 var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-3); }
.w-offer.is-lead .k { color: var(--red-ink); }
.w-offer h3 { font-size: clamp(1.6rem, 2.6vw, 2.3rem); line-height: 1.1; letter-spacing: -0.025em; }
.w-offer > p { color: var(--ink-2); max-width: 46ch; }
.w-ticks { display: grid; gap: 8px; list-style: none; padding: 0; margin: 0; color: var(--ink-2); font-size: 15px; }
.w-ticks li { display: flex; gap: 10px; }
.w-ticks li::before { content: ""; flex: none; width: 10px; height: 10px; margin-top: 7px; border: 1.5px solid var(--red); border-radius: 50%; }
.w-ctas { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 22px; margin-top: auto; padding-top: 8px; }
.w-next { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 2px 16px; align-items: baseline; padding: 15px 18px; border: 1px solid var(--line); background: var(--paper); color: var(--ink); text-decoration: none; }
.w-next:hover { border-color: var(--red); }
.w-next i { font: 600 11.5px var(--mono); font-style: normal; letter-spacing: .08em; color: var(--red-ink); }
.w-next b { font-weight: 600; }
.w-next small { grid-column: 2; color: var(--ink-3); font-size: 14px; }
.w-aside { margin-top: 22px; padding-top: 16px; border-top: 1px solid var(--line); color: var(--ink-3); font-size: 15px; }
.w-aside b { color: var(--ink); font-weight: 600; }
.w-aside a { color: var(--red-ink); text-decoration: none; }

/* Live it: The Redraw band */
.w-redraw { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr); border: 1px solid var(--red); background: var(--sheet); }
.w-redraw-copy { display: grid; gap: 18px; align-content: start; padding: clamp(26px, 3.4vw, 48px); }
.w-redraw-copy h3 { font-size: clamp(2rem, 3.6vw, 3.2rem); line-height: 1.02; letter-spacing: -0.03em; }
.w-redraw-copy h3 span { color: var(--red-ink); }
.w-redraw-copy > p { color: var(--ink-2); max-width: 50ch; font-size: 16.5px; }
.w-redraw-art { display: grid; place-items: center; padding: clamp(24px, 3vw, 40px); border-left: 1px solid var(--line); background:
  linear-gradient(var(--grid-major) 1px, transparent 1px) 0 0 / 48px 48px,
  linear-gradient(90deg, var(--grid-major) 1px, transparent 1px) 0 0 / 48px 48px; }
.w-redraw-art svg { width: min(100%, 340px); height: auto; }
@media (max-width: 860px) { .w-redraw { grid-template-columns: 1fr; } .w-redraw-art { border-left: 0; border-top: 1px solid var(--line); } }

/* the 14-day ring (shared with /redraw) */
.ring14 .day { fill: none; stroke: var(--line-2); stroke-width: 1.5; }
.ring14 .day.on { fill: var(--red); stroke: var(--red); }
.ring14 .arc { fill: none; stroke: var(--red); stroke-width: 14; stroke-linecap: round; }
.ring14 .num { fill: var(--ink); font: 700 64px var(--sans); letter-spacing: -0.04em; }
.ring14 .lbl { fill: var(--ink-3); font: 500 10px var(--mono); letter-spacing: .14em; text-transform: uppercase; }

/* Rebuild steps */
.w-steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.w-step { display: flex; flex-direction: column; gap: 10px; padding: 26px 24px; background: var(--sheet); border: 1px solid var(--line-2); }
.w-step.is-lead { border-color: var(--red); }
.w-step .k { font: 500 11.5px var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-3); }
.w-step.is-lead .k { color: var(--red-ink); }
.w-step h3 { font-size: 26px; letter-spacing: -0.02em; }
.w-step p { color: var(--ink-2); font-size: 15.5px; flex-grow: 1; }
.w-step .m { padding-top: 12px; border-top: 1px solid var(--line); font: 500 13px var(--mono); }
@media (max-width: 860px) { .w-steps { grid-template-columns: 1fr; } }

/* coming soon line */
.w-soon { display: flex; flex-wrap: wrap; gap: 10px 28px; align-items: baseline; padding: 26px var(--gutter); border-bottom: 1px solid var(--line); color: var(--ink-3); font-size: 15px; }
.w-soon > span:first-child { font: 500 11.5px var(--mono); letter-spacing: .12em; text-transform: uppercase; }
.w-soon b { color: var(--ink); font-weight: 600; }

/* ---------- /redraw ---------- */
.rd-hero { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr); gap: clamp(28px, 5vw, 80px); align-items: center; padding: clamp(64px, 9vw, 120px) var(--gutter) clamp(56px, 7vw, 96px); border-bottom: 1px solid var(--line); }
.rd-hero h1 { font: 700 clamp(2.6rem, 6vw, 5.6rem)/0.98 var(--sans); letter-spacing: -0.04em; margin-top: 22px; }
.rd-hero h1 span { display: block; color: var(--red-ink); }
.rd-hero .lede { margin-top: 24px; color: var(--ink-2); font-size: clamp(17px, 1.35vw, 20px); max-width: 50ch; line-height: 1.55; }
.rd-facts { display: grid; grid-template-columns: repeat(4, auto); justify-content: start; margin-top: 30px; border: 1px solid var(--line-2); }
.rd-facts div { padding: 12px 18px; border-right: 1px solid var(--line); }
.rd-facts div:last-child { border-right: 0; }
.rd-facts span { display: block; font: 500 10.5px var(--mono); letter-spacing: .12em; text-transform: uppercase; color: var(--ink-3); }
.rd-facts b { font-weight: 600; font-size: 17px; }
.rd-hero .w-ctas { margin-top: 30px; }
.rd-hero-art svg { width: 100%; max-width: 440px; height: auto; display: block; margin-inline: auto; }
@media (max-width: 900px) { .rd-hero { grid-template-columns: 1fr; } .rd-hero-art { order: -1; } .rd-hero-art svg { max-width: 260px; margin-inline: 0; } }
@media (max-width: 560px) { .rd-facts { grid-template-columns: 1fr 1fr; } .rd-facts div:nth-child(2) { border-right: 0; } .rd-facts div:nth-child(-n+2) { border-bottom: 1px solid var(--line); } }

.rd-three { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border: 1px solid var(--line-2); }
.rd-three > div { padding: clamp(24px, 3vw, 36px); border-right: 1px solid var(--line); display: grid; gap: 12px; align-content: start; }
.rd-three > div:last-child { border-right: 0; }
.rd-three .n { font: 500 11.5px var(--mono); letter-spacing: .1em; color: var(--red-ink); }
.rd-three h3 { font-size: clamp(1.4rem, 2.2vw, 1.9rem); letter-spacing: -0.02em; }
.rd-three p { color: var(--ink-2); }
@media (max-width: 860px) { .rd-three { grid-template-columns: 1fr; } .rd-three > div { border-right: 0; border-bottom: 1px solid var(--line); } .rd-three > div:last-child { border-bottom: 0; } }

.rd-inc { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.rd-inc article { display: grid; gap: 10px; align-content: start; padding: 26px 24px 28px; background: var(--sheet); border: 1px solid var(--line-2); }
.rd-inc .k { font: 500 11px var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--ink-3); }
.rd-inc h3 { font-size: 22px; letter-spacing: -0.015em; }
.rd-inc p { color: var(--ink-2); font-size: 15.5px; }
.rd-inc svg { width: 34px; height: 34px; color: var(--red); }
@media (max-width: 1000px) { .rd-inc { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px) { .rd-inc { grid-template-columns: 1fr; } }

.rd-weeks { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.rd-week { border: 1px solid var(--line-2); background: var(--sheet); }
.rd-week header { display: flex; justify-content: space-between; align-items: baseline; padding: 16px 22px; border-bottom: 1px solid var(--line); }
.rd-week header b { font-size: 20px; letter-spacing: -0.01em; }
.rd-week header span { font: 500 11.5px var(--mono); color: var(--ink-3); letter-spacing: .08em; text-transform: uppercase; }
.rd-days { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); border-bottom: 1px solid var(--line); }
.rd-days span { padding: 10px 0; text-align: center; font: 500 11px var(--mono); color: var(--ink-3); border-right: 1px solid var(--line); }
.rd-days span:last-child { border-right: 0; }
.rd-days span.on { color: var(--red-ink); background: var(--red-soft); }
.rd-week ul { list-style: none; margin: 0; padding: 18px 22px 22px; display: grid; gap: 10px; color: var(--ink-2); font-size: 15.5px; }
.rd-week li { display: flex; gap: 10px; }
.rd-week li::before { content: ""; flex: none; width: 10px; height: 10px; margin-top: 7px; border: 1.5px solid var(--red); border-radius: 50%; }
@media (max-width: 860px) { .rd-weeks { grid-template-columns: 1fr; } }

.rd-out { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); gap: clamp(28px, 5vw, 80px); align-items: start; }
.rd-out h2 span { color: var(--red-ink); }
.rd-out-list { border: 1px solid var(--line-2); background: var(--sheet); }
.rd-out-list div { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 14px; padding: 20px 22px; border-bottom: 1px solid var(--line); }
.rd-out-list div:last-child { border-bottom: 0; }
.rd-out-list i { font: 500 12px var(--mono); font-style: normal; color: var(--red-ink); padding-top: 4px; }
.rd-out-list b { display: block; font-size: 18px; font-weight: 600; margin-bottom: 4px; }
.rd-out-list p { color: var(--ink-2); font-size: 15.5px; }
@media (max-width: 860px) { .rd-out { grid-template-columns: 1fr; } }

.rd-quote { padding: clamp(64px, 9vw, 120px) var(--gutter); border-bottom: 1px solid var(--line); text-align: center; }
.rd-quote p { font: 650 clamp(1.8rem, 4vw, 3.4rem)/1.12 var(--sans); letter-spacing: -0.03em; max-width: 22ch; margin: 0 auto; }
.rd-quote p span { color: var(--red-ink); }
.rd-quote small { display: block; margin-top: 22px; font: 500 12px var(--mono); letter-spacing: .12em; text-transform: uppercase; color: var(--ink-3); }

.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
.brief-copy .eyebrow { font: 500 12px/1.2 var(--mono); letter-spacing: .16em; color: var(--red-ink); max-width: none; }

/* ================= Motion and life (v2) ================= */

/* card drawings */
.w-card { position: relative; }
.w-ico { position: absolute; top: 20px; right: 20px; width: 46px; height: 46px; overflow: visible; fill: none; stroke: var(--red); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.w-ico-book .w-flip { transform-origin: 24px 24px; opacity: 0; fill: var(--sheet); }
.w-ico-book .w-line { stroke: var(--ink-3); stroke-width: 1.6; }
.w-ico-shot .w-liquid { fill: var(--red); stroke: none; opacity: .9; transform-origin: 24px 39px; }
.w-ico-shot .w-glint { stroke: var(--ink); stroke-width: 1.6; opacity: .5; }
.w-ico-ring .w-track-c { stroke: var(--line-2); stroke-width: 1.5; }
.w-ico-ring .w-arc { stroke-width: 4.5; stroke-dasharray: .86 .14; stroke-dashoffset: 0; }
.w-ico-ring .w-dot { fill: var(--red); stroke: none; }
.w-ico-plan .w-grid { stroke: var(--line-2); stroke-width: 1; }
.w-ico-plan .w-draw { stroke-width: 2.4; stroke-dasharray: 1; stroke-dashoffset: 0; }
.w-ico.play .w-flip { animation: w-flip 1.1s cubic-bezier(.5, 0, .3, 1) both; }
.w-ico.play .w-liquid { animation: w-pour 1.1s cubic-bezier(.3, 0, .2, 1) both; }
.w-ico.play .w-arc { animation: w-arc 1.2s cubic-bezier(.5, 0, .2, 1) both; }
.w-ico.play .w-dot { animation: w-pop .4s var(--ease) 1.05s both; }
.w-ico.play .w-draw { animation: w-draw 1.2s cubic-bezier(.6, 0, .3, 1) both; }
@keyframes w-flip { 0% { opacity: 1; transform: scaleX(1); } 70% { opacity: 1; } 100% { opacity: 0; transform: scaleX(-1); } }
@keyframes w-pour { 0% { transform: scaleY(0); } 70% { transform: scaleY(1.08); } 100% { transform: scaleY(1); } }
@keyframes w-arc { from { stroke-dashoffset: .86; } to { stroke-dashoffset: 0; } }
@keyframes w-pop { 0% { transform: scale(0); } 60% { transform: scale(1.6); } 100% { transform: scale(1); } }
.w-ico-ring .w-dot { transform-box: fill-box; transform-origin: center; }
@keyframes w-draw { from { stroke-dashoffset: 1; } to { stroke-dashoffset: 0; } }
.w-card b { padding-right: 52px; }

/* the guide walks under the four cards to the one you point at */
.w-walk { position: relative; height: 112px; margin-top: 10px; }
.w-ground { position: absolute; left: 0; right: 0; bottom: 6px; border-bottom: 2px dashed var(--line-2); opacity: .7; }
.w-walker { position: absolute; left: 0; bottom: 6px; width: 64px; transform: translateX(-90px); will-change: transform; }
.w-guy { display: block; width: 64px; height: 96px; overflow: visible; fill: none; stroke: var(--ink); stroke-width: 5; stroke-linecap: round; stroke-linejoin: round; }
.w-guy .w-eye { fill: var(--ink); stroke: none; }
.w-guy .w-smile { stroke-width: 3; }
.w-guy .w-face { transform-origin: 50px 75px; transition: transform .25s var(--ease); }
.w-walker.left .w-face { transform: scaleX(-1); }
.w-guy .w-leg, .w-guy .w-bob { transform-origin: 50px 88px; }
.w-guy .w-arm, .w-guy .w-arm2 { transform-origin: 50px 50px; transition: transform .45s var(--ease); }
.w-guy .w-head { transform-origin: 50px 36px; transition: transform .45s var(--ease); }
.w-walker.walking .w-leg1 { animation: w-step .42s ease-in-out infinite alternate; }
.w-walker.walking .w-leg2 { animation: w-step .42s ease-in-out infinite alternate-reverse; }
.w-walker.walking .w-bob { animation: w-bobble .21s ease-in-out infinite alternate; }
.w-walker.walking .w-arm { transform: rotate(-22deg); }
.w-walker.walking .w-arm2 { transform: rotate(18deg); }
.w-walker.point .w-arm { transform: rotate(-118deg); }
.w-walker.point .w-head { transform: rotate(-12deg); }
@keyframes w-step { from { transform: rotate(-20deg); } to { transform: rotate(20deg); } }
@keyframes w-bobble { from { transform: translateY(0); } to { transform: translateY(-3px); } }
.w-say { position: absolute; bottom: 100%; left: 50%; margin: 0 0 4px; padding: 7px 11px; white-space: nowrap; background: var(--ink); color: var(--paper); font: 500 11.5px/1 var(--mono); letter-spacing: .04em; border-radius: 3px; transform: translateX(-50%) translateY(6px); opacity: 0; transition: opacity .25s, transform .3s var(--ease); pointer-events: none; }
.w-say::after { content: ""; position: absolute; top: 100%; left: 50%; margin-left: -5px; border: 5px solid transparent; border-top-color: var(--ink); }
.w-walker.point .w-say { opacity: 1; transform: translateX(-50%) translateY(0); }
@media (max-width: 1100px) { .w-walk { display: none; } }

/* newsletter: a paper plane takes the address away */
.w-join-wrap { position: relative; max-width: 540px; }
.w-plane { position: absolute; right: -54px; top: 6px; width: 40px; height: 40px; fill: none; stroke: var(--red); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; transition: transform .4s var(--ease); }
.w-join-wrap:focus-within .w-plane { transform: translate(4px, -4px) rotate(-8deg); }
.w-plane.fly { animation: w-fly 1.5s cubic-bezier(.5, 0, .6, 1) forwards; }
@keyframes w-fly { 0% { transform: none; opacity: 1; } 25% { transform: translate(-30px, 18px) rotate(14deg); } 100% { transform: translate(420px, -260px) rotate(-24deg) scale(.6); opacity: 0; } }
@media (max-width: 700px) { .w-plane { right: 6px; top: auto; bottom: 6px; } }
.w-join-done { animation: w-in .5s var(--ease) both; }
@keyframes w-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }

/* Try: three offers, Tequila leads */
.w-try { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); grid-template-rows: auto auto; gap: 16px; }
.w-try .w-tq { grid-row: span 2; }
.w-try .w-offer:not(.w-tq) h3 { font-size: clamp(1.4rem, 2vw, 1.8rem); }
@media (max-width: 860px) { .w-try { grid-template-columns: 1fr; } .w-try .w-tq { grid-row: auto; } }
.w-tq h3 { line-height: 1.12; }
.w-was { position: relative; text-decoration: none; color: var(--ink-3); }
.w-strike { position: absolute; left: -4%; top: 30%; width: 108%; height: 46%; overflow: visible; pointer-events: none; }
.w-strike path { fill: none; stroke: var(--red); stroke-width: 5; stroke-linecap: round; vector-effect: non-scaling-stroke; stroke-dasharray: 1; stroke-dashoffset: 0; }
.w-now { display: inline-block; text-decoration: none; color: var(--red); font: 700 1.4em/.9 'Caveat', var(--sans); letter-spacing: 0; transform: rotate(-4deg); transform-origin: 0 60%; }
.motion-ok .w-tq:not(.in) .w-strike path { stroke-dashoffset: 1; }
.motion-ok .w-tq:not(.in) .w-now { opacity: 0; transform: rotate(-4deg) translateY(.15em); }
.motion-ok .w-tq.in .w-strike path { animation: w-draw .55s cubic-bezier(.6, 0, .3, 1) .4s both; }
.motion-ok .w-tq.in .w-now { animation: w-now .45s var(--ease) .9s both; }
@keyframes w-now { from { opacity: 0; transform: rotate(-4deg) translateY(.15em); } to { opacity: 1; transform: rotate(-4deg); } }

/* the 14-day ring fills one day at a time */
.ring14 .day { transition: fill .3s, stroke .3s, transform .35s var(--ease); transform-box: fill-box; transform-origin: center; }
.ring14.wait .day { fill: none; stroke: var(--line-2); }
.ring14.wait .day.lit { fill: var(--red); stroke: var(--red); transform: scale(1.35); }
.ring14 .arc { stroke-dasharray: 610 94; transition: stroke-dashoffset 1.6s cubic-bezier(.4, 0, .2, 1); }
.ring14.wait .arc { stroke-dashoffset: 610; }
.ring14.wait.go .arc { stroke-dashoffset: 0; }
.w-card .k { padding-right: 56px; }
.w-walk { height: 136px; }
.w-walker { width: 76px; }
.w-guy { width: 76px; height: 114px; }
.w-quip { margin-top: auto; padding-top: 18px; border-top: 1px dashed var(--line-2); font: 700 clamp(1.5rem, 2.2vw, 2rem)/1.1 'Caveat', var(--sans); color: var(--ink-2); transform: rotate(-1.5deg); transform-origin: 0 50%; }
.w-quip + .w-ctas { margin-top: 0; }

/* ================= /redraw as a talk (v3) ================= */

/* the ring turns like the logo's open zero */
.ring14 .spin { transform-box: view-box; transform-origin: 170px 170px; }
.motion-ok .ring14.done .spin { animation: rd-spin 28s linear infinite; }
@keyframes rd-spin { to { transform: rotate(360deg); } }

/* talk progress: a thin line under the nav that names the chapter */
.rd-talk { position: fixed; left: 0; right: 0; top: var(--nav-h); z-index: 40; height: 2px; pointer-events: none; }
.rd-talk-bar { position: absolute; inset: 0 auto 0 0; width: 100%; background: var(--red); transform-origin: 0 50%; transform: scaleX(0); }
.rd-talk-label { position: absolute; right: var(--gutter); top: 8px; padding: 5px 9px; background: var(--paper); border: 1px solid var(--line); font: 500 10.5px/1 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--ink-3); opacity: 0; transition: opacity .3s; white-space: nowrap; }
.rd-talk.on .rd-talk-label { opacity: 1; }
.rd-talk-label b { color: var(--red-ink); font-weight: 500; margin-right: 8px; }
@media (max-width: 600px) { .rd-talk-label { display: none; } }

/* hero: someone arrives with a suitcase */
.rd-hero { position: relative; padding-bottom: clamp(150px, 14vw, 190px); }
.rd-walk { position: absolute; left: var(--gutter); right: var(--gutter); bottom: 18px; height: 128px; }
.rd-walker { position: absolute; left: 0; bottom: 6px; width: 96px; transform: translateX(-140px); }
.rd-guy { display: block; width: 96px; height: 111px; overflow: visible; fill: none; stroke: var(--ink); stroke-width: 5; stroke-linecap: round; stroke-linejoin: round; }
.rd-guy .w-eye { fill: var(--ink); stroke: none; }
.rd-guy .w-smile { stroke-width: 3; }
.rd-guy .w-leg, .rd-guy .w-bob { transform-origin: 50px 88px; }
.rd-guy .w-arm, .rd-guy .w-arm2 { transform-origin: 50px 50px; transition: transform .45s var(--ease); }
.rd-guy .w-head { transform-origin: 50px 36px; transition: transform .45s var(--ease); }
.rd-guy .rd-bag { stroke: var(--red); stroke-width: 3.5; transform-origin: 80px 108px; transition: transform .5s var(--ease); }
.rd-guy .rd-bag rect { fill: var(--paper); }
.rd-walker.walking .w-leg1 { animation: w-step .42s ease-in-out infinite alternate; }
.rd-walker.walking .w-leg2 { animation: w-step .42s ease-in-out infinite alternate-reverse; }
.rd-walker.walking .w-bob { animation: w-bobble .21s ease-in-out infinite alternate; }
.rd-walker.walking .w-arm2 { transform: rotate(18deg); }
.rd-walker.walking .rd-bag { animation: rd-swing .42s ease-in-out infinite alternate; }
@keyframes rd-swing { from { transform: rotate(-5deg); } to { transform: rotate(5deg); } }
.rd-walker.arrived .rd-bag { transform: translate(14px, 32px) rotate(0); }
.rd-walker.arrived .rd-wave { animation: rd-wave .5s ease-in-out .3s 4 alternate both; }
.rd-walker.arrived .w-head { transform: rotate(-14deg); }
@keyframes rd-wave { from { transform: rotate(-150deg); } to { transform: rotate(-115deg); } }
.rd-walker .w-say { bottom: calc(100% - 6px); }
.rd-walker.arrived .w-say { opacity: 1; transform: translateX(-50%) translateY(0); transition-delay: .4s; }
.rd-walk .w-ground { bottom: 6px; }
.rd-walker { cursor: pointer; pointer-events: auto; }
html:not(.motion-ok) .rd-walk { display: none; }
html:not(.motion-ok) .rd-hero { padding-bottom: clamp(56px, 7vw, 96px); }

/* chapter 01: the manifesto lights up line by line */
.rd-man { padding-block: clamp(80px, 12vw, 160px); }
.rd-lines { display: grid; gap: clamp(14px, 2vw, 22px); max-width: 30ch; }
.rd-lines p { font: 650 clamp(1.7rem, 3.6vw, 3.2rem)/1.12 var(--sans); letter-spacing: -0.03em; color: var(--ink); transition: color .6s var(--ease); }
.motion-ok .rd-lines p:not(.lit) { color: var(--line-2); }
.rd-lines .rd-turn { color: var(--red-ink); font-size: clamp(2.2rem, 5vw, 4.4rem); }
.motion-ok .rd-lines .rd-turn:not(.lit) { color: var(--line-2); }
.rd-lines .rd-turn.lit { color: var(--red-ink); }

/* chapter 03: the sun crosses the sky as the day goes by */
.rd-day-grid { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); gap: clamp(28px, 5vw, 80px); align-items: start; }
.rd-sky { position: sticky; top: calc(var(--nav-h) + 40px); padding: 26px; border: 1px solid var(--line-2); background: var(--sheet); transition: background-color .8s; }
.rd-sky.night { background: #07070c; }
.rd-sky svg { display: block; width: 100%; height: auto; overflow: visible; }
.rd-arcpath { fill: none; stroke: var(--line-2); stroke-width: 1.5; stroke-dasharray: 3 6; }
.rd-horizon { stroke: var(--ink-3); stroke-width: 1.5; }
.rd-sun { transition: transform .9s var(--ease), opacity .5s; }
.rd-sun circle { fill: var(--red); }
.rd-rays { stroke: var(--red); stroke-width: 2.5; stroke-linecap: round; transform-origin: 0 0; animation: rd-spin 16s linear infinite; }
.rd-moon { opacity: 0; transition: opacity .8s; }
.rd-moon path { fill: var(--ink); }
.rd-z { font: 600 13px var(--mono); fill: var(--ink-3); }
.rd-sky.night .rd-sun { opacity: 0; }
.rd-sky.night .rd-moon { opacity: 1; }
.rd-sky.night .rd-z { animation: rd-z 2.4s ease-in-out infinite; }
.rd-sky.night .rd-z2 { animation-delay: 1.2s; }
@keyframes rd-z { 0% { opacity: 0; transform: translate(0, 6px); } 40% { opacity: 1; } 100% { opacity: 0; transform: translate(6px, -8px); } }
.rd-clock { margin-top: 14px; font: 600 clamp(1.8rem, 3vw, 2.6rem)/1 var(--sans); letter-spacing: -0.03em; font-variant-numeric: tabular-nums; }
.rd-hours { list-style: none; margin: 0; padding: 0; display: grid; }
.rd-hours li { position: relative; padding: 22px 0 22px 30px; border-bottom: 1px solid var(--line); font-size: clamp(17px, 1.4vw, 20px); line-height: 1.5; color: var(--ink-2); transition: color .4s; }
.rd-hours li::before { content: attr(data-clock); display: block; margin-bottom: 4px; font: 500 11.5px var(--mono); letter-spacing: .1em; color: var(--ink-3); }
.rd-hours li::after { content: ""; position: absolute; left: 0; top: 28px; width: 11px; height: 11px; border-radius: 50%; border: 1.5px solid var(--line-2); transition: background-color .3s, border-color .3s, transform .3s var(--ease); }
.rd-hours li b { color: var(--ink); font-weight: 600; }
.motion-ok .rd-hours li:not(.now) { color: var(--ink-3); }
.rd-hours li.now::after { background: var(--red); border-color: var(--red); transform: scale(1.25); }
.rd-hours li.now::before { color: var(--red-ink); }
@media (max-width: 860px) {
  .rd-day-grid { grid-template-columns: 1fr; gap: 0; }
  .rd-sky { top: var(--nav-h); z-index: 5; display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 14px; padding: 12px 16px; border-left: 0; border-right: 0; margin-inline: calc(var(--gutter) * -1); }
  .rd-sky svg { max-height: 90px; }
  .rd-clock { margin: 0; font-size: 1.5rem; }
}

/* chapter 05: week cells fill in */
.motion-ok .rd-days:not(.go) span.on { color: var(--ink-3); background: transparent; }
.rd-days span { transition: background-color .3s, color .3s; }

/* chapter 06: pack light */
.rd-pack-grid { display: grid; grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); gap: clamp(28px, 5vw, 80px); align-items: start; }
@media (max-width: 860px) { .rd-pack-grid { grid-template-columns: 1fr; } }
.rd-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
.rd-list li { border-bottom: 1px solid var(--line); }
.rd-list button { display: flex; align-items: center; gap: 16px; width: 100%; padding: 16px 4px; background: none; border: 0; color: var(--ink); font: 500 clamp(18px, 1.6vw, 22px)/1.3 var(--sans); text-align: left; cursor: pointer; }
.rd-list button i { position: relative; flex: none; width: 26px; height: 26px; border: 1.5px solid var(--line-2); border-radius: 4px; }
.rd-list button i::after { content: "✓"; position: absolute; left: 3px; top: -10px; font: 700 34px/1 'Caveat', var(--sans); color: var(--red); transform: scale(1) rotate(-8deg); transition: transform .35s cubic-bezier(.3, 1.6, .5, 1), opacity .2s; }
.rd-list button[aria-pressed="false"] i::after { opacity: 0; transform: scale(.3) rotate(-30deg); }
.rd-list button:hover i { border-color: var(--red); }
.rd-leave span { position: relative; display: inline-block; margin: 16px 4px 16px 46px; font: 500 clamp(18px, 1.6vw, 22px)/1.3 var(--sans); color: var(--ink-3); }
.rd-leave del { text-decoration: none; }
.rd-leave .w-strike { position: absolute; left: -3%; top: 30%; width: 106%; height: 46%; overflow: visible; }
.motion-ok .rd-leave:not(.go) .w-strike path { stroke-dashoffset: 1; }
.motion-ok .rd-leave.go .w-strike path { animation: w-draw .5s cubic-bezier(.6, 0, .3, 1) both; }
.rd-rest { padding: 22px 4px 0; border-bottom: 0 !important; font: 700 clamp(1.7rem, 2.6vw, 2.3rem)/1 'Caveat', var(--sans); color: var(--red-ink); transform: rotate(-1.5deg); transform-origin: 0 50%; }
.motion-ok .rd-rest:not(.go) { opacity: 0; }
.rd-rest.go { animation: w-in .5s var(--ease) both; }

/* the question: a postcard from day 14 */
.rd-post { padding: clamp(72px, 10vw, 128px) var(--gutter); border-bottom: 1px solid var(--line); display: grid; justify-items: center; gap: 18px; perspective: 1400px; }
.rd-card { position: relative; width: min(100%, 640px); aspect-ratio: 3 / 2; padding: 0; border: 0; background: none; cursor: pointer; transform-style: preserve-3d; transition: transform 1s cubic-bezier(.5, 0, .2, 1); transform: rotate(-2deg); }
.rd-card.flip { transform: rotate(1.5deg) rotateY(180deg); }
.rd-face { position: absolute; inset: 0; display: grid; backface-visibility: hidden; -webkit-backface-visibility: hidden; border: 1px solid var(--line-2); box-shadow: 0 30px 60px -30px rgba(0, 0, 0, .8); }
.rd-front { place-content: center; justify-items: center; gap: 4px; background:
  radial-gradient(120% 90% at 50% 120%, rgba(252, 92, 62, .35), transparent 60%),
  linear-gradient(var(--grid-major) 1px, transparent 1px) 0 0 / 32px 32px,
  linear-gradient(90deg, var(--grid-major) 1px, transparent 1px) 0 0 / 32px 32px, #151515; }
.rd-greet { font: 700 clamp(1.6rem, 4vw, 2.6rem)/1 'Caveat', var(--sans); color: var(--ink-2); transform: rotate(-4deg); }
.rd-city { font: 700 clamp(3rem, 10vw, 6.4rem)/.9 var(--sans); letter-spacing: -0.04em; color: transparent; -webkit-text-stroke: 2px var(--red); }
.rd-sub { font: 500 11px var(--mono); letter-spacing: .2em; text-transform: uppercase; color: var(--ink-3); margin-top: 10px; }
.rd-back { transform: rotateY(180deg); background: #f3efe6; color: #1a1a1a; padding: clamp(18px, 4vw, 34px); align-content: center; text-align: left; }
.rd-back::before { content: ""; position: absolute; left: 58%; top: 14%; bottom: 14%; border-left: 1px solid rgba(0, 0, 0, .15); }
.rd-note { max-width: 54%; font: 700 clamp(1.25rem, 3vw, 1.9rem)/1.15 'Caveat', var(--sans); color: #1d1d1d; }
.rd-note em { display: block; margin-top: 10px; font-style: normal; color: #b33a1e; }
.rd-stamp { position: absolute; right: 22px; top: 20px; width: 64px; height: 76px; border: 2px dashed rgba(0, 0, 0, .25); display: grid; place-items: center; }
.rd-stamp svg { width: 44px; height: 44px; fill: none; stroke: #e0522f; stroke-width: 5; stroke-linecap: round; stroke-dasharray: .86 .14; transform: rotate(-62deg); }
.rd-mark { position: absolute; right: 70px; top: 70px; padding: 8px 12px; border: 2px solid rgba(0, 0, 0, .3); border-radius: 50%; font: 600 9.5px var(--mono); letter-spacing: .14em; text-transform: uppercase; color: rgba(0, 0, 0, .45); transform: rotate(-14deg); }
.rd-post-hint { font: 500 11px var(--mono); letter-spacing: .14em; text-transform: uppercase; color: var(--ink-3); }
@media (max-width: 560px) { .rd-note { max-width: 100%; font-size: 1.15rem; } .rd-back::before, .rd-mark { display: none; } .rd-stamp { width: 44px; height: 52px; right: 12px; top: 12px; } .rd-stamp svg { width: 30px; height: 30px; } }
.w-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: -2px; }
.w-chips span { padding: 5px 9px; border: 1px solid var(--line-2); border-radius: 999px; font: 500 11px/1 var(--mono); letter-spacing: .04em; color: var(--ink-2); }
.w-card.is-lead .w-chips span { border-color: rgba(252, 92, 62, .45); }
.w-card p:has(+ .w-chips) { flex-grow: 0; }
.w-chips { flex-grow: 1; align-content: flex-start; }
.rd-lines { max-width: none; }
.rd-lines p { max-width: 24ch; }

/* ================= the guide gets some style (v4) ================= */
.w-walker { width: 76px; }
.w-walk { overflow: visible; }
/* props: hidden until their path */
.w-guy .w-book, .w-guy .w-shot, .w-guy .w-hammer, .w-guy .w-party, .w-guy .w-hard, .w-guy .w-bricks rect, .w-guy .w-grin { opacity: 0; transition: opacity .25s; }
.w-guy .w-book path { fill: var(--paper); stroke: var(--red); stroke-width: 2.5; }
.w-guy .w-book .w-page { fill: var(--sheet); transform-box: view-box; transform-origin: 36px 80px; }
.w-guy .w-shot path { fill: var(--paper); stroke: var(--ink); stroke-width: 2.5; }
.w-guy .w-shot .w-tq { fill: var(--red); stroke: none; }
.w-guy .w-shot { transform-box: view-box; transform-origin: 66px 84px; }
.w-guy .w-book { transform-box: view-box; transform-origin: 36px 84px; }
.w-guy .w-handle { stroke: #c9a27a; stroke-width: 4; }
.w-guy .w-hhead { stroke: var(--ink); stroke-width: 8; stroke-linecap: square; }
.w-guy .w-party path { fill: var(--red); stroke: var(--red); stroke-width: 2; }
.w-guy .w-party circle { fill: var(--ink); stroke: none; }
.w-guy .w-party { transform-box: view-box; transform-origin: 50px 14px; transform: rotate(-8deg); }
.w-guy .w-hard path { fill: var(--red); stroke: var(--red); stroke-width: 2; }
.w-guy .w-hard .w-brim { stroke-width: 4; }
.w-guy .w-grin { fill: var(--ink); stroke-width: 2.5; }
.w-guy .w-bricks rect { fill: var(--red-soft); stroke: var(--red); stroke-width: 2.5; transform-box: fill-box; transform-origin: 50% 100%; }

/* the strut */
.w-walker.walking .w-leg1 { animation: w-strut .36s ease-in-out infinite alternate; }
.w-walker.walking .w-leg2 { animation: w-strut .36s ease-in-out infinite alternate-reverse; }
.w-walker.walking .w-bob { animation: w-bounce .18s ease-in-out infinite alternate; }
.w-walker.walking .w-arm { transform: none; animation: w-swing .36s ease-in-out infinite alternate; }
.w-walker.walking .w-arm2 { transform: none; animation: w-swing2 .36s ease-in-out infinite alternate; }
.w-walker.walking .w-head { animation: w-nod .36s ease-in-out infinite alternate; }
@keyframes w-strut { from { transform: rotate(-27deg); } to { transform: rotate(27deg); } }
@keyframes w-bounce { from { transform: translateY(0) rotate(4deg); } to { transform: translateY(-6px) rotate(4deg); } }
@keyframes w-swing { from { transform: rotate(-38deg); } to { transform: rotate(30deg); } }
@keyframes w-swing2 { from { transform: rotate(32deg); } to { transform: rotate(-36deg); } }
@keyframes w-nod { from { transform: rotate(-4deg); } to { transform: rotate(5deg); } }

/* every path gets its own celebration, with a grin */
.w-walker.point .w-smile { opacity: 0; }
.w-walker.point .w-grin { opacity: 1; }

/* Learn: reads, and turns the pages */
.w-walker.point[data-act="learn"] .w-arm { transform: rotate(-20deg); }
.w-walker.point[data-act="learn"] .w-arm2 { transform: rotate(-78deg); }
.w-walker.point[data-act="learn"] .w-book { opacity: 1; transform: rotate(78deg); }
.w-walker.point[data-act="learn"] .w-page { animation: w-turn 1.4s ease-in-out .4s infinite; }
.w-walker.point[data-act="learn"] .w-head { transform: rotate(14deg); }
@keyframes w-turn { 0%, 40% { transform: scaleX(1); } 70%, 100% { transform: scaleX(-1); } }

/* Try: a toast */
.w-walker.point[data-act="try"] .w-arm { transform: rotate(-140deg); animation: w-toast 1.2s ease-in-out .3s infinite; }
.w-walker.point[data-act="try"] .w-shot { opacity: 1; transform: rotate(140deg); }
.w-walker.point[data-act="try"] .w-head { transform: rotate(-10deg); }
@keyframes w-toast { 0%, 100% { transform: rotate(-140deg); } 30% { transform: rotate(-158deg); } 45% { transform: rotate(-136deg); } }

/* Live: party hat, a dance, confetti */
.w-walker.point[data-act="live"] .w-party { opacity: 1; }
.w-walker.point[data-act="live"] .w-bob { animation: w-groove .5s ease-in-out infinite alternate; }
.w-walker.point[data-act="live"] .w-arm { animation: w-up1 .5s ease-in-out infinite alternate; }
.w-walker.point[data-act="live"] .w-arm2 { animation: w-up2 .5s ease-in-out infinite alternate; }
.w-walker.point[data-act="live"] .w-leg1 { animation: w-kick .5s ease-in-out infinite alternate; }
.w-walker.point[data-act="live"] .w-head { animation: w-nod .25s ease-in-out infinite alternate; }
@keyframes w-groove { from { transform: rotate(-9deg) translateY(0); } to { transform: rotate(9deg) translateY(-5px); } }
@keyframes w-up1 { from { transform: rotate(-160deg); } to { transform: rotate(-110deg); } }
@keyframes w-up2 { from { transform: rotate(105deg); } to { transform: rotate(155deg); } }
@keyframes w-kick { from { transform: rotate(0); } to { transform: rotate(-32deg); } }

/* Rebuild: hard hat on, building a wall */
.w-walker.point[data-act="rebuild"] .w-hard, .w-walker.point[data-act="rebuild"] .w-hammer { opacity: 1; }
.w-walker.point[data-act="rebuild"] .w-arm { animation: w-hammer .7s cubic-bezier(.5, 0, .9, .4) infinite; }
.w-walker.point[data-act="rebuild"] .w-head { transform: rotate(10deg); }
.w-walker.point[data-act="rebuild"] .w-bricks rect { opacity: 1; animation: w-brick .35s cubic-bezier(.3, 1.6, .5, 1) both; }
.w-walker.point[data-act="rebuild"] .w-bricks .b2 { animation-delay: .7s; }
.w-walker.point[data-act="rebuild"] .w-bricks .b3 { animation-delay: 1.4s; }
@keyframes w-hammer { 0% { transform: rotate(-150deg); } 70% { transform: rotate(-45deg); } 78% { transform: rotate(-55deg); } 100% { transform: rotate(-150deg); } }
@keyframes w-brick { from { transform: scale(.2); opacity: 0; } to { transform: scale(1); opacity: 1; } }

/* a little shimmy while he waits */
.w-walker.shimmy .w-bob { animation: w-groove .22s ease-in-out 6 alternate; }

/* confetti */
.w-confetti { position: absolute; left: 50%; top: 12px; width: 7px; height: 11px; border-radius: 1px; pointer-events: none; animation: w-pop2 1.6s cubic-bezier(.2, .7, .4, 1) forwards; }
@keyframes w-pop2 {
  0% { transform: translate(0, 0) rotate(0); opacity: 1; }
  45% { transform: translate(calc(var(--dx) * .7), var(--dy)) rotate(calc(var(--r) * .6)); opacity: 1; }
  100% { transform: translate(var(--dx), calc(var(--dy) + 120px)) rotate(var(--r)); opacity: 0; }
}
.w-walker[data-act="live"] .w-say, .w-walker[data-act="rebuild"] .w-say { margin-bottom: 14px; }
.w-walker { cursor: pointer; }
.w-guy .w-party { transform-origin: 50px 11px; }
.w-walker.point[data-act="try"] .w-arm { transform: rotate(-112deg); animation: w-toast2 1.2s ease-in-out .3s infinite; }
.w-walker.point[data-act="try"] .w-shot { transform: rotate(112deg); }
@keyframes w-toast2 { 0%, 100% { transform: rotate(-112deg); } 30% { transform: rotate(-130deg); } 45% { transform: rotate(-108deg); } }

/* back and forth too many times: he turns to you, throws his hands up, and walks off */
.w-guy .w-front { opacity: 0; transition: opacity .2s; }
.w-guy .w-front circle { fill: var(--ink); stroke: none; }
.w-guy .w-front path { stroke-width: 2.5; }
.w-walker.wtf .w-front { opacity: 1; }
.w-walker.wtf .w-eye, .w-walker.wtf .w-smile, .w-walker.wtf .w-grin { opacity: 0; }
.w-walker.wtf .w-head { transform: none; animation: w-shake .7s ease-in-out .45s; }
.w-walker.wtf .w-bob { animation: w-shrug .5s ease-out both; }
.w-walker.wtf .w-arm { animation: w-throw1 .45s cubic-bezier(.3, 1.6, .5, 1) both; }
.w-walker.wtf .w-arm2 { animation: w-throw2 .45s cubic-bezier(.3, 1.6, .5, 1) both; }
@keyframes w-throw1 { from { transform: rotate(0); } to { transform: rotate(-120deg); } }
@keyframes w-throw2 { from { transform: rotate(0); } to { transform: rotate(120deg); } }
@keyframes w-shrug { 0%, 100% { transform: translateY(0); } 40% { transform: translateY(-7px); } }
@keyframes w-shake { 0%, 100% { transform: rotate(0); } 25% { transform: rotate(-9deg); } 75% { transform: rotate(9deg); } }
.w-walker.wtf .w-say, .w-walker.leaving .w-say { opacity: 1; transform: translateX(-50%) translateY(0); margin-bottom: 24px; padding: 9px 15px; border-radius: 999px; font-size: 14px; font-weight: 700; }
.w-walker.wtf .w-say::after, .w-walker.leaving .w-say::after { top: calc(100% + 3px); margin-left: -2px; width: 9px; height: 9px; border: 0; border-radius: 50%; background: var(--ink); }
.w-walker.wtf .w-say::before, .w-walker.leaving .w-say::before { content: ""; position: absolute; top: calc(100% + 15px); left: 50%; margin-left: 3px; width: 5px; height: 5px; border-radius: 50%; background: var(--ink); }
html.w-exit { overflow-x: clip; }

/* postcard v2: a Cleveland skyline on the front, turned over by scrolling */
.rd-card { --flip: 0deg; --tilt: -2deg; transform: rotate(var(--tilt)) rotateY(var(--flip)); transition: transform .12s linear; }
.rd-card.flip { --flip: 180deg; --tilt: 1.5deg; }
.rd-card.tapped { transition: transform .9s cubic-bezier(.5, 0, .2, 1); }
.rd-front { place-content: start center; padding-top: clamp(26px, 7%, 54px); overflow: hidden; background:
  radial-gradient(70% 55% at 42% 100%, rgba(252, 92, 62, .32), transparent 70%),
  linear-gradient(var(--grid-major) 1px, transparent 1px) 0 0 / 32px 32px,
  linear-gradient(90deg, var(--grid-major) 1px, transparent 1px) 0 0 / 32px 32px, #151515; }
.rd-front > span { position: relative; z-index: 1; }
.rd-city { font-size: clamp(2.6rem, 9vw, 5.6rem); }
.rd-skyline { position: absolute; left: 0; right: 0; bottom: 0; width: 100%; height: 50%; overflow: visible; }
.rd-setting { fill: rgba(252, 92, 62, .22); stroke: var(--red); stroke-width: 1.5; stroke-dasharray: 3 5; }
.rd-bld path { fill: #121212; stroke: var(--red); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.rd-bld .rd-thin { fill: none; stroke-width: 1.2; opacity: .8; }
.rd-water { fill: none; stroke: var(--red); stroke-width: 1.4; opacity: .7; }
.rd-w2 { opacity: .4; }
.rd-boat { fill: #121212; stroke: var(--ink-2); stroke-width: 1.5; stroke-linejoin: round; }
.motion-ok .rd-water { animation: rd-tide 6s ease-in-out infinite alternate; }
.motion-ok .rd-w2 { animation-duration: 8s; }
.motion-ok .rd-boat { animation: rd-sail 14s ease-in-out infinite alternate; }
@keyframes rd-tide { from { transform: translateX(0); } to { transform: translateX(-24px); } }
@keyframes rd-sail { from { transform: translate(0, 0) rotate(0); } 50% { transform: translate(-40px, 1px) rotate(-2deg); } to { transform: translate(-70px, 0) rotate(1deg); } }
.rd-stamp svg { stroke-dasharray: .86 .14; }
.rd-hero h1 { font-size: clamp(2.4rem, 5.2vw, 5rem); }
.rd-hero h1 span { margin-top: .08em; }
.rd-value { margin-top: 26px; font: 600 clamp(1.3rem, 2.1vw, 1.9rem)/1.2 var(--sans); letter-spacing: -0.02em; color: var(--ink); max-width: 30ch; }
.rd-hero .rd-value + .lede { margin-top: 12px; }

/* ================= forms that look like forms (v5) ================= */
.transmittal { border: 1px solid var(--line-2); border-radius: 10px; overflow: hidden; background: var(--sheet); box-shadow: 0 30px 60px -40px rgba(0, 0, 0, .9); }
.transmittal .tx-head { align-items: center; justify-content: flex-start; gap: 14px; padding: 20px 22px; border-bottom: 1px solid var(--line); text-transform: none; letter-spacing: 0; font: inherit; }
.transmittal .tx-head svg { flex: none; width: 36px; height: 36px; padding: 7px; border-radius: 50%; background: var(--red-soft); fill: none; stroke: var(--red); stroke-width: 1.8; stroke-linejoin: round; stroke-linecap: round; }
.transmittal .tx-t { display: grid; gap: 2px; }
.transmittal .tx-t b { font: 650 clamp(1.2rem, 1.8vw, 1.45rem)/1.2 var(--sans); color: var(--ink); letter-spacing: -0.01em; }
.transmittal .tx-t small { font: 400 13.5px/1.3 var(--sans); color: var(--ink-3); }
.transmittal .form-fields { gap: 16px 14px; padding: 22px; }
.transmittal .cell { padding: 0; border: 0 !important; gap: 8px; }
.transmittal .cell:focus-within { background: none; }
.transmittal .cell > span { font: 500 13.5px/1.2 var(--sans); letter-spacing: 0; text-transform: none; color: var(--ink-2); }
.transmittal .cell .req { font-style: normal; color: var(--red-ink); }
.transmittal .cell input, .transmittal .cell select, .transmittal .cell textarea { height: 50px; padding: 0 14px; background: var(--paper); border: 1px solid var(--line-2); border-radius: 8px; transition: border-color .2s, box-shadow .2s, background-color .2s; }
.transmittal .cell textarea { height: auto; min-height: 120px; padding: 12px 14px; line-height: 1.5; }
.transmittal .cell select { background-color: var(--paper); background-position: calc(100% - 20px) 55%, calc(100% - 14px) 55%; padding-right: 36px; }
.transmittal .cell input:hover, .transmittal .cell select:hover, .transmittal .cell textarea:hover { border-color: var(--ink-3); }
.transmittal .cell input:focus, .transmittal .cell select:focus, .transmittal .cell textarea:focus { border-color: var(--red); box-shadow: 0 0 0 3px rgba(252, 92, 62, .22); background: #0d0d0d; }
.transmittal .cell:focus-within > span { color: var(--ink); }
.transmittal .cell.bad input, .transmittal .cell.bad select, .transmittal .cell.bad textarea { border-color: var(--red); }
.transmittal .form-error { padding: 0; border: 0; }
.transmittal .tx-foot { padding: 4px 0 0; flex-wrap: wrap; }
.transmittal .tx-foot .btn { height: 52px; padding: 0 28px; font-size: 15px; }
@media (max-width: 640px) { .transmittal .form-fields { grid-template-columns: 1fr; padding: 18px; } .transmittal .tx-foot .btn { width: 100%; justify-content: center; } }

/* the paper plane flies a loop up the page as you scroll */
.w-plane { z-index: 3; transition: none; transform-origin: 50% 50%; }
.w-join-wrap:focus-within .w-plane { transform: none; }
.w-trail { position: absolute; right: -54px; top: 6px; width: 1px; height: 1px; overflow: visible; pointer-events: none; z-index: 2; }
.w-trail path { fill: none; stroke: var(--red); stroke-width: 1.6; stroke-dasharray: 3 6; stroke-linecap: round; opacity: .7; }
@media (max-width: 700px) { .w-trail { right: 6px; top: auto; bottom: 6px; } }
.w-trail { right: -34px; top: 26px; }
@media (max-width: 700px) { .w-trail { right: 26px; bottom: 26px; top: auto; } }
.w-plane.gone { transition: transform 1.2s cubic-bezier(.5, 0, .6, 1), opacity 1.2s; opacity: 0; }
