Round 2 · 2026-10-13 · lens: visual and brand · prototypes at prototype/ · judged against the owner's words, brief/design-direction.md (sections 2, 3.2, 3.3, 4, 5, 6, 8, 9) and the seven decisions already taken.
Scores (0-100): index.html 58 · mind.html 40 · standard.html 60 · shared.css (token system) 64.
The short version: the realm is right and the type system is close; the head is not yet a mannequin, the fork does not carry the decided copy, the mind's presence shows through its own answers, the retired ember still colours every hover, and the interactive route is broken at phone width by a single layout rule. Everything below is ranked and comes with a fix.
prototype/shots/ (both widths), then the code of index.html, mind.html, standard.html, shared.css, data/ets.sample.json, and the design direction in full.--accent: #C1115A now live in shared.css) with headless Chrome for Testing via Playwright, GPU on (--ignore-gpu-blocklist --use-angle=metal), against a static server on 127.0.0.1:8701. Without server.py, mind.html and standard.html run their offline demo (data-mode="offline"), which is enough for layout and composition. No live model calls were made.c2v-, all read as pixels before judging; a stdlib PNG probe measured luminance in named regions of the opening (numbers in section 2 and 7). DOM measurements (rects, computed fonts, scroll widths) were taken in the same run.maxPixelRatio: 1), 390x844 at DPR 2 with mobile emulation, plus 390x844 without emulation for mind.html (see finding M1 for why both are needed).Confirmed in shape, refuted in tone. The pixels (c2v-opening-1440x900.png, c2v-opening-head-1440.png):
| Region (1440x900) | min L | p1 | mean | below #8C8C88 (L 140) |
|---|---|---|---|---|
| Whole head | 117 | 135 | 208 | 1.5 % |
| Left socket | 137 | 142 | 179 | 0.3 % |
| Right socket | 117 | 119 | 165 | 14.1 % |
| Band under the cut (y 430-495) | 146 | 158 | 217 | 0 % |
| Dark column runs under the cut (L < 120) | 0 |
So nothing under the cut is dark: the streaks are mid-grey fog (L 146 and up) and there are no dark columns. The right socket does dip below the direction's deepest-socket floor (#8C8C88) because the key light comes from the upper left and the fill is weak; the left socket does not. The head reads as a skull for reasons of shape, not darkness:
sdHeadLocal the socket ellipsoid is 0.20 wide and 0.10 tall at y 0.05, with the cut plane at y 0 and the dissolve band running from y -0.15 to +0.12. The lower half of each orbit therefore sits inside the fade, so the hollows read as open cavities that continue downward, which is exactly a skull's orbit and not a mannequin's shallow dish.bridgeLo) centred at y -0.04, below the cut. It is the lowest point of the geometry, so a single central column descends below the socket line into the fog: that is the "tooth".albedo 0.80/0.78/0.76, warm rims), which pushes it toward bone.Fix directions are in finding O1.
Confirmed, at both widths, with the mechanism. #head lives in the fixed #realm (z-index 0) behind the content; the thread (z-index 2) scrolls over it; receded turns drop to opacity 0.74 / 0.40 / 0.18, so the egg shows through whatever older answer sits over it. At 1440 after two turns and the natural scroll position (c2v-mind-after2-1440x900.png) it shows through the Jeffrey Banks card; scrolled so the receded turn is under it (c2v-mind-after2-receded-1440x900.png, c2v-mind-head-overlap-1440.png) it sits behind the caption text; on the phone (c2v-mind-after2-390x844-noemu.png) it shows through the Carlos Ayala card. Fix in finding M2.
Confirmed. Live text at 1440 and 390 (measured from the DOM, identical in markup and in CONFIG):
| Element | Prototype | Decided (direction 3.2) |
|---|---|---|
| Eyebrow | // 01 and // 02 inside each door |
// two ways in above both |
| Door A label | ENTER THE SITE (Unbounded 800, caps) |
Open the map (h2, weight 400) |
| Door A explainer | The familiar way: pages, agenda, people. (mono 12 px) |
Everything laid out: agenda, lineup, venue, tickets. (body face) |
| Door B label | ASK THE MIND |
Ask the mind |
| Door B explainer | Say what you need. Only that appears. |
Say what you came for. Only that appears. |
| Under both | // Both doors open the same summit. Switch any time. · tab to move · enter to open |
// you can switch any time. |
| Corner tags | none | [ browse ] / [ ask ] on hover and focus |
| Accessible names | none (aria-label null) |
the two link names in 3.2 |
/ key |
nothing happens (URL unchanged after the press) | opens door B with the composer focused |
| Typing a character | nothing happens | opens door B with that character in the composer |
Tab order is already map then mind. Fix with exact strings in finding O2.
ETS27 at 800 against FREE YOUR MIND at 200 with wide tracking is the weight-extremes idea from 6.2 made visible. The // corner tags frame the scene without a nav.Ask me about ETS27. at Unbounded 200/40 px is the right register; captions in Unbounded 300 above components, components arriving crisp from blur, // 8 speakers · sample lineup markers and // source: lines are the direction's grammar (decision 7 is met on markers; see M3 on escape links).jump there landing on the merged component.TLOY badges, the jump there link and the sample-note slashes are now raspberry (rgb(193, 17, 90) measured).Severity: blocker (ship-stopping or breaks a decision in a way visitors will hit) · major (brand or direction miss) · minor (polish) · nit.
O1 · major · The head reads as a skull: sockets, bridge, cheekbone, streaky dissolve, putty tone.
Evidence: section 2 (a); c2v-opening-head-1440.png.
Fix, SDF and shading directions (head units; all in the fragment shader of index.html):
- Sockets (line 395-396): move up and shrink to a shallow dish. q - vec3(0.27, 0.17, 0.70), radii vec3(0.13, 0.065, 0.07), ssub(..., 0.09). The orbit bottom then sits at y 0.105, above the fade.
- Bridge (line 392-394): delete bridgeLo, or centre it at y 0.08 with radius y 0.09, so nothing descends below the socket line as a lone column.
- Brow (line 390-391): vec3(0.0, 0.26, 0.72), radii vec3(0.44, 0.11, 0.10), smin k 0.26: a gentle ridge, not a shelf.
- Temples (line 397-398): q - vec3(0.92, 0.30, 0.22), radii vec3(0.14, 0.30, 0.38), ssub k 0.34, and with the sockets smaller the cheekbone flare disappears.
- Dissolve (headAlpha, lines 467-472): noise amplitudes 0.22 -> 0.05 and 0.07 -> 0.015, nf frequency vec3(3.1, 1.3, 3.1) -> vec3(1.4, 0.8, 1.4), band smoothstep(CUT_Y - 0.26, CUT_Y, y); and before compositing, fog the colour as well as the alpha: hc = mix(CLOUD_LIT, hc, ha) so the fringe can only ever be cloud-white.
- Shading (shadeHead, lines 446-466): albedo vec3(0.90, 0.895, 0.885); AO 1.0 - 0.95 * occ; fill weight 0.24 -> 0.34 (lifts the right socket); rim colours vec3(1.0, 0.96, 0.92) and vec3(1.0, 0.97, 0.94) instead of the orange pair; floor hc = max(hc, vec3(0.55)) (= #8C8C88, the direction's deepest socket). Keep the key at upper left; keep no specular beyond the 0.06 sheen.
- Verify by re-running the luminance probe: target right-socket p1 above 140 and no column runs under the cut at threshold 150.
O2 · major · Fork copy, structure and keyboard behaviour do not follow decision 1.
Evidence: section 2 (c); c2v-opening-hover-mind-1440.png.
Fix, exact strings (markup and CONFIG.doors / CONFIG.copy):
- Replace the two door__index spans with one eyebrow above .fork: // two ways in (mono-m, --muted-strong).
- Door A: label Open the map; explainer Everything laid out: agenda, lineup, venue, tickets.; corner tag [ browse ]; aria-label="Open the map: the full site with pages and navigation".
- Door B: label Ask the mind; explainer Say what you came for. Only that appears.; corner tag [ ask ]; aria-label="Ask the mind: a conversational guide that shows only what you ask for".
- Hint: // you can switch any time. (drop the key legend; keyboard users already have focus rings).
- .door__label: font-weight:400; text-transform:none; font-size:clamp(1.25rem, 1rem + 1vw, 1.75rem). .door__explainer: font-family:var(--font-display); font-weight:300; font-size:15px; color:var(--muted-strong).
- Corner tag: .door__tag{position:absolute; right:var(--sp-4); bottom:var(--sp-4); font-size:var(--fs-2xs); letter-spacing:.06em; color:var(--muted); opacity:0; transition:opacity var(--t-fast)} and .door:hover .door__tag, .door:focus-visible .door__tag{opacity:1}; always visible under (hover: none).
- Keys: on document, keydown: / -> preventDefault and location.href='./mind.html?focus=1'; a printable single character with no modifier and no input focused -> location.href='./mind.html?prefill=' + encodeURIComponent(e.key). In mind.html boot: prefill sets #q.value and focuses without asking (the existing ?q= asks immediately, which is not what decision 1 describes). Never intercept Tab, arrows, or modifier combinations.
O3 · major · The lockup lacks the dates (decision 2).
Evidence: live text // AUSTIN, TX and // 2027 at both widths.
Fix: CONFIG.copy.place = '// MAY 3-6, 2027', CONFIG.copy.when = '// AUSTIN, TX', and the same two strings in the static markup (lines 186-187) so the no-JS page carries them too.
O4 · minor · Door hover is a generic card lift, not the direction's 3.3.
Evidence: hover measured as translateY(-3px), drop shadow rgba(11,11,12,.35) 0 18px 40px -24px, a peach 1 px ring rgba(255,217,184,.35), backdrop-filter: blur(14px), fill rgba(255,255,255,.78).
Fix: rest state border:1px solid var(--line); background:transparent; backdrop-filter:none; box-shadow:none; hover and focus-visible border-width:2px; border-color:var(--fg) (compensate with margin:-1px), explainer to var(--fg), corner tag in; door B additionally a 1 px var(--accent) hairline growing along the top edge over 240 ms (::before with transform:scaleX(0->1), transform-origin:left); focus ring 2px solid var(--accent), offset 4 px, square corners. No translate, no shadow, no fill.
O5 · minor · Phone composition: doors side by side and a void between head and lockup.
Evidence: c2v-opening-390x844.png: two 173 px doors, ENTER THE / SITE wraps, hint wraps to three lines; the cut sits at 356 px and the mark starts at 481 px, leaving a 125 px band of empty deck.
Fix: @media (max-width:560px){ .fork{grid-template-columns:1fr; gap:12px} .door{min-height:64px} } (direction 8: map above mind); corner tags always visible on touch; close the void by lifting the lookat, CONFIG.scene.lookYTall -0.62 -> -0.50, and letting the lockup follow the cut at --head-bottom + 1rem instead of the grid's minimum row.
O6 · minor · Hierarchy of the lockup is inverted against the direction (a call for the orchestrator, not a defect).
Evidence: ETS27 108 px at 800, FREE YOUR MIND 33.6 px at 200. Direction 2 and 6.2 make the theme line the display-xl lockup (64-168 px, weight 200, tracking settling from +0.30 em to +0.06 em) with ets27 in the mono line.
Fix if the direction wins: .lockup__theme{font-size:clamp(2.6rem, 6.2vw, 6.5rem); letter-spacing:.3em -> .06em over the reveal}; .lockup__mark down to 40 px or replaced by the ets wordmark + 27. If the owner prefers the block mark, keep it and record the fork in the direction.
O7 · nit · No [ skip ] and no click/key-to-skip during the 5.6 s intro; the ets wordmark asset is absent (text ETS27 stands in everywhere). Storyboard 2 and open question 11.8. Fix: a mono [ skip ] bottom-right from 0.4 s; any pointerdown or key jumps elapsed to settledAtMs.
M1 · blocker · The page overflows horizontally at phone width; answers are cut off and the egg shows through them.
Evidence: at 390 px the document scroll width is 672-726 px (innerWidth 726 under mobile emulation, which is the emulator zooming out; 390 with the document 672 wide and scrollX 16 without emulation). #chips client width 710 at the empty state, 656 after a turn, equal to its scroll width, so the row never scrolls: the .stage grid's auto column grew to the chips' nowrap intrinsic width. c2v-mind-empty-390x844-noemu.png (the opener line and paragraph cut at the right, the composer and chips cut on both sides), c2v-mind-after2-390x844-noemu.png (three of five columns visible, captions truncated mid-word), and the same clipping in the emulated c2v-mind-after2-390x844.png. Round 1's odd 390 shots were this bug, not a capture artefact.
Fix: .stage{grid-template-columns:minmax(0,1fr)}; .thread,.turn,.ui,.composer-wrap,.opener{min-width:0}; .chips{min-width:0; max-width:100%} (the choices component uses the same class, so this covers the chips inside answers too). Re-measure: document.documentElement.scrollWidth === innerWidth at 390.
M2 · major · The head presence shows through rendered content as a grey disc (decision 6).
Evidence: section 2 (b).
Fix (either branch of decision 6):
- Fade out: body:not([data-state="empty"]) #head{opacity:0; transition:opacity 800ms var(--ease-out)} and move the thinking indicator off the head: a breathing dot in the composer prompt (direction 4.7), .composer.busy .prompt::after{content:""; width:.45em; height:.45em; border-radius:50%; background:var(--accent); animation:breathe 1.6s infinite}.
- Or keep it present as the 24 px glyph in the top bar (direction 4.1 and 8): #head{display:none} once live, and .topbar .glyph{width:24px; height:24px} using the silhouette asset from M6.
In both branches give .topbar an opaque bar at phone widths (background:var(--bg) to 70 % then the gradient): in c2v-mind-after2-390x844-noemu.png the brand overprints the receded photos.
M3 · major · Rendered components carry no link to the standard-page equivalent (decision 7).
Evidence: threadLinks empty after two turns at both widths; only the top-right open the full site exists.
Fix: in each renderer append after the source line const esc = el('a','esc','[ open the map: lineup ]'); esc.href = './standard.html#lineup' with the map speaker_grid -> #lineup, session_list -> #agenda, venue_card -> #venue, ticket_cta -> #register, sponsor_wall -> #partners, text_block -> ./standard.html. Style .esc{font-family:var(--font-mono); font-size:var(--fs-2xs); letter-spacing:.06em; color:var(--muted-strong); text-decoration:none; display:inline-block; margin-top:var(--sp-2)}, hover var(--fg).
M4 · major · The retired ember is still the hover and thinking colour (decision 3).
Evidence (code, and the pulse is visible while the mind thinks): line 58 pulse ring rgba(232,160,106,.55) and glow .3; line 176 .cta:hover{background:var(--ets-ember)}.
Fix: line 58 -> 0 0 0 2px rgba(193,17,90,.35), 0 0 34px rgba(193,17,90,.18) (or drop with M2); line 176 -> background:#8F0C43 (signal-ink per 6.3). The .glow halo (line 42) is realm lighting and may stay, but at rgba(255,243,232,.35) rather than rgba(255,217,184,.5): at the current strength it reads as a peach sunrise gradient around the head, which is the one generic note on an otherwise quiet page.
M5 · minor · Copy and notation drift from the direction.
Evidence: chips // who's speaking?, // what is on day 2?, // where is it?, // how do I get tickets? (question marks, four of them); send as a boxed button; open the full site →; // 8 SPEAKERS · SAMPLE LINEUP and // DAY 2 · TUESDAY MAY 4 in caps; the opener paragraph in mono; the composer's 2 px black rule.
Fix: FIRST_CHIPS = ["who's speaking","the agenda","where is it","tickets","partners"] and defaultFollowups without question marks; #send text [ send ] with border:0; .switch text [ open the map ]; drop text-transform:uppercase on .kit-head, .srow .mt, .kv dt, .tier .td, .tier-label; .opener p{font-family:var(--font-display); font-weight:300; font-size:18px; max-width:40ch}; .composer{border-bottom:1px solid var(--line-strong)}.
M6 · minor · The presence is a CSS egg, not a head (and the same egg is the no-WebGL fallback and the dock glyph).
Evidence: #head (and .css-head, .dock-trigger .g) are an ellipse with a radial gradient and a mask: no brow, no sockets, no bridge; c2v-mind-empty-1440x900.png.
Fix: bake one still from the shader (direction 7.3): load index.html?debug=2&still=1, capture the head at 2x, cut out to transparent PNG/AVIF, desktop and phone crops, save under prototype/assets/; use it for .css-head, #head and the standard hero (S2). Draw a 24 px SVG silhouette (cranium, brow, two shallow hollows, bridge) for the dock trigger and the top bar.
M7 · nit · The thread rail, rotating placeholders and [ change entrance ] footer switcher from 4.3 and 3.4 are absent. Fine for a prototype; note for the build.
S1 · major · The nav wordmark is styled as a partner tile (class collision).
Evidence: computed .logo in the nav: border:1px solid rgba(11,11,12,.26); padding:6px 10.2px; font:800 12px Geist Mono, because .logo is declared twice (line 32 for the nav, line 116 for the partner tiles) and the later rule wins. ETS27 sits in a little box at the top left of every shot.
Fix: rename the partner tile class to .partner (line 116 and the two el('div','logo', ...) calls, lines 445 and 465), leaving the nav wordmark at Unbounded 800/900, no border.
S2 · major · The mind is absent from the hero.
Evidence: headInHero: false; the right half of the hero is a peach radial and a bluish wash (.hero::before, line 46-50); c2v-standard-top-1440x900.png.
Fix (direction 5.3 and 8): place the baked still (M6) at the right third, position:absolute; right:6%; bottom:0; width:min(38vw, 520px); mask-image:linear-gradient(180deg,#000 72%,transparent), breathing via the same 7 s scale keyframe; on phones behind the lockup at 60 % with a white gradient under the copy. Delete the peach radial; keep at most a #fafaf9 -> #ffffff vertical gradient.
S3 · major · Mobile menu: REGISTER overprints PARTNERS.
Evidence: c2v-standard-menu-390x844.png; line 203 .nav.open .reg{position:absolute; top:calc(72px + 11rem)} lands on the fifth link.
Fix: put the register link in the sheet's flow: add <li class="sheet-only"><a class="reg" ...>Register</a></li> as the last item and hide the standalone .reg below 720 px (.nav .reg:not(li .reg){display:none}), or give the sheet padding-bottom:5.5rem and the link top:calc(72px + 14.5rem) as a stopgap.
S4 · major · The retired ember colours hover and reveal states (decision 3).
Evidence: #heroReg hover measured rgb(232, 160, 106) (c2v-standard-hover-register-1440.png); line 58 .btn-ink:hover, line 125 footer link hover, line 180 flashlight keyframes (the 5.6 reveal hairline).
Fix: line 58 background:#8F0C43; line 125 color:var(--accent); line 180 rgba(193,17,90,.7) / rgba(193,17,90,0).
S5 · major · Hero stat numerals render at 16 px because the clamp is invalid CSS.
Evidence: line 63 font-size:clamp(2rem,1.4rem+2vw,3.4rem): + without surrounding spaces is not valid calc syntax, the declaration is dropped, computed font 900 16px. In the shots the 4 / 40 / 70 / 39 are small bold numbers over their labels instead of the direction's display-l numerals.
Fix: font-size:clamp(3rem, 2rem + 4vw, 6rem) (direction 5.3: this strip is where the 900 weight lives).
S6 · minor · Frosted nav smears photo tops through the bar.
Evidence: c2v-standard-lineup-1440x900.png, c2v-standard-agenda-1440x900.png: blurred dark smudges above the links. Lines 28-29: background:rgba(250,248,244,.86); backdrop-filter:blur(12px).
Fix: background:var(--bg); remove both backdrop-filter lines; keep the hairline on .scrolled (direction 5.2).
S7 · minor · Type weights and notation: headings at 800, eyebrows in caps, day tabs capitalised.
Evidence: h2.sec computed 800 40px; .eyebrow uppercase; tabs // Mon 3; tier labels, meta lines, .kv dt, .fact .l all uppercase mono.
Fix: h2.sec{font-weight:400} (6.2: h2 400, h3 500, 900 reserved for 27 and numerals); strip text-transform:uppercase from every mono element except .nav a.link and .reg; tab = el('button','daytab', d.weekday.slice(0,3).toLowerCase() + ' ' + ...); merge bar (line 509) -> // showing 8 speakers · sample · with the button text [ clear ]; close -> [ close ].
S8 · minor · Boxes with fills where the direction wants hairlines and whitespace; ticket tiers hard to tell apart.
Evidence: c2v-standard-venue-1440x900.png, c2v-standard-tickets-1440x900.png: .card and .tcol carry background:var(--surface); two Government & Utility and two Industry columns differ only in a 11 px mono phase line; incl. fees wraps under each price.
Fix: .card,.tcol{background:transparent}; title ${t.name} · ${t.phase === 1 ? 'early' : 'standard'}; .tcol .tp small{display:block} so incl. fees is a deliberate second line; consider a single hairline table (tier rows, two price columns) instead of four cards.
S9 · minor · The merged speaker grid is inserted above the full lineup rather than filtering it.
Evidence: c2v-standard-dock-1440x900.png: // 8 SPEAKERS · SAMPLE grid, then the 77-card lineup below it.
Fix (5.6 rule 1): when the section holds a list, hide non-matching .sc cards ([hidden]) and show the answer bar; [ clear ] restores. Materialize a new grid only when nothing on the page matches.
S10 · nit · Double hairline under the sticky nav at section tops on phones; day chips wrap to two rows at 390; the countdown line wraps. scroll-margin-top:73px on sections so the section rule tucks under the nav rule; .daytabs{flex-wrap:nowrap; overflow-x:auto}; let the countdown drop to Free Your Mind below 400 px.
T1 · minor · Temperature and hairline weight drift from 6.3.
Evidence: page background #faf8f4 (cream) on mind.html and standard.html, --line: rgba(11,11,12,.26) (about #bcbcbc on white, twice as dark as the direction's #E2E2DF), peach radials on two pages. Together they push the realm toward warm linen.
Fix: --bg:#ffffff; --ets-warm-white:#fafaf9; --ets-cloud:#f3f3f1; --ets-mist:#ebebe8; --line:#e2e2df; --line-strong:#0b0b0c; --muted:#8a8a86; --muted-strong:#6f6f6b.
T2 · minor · Heading default weight and tag casing.
Evidence: h1,h2,h3,h4{font-weight:800}; .tag{text-transform:uppercase}.
Fix: h1{font-weight:300} h2{font-weight:400} h3{font-weight:500} with the mark and numerals opting into 800/900 explicitly; .tag lowercase by default with a .tag--caps modifier for the decided lockup line (// MAY 3-6, 2027 // AUSTIN, TX stays as decided).
T3 · nit · Lingering tokens. --ets-signal: #1b4bd6 (a blue the direction rejected; unused) and --ets-ember (referenced only by the violations above; the shader hardcodes its own rim colours). Delete both; if a realm sun colour needs a name, --realm-sun.
D1 · minor · Research notes rendered as visitor copy on the venue.
Evidence: venue.note ("The live site shows only 'Austin, Tx'. Eventbrite lists the location name 'Austin' with a street pin; treat that pin as unconfirmed.") and venue.getting_there.guidance ("Venue not announced. The ETS Sustainability Promise page encourages ...") appear verbatim in the venue cards (c2v-standard-venue-1440x900.png) and in the mind's venue_card.
Fix: move those sentences under provenance and write visitor copy: note: "Venue to be announced. Austin, Texas, May 3-6, 2027.", guidance: "Hotel block and travel details will be announced with the venue." Keep placeholder: true.
| Page | Score | Why |
|---|---|---|
index.html |
58 | The realm, light and lockup pairing are strong (would be 75+ alone); the head, the brand's one object, reads as a skull; the fork ignores decision 1; the dates are missing; phone composition stacks wrong. |
mind.html |
40 | Right voice and grammar on desktop; a one-rule layout bug makes the phone experience unusable; the presence shows through content; no escape links; ember still on thinking and hover. |
standard.html |
60 | Clean, indexable bones and a good agenda; but no mind in the hero, the wordmark boxed by a class collision, a broken mobile menu, invalid stat sizing, ember hovers, and the frosted nav. |
shared.css |
64 | Sane token set and motion curves; palette runs cream, hairlines heavy, headings default heavy, tags caps, and two retired tokens linger. |
prototype/shots/, prefix c2v-)Opening: c2v-opening-1440x900.png, c2v-opening-head-1440.png (clip of the head), c2v-opening-hover-mind-1440.png (door B hover), c2v-opening-390x844.png.
Mind, 1440: c2v-mind-empty-1440x900.png, c2v-mind-after1-1440x900.png, c2v-mind-after2-1440x900.png, c2v-mind-after2-receded-1440x900.png, c2v-mind-head-overlap-1440.png.
Mind, 390 (emulated): c2v-mind-empty-390x844.png, c2v-mind-after1-390x844.png, c2v-mind-after2-390x844.png, c2v-mind-after2-receded-390x844.png. Mind, 390 (no emulation, scale 1): c2v-mind-empty-390x844-noemu.png, c2v-mind-after2-390x844-noemu.png.
Standard, 1440: c2v-standard-top-1440x900.png, c2v-standard-hover-register-1440.png, c2v-standard-lineup-1440x900.png, c2v-standard-agenda-1440x900.png, c2v-standard-venue-1440x900.png, c2v-standard-tickets-1440x900.png, c2v-standard-footer-1440x900.png, c2v-standard-dock-1440x900.png.
Standard, 390: c2v-standard-top-390x844.png, c2v-standard-lineup-390x844.png, c2v-standard-agenda-390x844.png, c2v-standard-footer-390x844.png, c2v-standard-menu-390x844.png, c2v-standard-dock-390x844.png.
Round-1 shots were left untouched.
800 108px; theme 200 33.6px; door labels 800 19.2px (uppercase in content); explainers 12px Geist Mono; --accent #C1115A; body background rgb(255,255,255); 102 fps at quality 1. At 390: head bottom 356 px, lockup at 481 px, doors 173 px wide, quality 0.6, 120 fps.#head 135x143 at (652, 72), opacity 0.92, behind content; receded turn opacity 0.74 (step 1); caption 300 20.8px Unbounded; composer rule 2px solid rgba(11,11,12,.88). At 390: document 672-726 px wide against a 390 px viewport (M1).rgba(250,248,244,.86) + blur(12px); .logo boxed (S1); h2 800 40px; .fact .n 900 16px (S5); #heroReg:hover rgb(232,160,106) (S4); dock 440 px wide; merge bar text the mind pulled speakers here.