:root{color-scheme:dark;font-family:Arial,Helvetica,sans-serif;background:#080808;color:#eeece5}*{box-sizing:border-box}body{margin:0}button,input,textarea{font:inherit}button,a,input,textarea{touch-action:manipulation}button,a{color:inherit}button{cursor:pointer;background:transparent;border:1px solid #444;border-radius:30px;padding:12px 20px}button:disabled{opacity:.45;cursor:wait}a{text-decoration:none}a:hover{text-decoration:underline}[hidden]{display:none!important}:focus-visible{outline:2px dotted #eee;outline-offset:5px}header,footer{display:flex;justify-content:space-between;gap:24px;padding:26px 5vw;align-items:center}header>a:last-child,footer{font-size:12px;color:#aaa}.logo{font-size:30px;letter-spacing:-2px;font-weight:800;color:#eee}main{max-width:1200px;margin:auto;padding:0 5vw}.invitation{text-align:center;padding:42px 0 30px}.eyebrow{font:11px monospace;letter-spacing:.08em;color:#999}h1{font-size:clamp(34px,5vw,66px);font-weight:400;letter-spacing:-.055em;line-height:1.04;margin:24px 0}.intro{font-size:16px;color:#bbb;line-height:1.6;margin:20px auto 28px}.primary{background:#eeece5;color:#111;border-color:#eeece5}.invitation #status{font-size:12px;min-height:17px;color:#999}.wall-section{border-top:1px solid #292929;padding:22px 0 30px;min-height:220px}.wall-heading{display:flex;justify-content:space-between;gap:15px;font-size:12px;color:#888}#wall{display:flex;justify-content:center;flex-wrap:wrap;gap:30px 24px;padding:35px 0 10px}#empty{text-align:center;color:#666;font-size:15px;padding:24px}.stranger{border:0;border-radius:0;padding:0;width:100px;background:transparent;display:flex;align-items:center;flex-direction:column;gap:9px}.body-wrap{width:82px;height:90px;outline:1px dotted #888;outline-offset:4px;border-radius:48% 52% 45% 55%;animation:float 6s ease-in-out infinite;animation-delay:var(--delay,0s)}.stranger-name{font-size:12px;max-width:110px;overflow-wrap:anywhere}.stranger.mine .stranger-name:after{content:' · you';color:#888}.note-indicator{font-size:10px;color:#999}.bio-creature{display:block;width:100%;height:100%;position:relative;pointer-events:none}.bio-body{display:block;position:absolute;inset:12% 6%;background:#eeece5;border-radius:var(--blob-a,45%);animation:morph var(--blob-duration,7s) ease-in-out infinite;animation-delay:var(--blob-delay,0s)}.bio-eyes{position:absolute;left:32%;right:30%;top:40%;height:13%;display:flex;justify-content:space-between}.bio-eye{width:15%;height:100%;background:#111;border-radius:50%}.bio-mouth,.bio-cheeky{display:none}.stranger:hover .bio-body{filter:brightness(1.2)}@keyframes morph{0%,100%{border-radius:var(--blob-a,45%);transform:rotate(-3deg)}50%{border-radius:var(--blob-b,55%);transform:rotate(3deg)}}@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}dialog{width:min(440px,calc(100% - 28px));max-height:90svh;overflow:auto;background:#141414;color:#eeece5;border:1px solid #444;border-radius:24px;padding:28px}dialog::backdrop{background:#000b;backdrop-filter:blur(6px)}h2{font-size:25px;font-weight:400;letter-spacing:-.03em}.close{position:absolute;right:12px;top:10px;padding:5px 10px;border:0;font-size:25px}#preview,#note-avatar{width:65px;height:70px;margin:0 auto}label{display:block;font-size:13px;margin:18px 0 8px}label span{color:#888;font-size:11px;margin-left:8px}input:not([type=radio]),textarea{width:100%;padding:12px;background:#080808;border:1px solid #444;border-radius:9px;color:inherit}textarea{resize:vertical}fieldset{border:0;padding:0;margin:20px 0}legend{font-size:12px;color:#aaa}.choice{display:flex;align-items:center;gap:8px;margin:12px 0}.fine{font-size:11px;line-height:1.6;color:#999}form>.primary{width:100%;margin-top:8px}#remove{font-size:12px;width:100%;margin-top:10px}#form-status{font-size:12px;color:#bbb}#note-text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.6}footer{border-top:1px solid #222;line-height:1.6}@media(max-width:600px){header,footer{padding:20px}.invitation{padding-top:24px}main{padding:0 24px}.intro{font-size:14px}.desktop{display:none}.wall-heading{font-size:10px}footer{align-items:flex-start}.stranger{width:80px}.body-wrap{width:65px;height:74px}}@media(prefers-reduced-motion:reduce){*{animation:none!important}}

#join{display:inline-flex;align-items:center;gap:12px;padding:9px 22px 9px 12px}#join>.bio-creature{width:38px;height:40px}#join .bio-body{background:#111}#join .bio-eye{background:#eeece5}

.landing-story{max-width:670px;margin:24px auto 30px;color:#aaa;font-size:16px;line-height:1.65}.landing-story p{margin:22px 0}.landing-story .lead{font-size:clamp(21px,2.6vw,28px);line-height:1.4;color:#eeece5;letter-spacing:-.02em}.landing-story .promise,.landing-story .ethos{color:#eeece5}.closing-invitation{font-size:13px;color:#bbb;margin:16px 0 0}@media(max-width:600px){.landing-story{font-size:15px}.landing-story p{margin:20px 0}}

/* Quiet roaming hosts gather behind the central invitation. Saved visitors remain clickable. */
body{isolation:isolate}header,main,footer{position:relative;z-index:2}#ambient-strangers{position:fixed;inset:0;pointer-events:none;z-index:0;overflow:hidden}.ambient-stranger{position:absolute;left:0;top:0;opacity:.55;animation:gather 30s ease-in-out infinite;animation-delay:calc(var(--i) * -2s)}.ambient-stranger .body-wrap{display:block;width:62px;height:70px;outline-color:#555}.ambient-stranger .bio-body{background:#bdbdb7}.invitation{max-width:860px;margin:auto}.landing-story{position:relative}.wall-section{max-width:900px;margin:24px auto 0;border-top:0;background:radial-gradient(ellipse at center,#19191988,transparent 72%);border-radius:50%}#wall{max-width:700px;margin:auto;min-height:160px;align-items:center}.stranger:nth-child(3n+1){transform:translateY(-12px)}.stranger:nth-child(3n+2){transform:translateY(13px)}footer>div{margin:auto;text-align:center}footer p{margin:6px 0}footer p:first-child{color:#eeece5}footer>a{position:absolute;right:5vw;bottom:20px;font-size:10px}@keyframes gather{0%,15%,100%{transform:translate(var(--start-x),var(--start-y)) rotate(-5deg)}48%,64%{transform:translate(var(--gather-x),var(--gather-y)) rotate(5deg)}}@media(max-width:700px){.ambient-stranger .body-wrap{width:36px;height:42px}.ambient-stranger{opacity:.25}footer{padding-bottom:50px}#wall{gap:22px 14px}}@media(prefers-reduced-motion:reduce){.ambient-stranger{animation:none;transform:translate(var(--start-x),var(--start-y))}}

/* Use the original polygon contours as clipping paths, never border radii. */
.bio-body{border-radius:0;clip-path:var(--blob-a);animation-name:join-blob-morph;background:#f4f2eb}
@keyframes join-blob-morph{0%,100%{clip-path:var(--blob-a);transform:rotate(-3deg)}45%{clip-path:var(--blob-b);transform:rotate(3deg)}75%{clip-path:var(--blob-c);transform:rotate(-2deg)}}
.ambient-stranger{opacity:1}.ambient-stranger .bio-body{background:#f4f2eb}.body-wrap{display:block}.ambient-stranger .body-wrap{outline-color:#aaa}
@media(max-width:700px){.ambient-stranger{opacity:1}}

.wall-section{background:transparent}

/* Restore the site's editorial split layout, with the crowd in its own space. */
.room-header{border-bottom:1px solid #303030;padding:24px 3vw}.room-navigation{display:flex;flex-wrap:wrap;gap:22px;font-size:11px;color:#bbb}.split-landing{display:grid;grid-template-columns:1.1fr 1fr;max-width:1600px;padding:0;min-height:calc(100svh - 160px)}.overview{padding:44px 5vw 30px;border-right:1px solid #303030}.overview h1{font-size:clamp(48px,5.8vw,90px);line-height:.95;margin:24px 0;letter-spacing:-.065em}.hero-community{font-size:14px;margin:24px 0;color:#eee}.overview-lead{font-size:clamp(18px,1.8vw,25px);line-height:1.4;max-width:570px}.overview-copy{color:#aaa;font-size:15px;line-height:1.6;max-width:570px}.more-story summary{font-size:12px;cursor:pointer;color:#ccc;padding:10px 0}.more-story .landing-story{font-size:14px;text-align:left}.more-story .lead{font-size:18px}#interest-form{margin-top:28px;max-width:570px}.email-row{display:flex;gap:8px}.email-row input{min-width:0;flex:1;border-radius:0}.email-row button{border-radius:0;white-space:nowrap}.interest-consent{display:flex;align-items:flex-start;gap:8px;line-height:1.4}.interest-consent span{margin:0}.interest-consent input{margin:2px 0}.overview #status,.overview #interest-status{font-size:12px;color:#aaa}.overview #join{background:none;color:#ccc;border:0;border-radius:0;font-size:12px;padding:8px 0}.overview #join>.bio-creature{display:none}.wall-section{position:relative;border:0;border-radius:0;margin:0;padding:36px 30px;min-width:0;min-height:620px;max-width:none;display:flex;flex-direction:column;overflow:hidden}.wall-heading{position:relative;z-index:2}.wall-section #ambient-strangers{position:absolute;inset:70px 20px 100px;z-index:0}.ambient-stranger{left:50%;top:40%;animation:local-drift 14s ease-in-out infinite;animation-delay:calc(var(--i) * -2s)}.ambient-stranger:nth-child(1){left:18%;top:30%}.ambient-stranger:nth-child(2){left:65%;top:20%}.ambient-stranger:nth-child(3){left:35%;top:65%}.ambient-stranger:nth-child(4){left:70%;top:65%}.ambient-stranger:nth-child(5){left:42%;top:43%}.ambient-stranger .body-wrap{width:76px;height:84px}#wall{position:relative;z-index:1;flex:1;align-content:center;gap:32px;padding:100px 0}.wall-caption{color:#777;text-align:center;font-size:11px}.wall-section #empty{position:relative;font-size:13px;color:#999}.split-landing+footer{padding:22px 3vw}.split-landing+footer>a{position:static}@keyframes local-drift{0%,100%{transform:translate(-15px,-14px)}50%{transform:translate(20px,22px)}}@media(max-width:800px){.split-landing{grid-template-columns:1fr}.overview{border-right:0;border-bottom:1px solid #333;padding:30px 24px}.wall-section{min-height:420px;padding:24px}.room-navigation{gap:12px;font-size:10px}.room-header{align-items:flex-start;gap:16px}.room-navigation a:nth-child(2),.room-navigation a:nth-child(3),.room-navigation a:nth-child(4){display:none}.overview h1{font-size:62px}.ambient-stranger .body-wrap{width:60px;height:68px}.email-row button{padding:12px}.split-landing+footer{padding:20px}}@media(prefers-reduced-motion:reduce){.ambient-stranger{animation:none;transform:none}}

.interest-consent input[type=checkbox]{width:16px;height:16px;flex:0 0 16px;padding:0;border-radius:0}.interest-consent span{flex:1}

/* A living wall, rather than isolated roaming decorations. */
.wall-section #ambient-strangers{display:none}#wall{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 8px;width:100%;max-width:480px;flex:0 0 auto;padding:45px 8px 30px;margin:auto;align-content:center}.wall-host,.wall-section .stranger{width:100%;min-width:0;height:102px;display:flex;align-items:center;justify-content:center;position:relative;transform:none}.wall-host .body-wrap,.wall-section .stranger .body-wrap{width:88%;max-width:92px;height:88px;animation:wall-breathe 5s ease-in-out infinite;animation-delay:var(--delay,0s);outline-offset:1px}.wall-host:nth-child(8n+5),.wall-host:nth-child(8n+6),.wall-host:nth-child(8n+7),.wall-host:nth-child(8n+8){transform:translateX(10px)}.wall-section .stranger-name{position:absolute;bottom:-6px;z-index:2;background:#080808;padding:2px 5px;font-size:10px}.wall-section .note-indicator{position:absolute;top:0;right:0;font-size:9px}.wall-heading{font-size:11px}.email-row{flex-wrap:wrap}.email-row button{font-size:12px}.email-row input{min-width:150px}@keyframes wall-breathe{0%,100%{transform:translateY(-2px) rotate(-2deg)}50%{transform:translateY(3px) rotate(2deg)}}@media(max-width:800px){#wall{max-width:430px;padding:30px 4px}.wall-host,.wall-section .stranger{height:86px}.wall-host .body-wrap,.wall-section .stranger .body-wrap{height:74px}}@media(prefers-reduced-motion:reduce){.wall-host .body-wrap,.wall-section .stranger .body-wrap{animation:none}}

/* Many separate boundaries, gathered into one larger silhouette. */
#wall{grid-template-columns:repeat(12,minmax(0,1fr));gap:2px 0;max-width:530px;padding:40px 0;align-items:center}
.wall-host,.wall-section .stranger{height:auto;aspect-ratio:1/1.08;transform:none!important;padding:3px}
.wall-host .body-wrap,.wall-section .stranger .body-wrap{width:91%;height:90%;max-width:none;outline-offset:0;outline-width:1px;animation:wall-close-breathe 7s ease-in-out infinite;animation-delay:var(--delay,0s)}
.wall-host .body-wrap{border-radius:46% 54% 47% 53% / 52% 45% 55% 48%}
.wall-host:nth-child(3n) .body-wrap{border-radius:53% 47% 55% 45% / 44% 58% 42% 56%}
.wall-section .stranger-name{bottom:0;font-size:9px;max-width:90%;line-height:1.1}
@keyframes wall-close-breathe{0%,100%{transform:translateY(-1px) scale(.98)}50%{transform:translateY(1px) scale(1)}}
@media(max-width:800px){#wall{max-width:430px;gap:2px 0;padding:30px 0}.wall-host,.wall-section .stranger{height:auto}.wall-host .body-wrap,.wall-section .stranger .body-wrap{height:90%}}
@media(prefers-reduced-motion:reduce){.wall-host .body-wrap,.wall-section .stranger .body-wrap{animation:none}}

/* Touching living contours: the dotted shell follows the actual body. */
#wall{gap:0;max-width:490px}
.wall-host,.wall-section .stranger{padding:0;aspect-ratio:1/1;touch-action:none;cursor:grab;user-select:none;z-index:1}
.wall-host .body-wrap,.wall-section .stranger .body-wrap{width:118%;height:118%;flex-shrink:0;outline:none;animation:none;border-radius:0;position:relative;pointer-events:none}
#wall .bio-body{inset:7%;animation:none;transform:scale(.91)}
#wall .attached-boundary{position:absolute;inset:7%;width:86%;height:86%;overflow:visible;pointer-events:none}
.attached-boundary polygon{fill:none;stroke:#dad8cf;stroke-width:.8;stroke-dasharray:.35 2.6;stroke-linecap:round;stroke-linejoin:round}
#wall .pulled{z-index:10;cursor:grabbing}
.wall-section{overflow:visible}

/* Keep every personal boundary legible inside the soft cluster. */
#wall .attached-boundary polygon{stroke:#fffdf3;stroke-width:1.35;stroke-dasharray:.6 3;filter:drop-shadow(0 0 1.2px #000)}
#wall .bio-body{transform:scale(.87)}

/* The familiar accusation face and centre-out rainbow, clipped by the living body. */
@property --join-rainbow-offset{syntax:'<length>';inherits:false;initial-value:0px}
#wall .bio-body::after{content:'';position:absolute;inset:0;pointer-events:none;opacity:0;background:repeating-radial-gradient(circle at center,#ff0059 calc(var(--join-rainbow-offset) - 168px),#c000ff calc(var(--join-rainbow-offset) - 144px),#155dff calc(var(--join-rainbow-offset) - 120px),#00eaff calc(var(--join-rainbow-offset) - 96px),#45ff00 calc(var(--join-rainbow-offset) - 72px),#ffff00 calc(var(--join-rainbow-offset) - 48px),#ff7600 calc(var(--join-rainbow-offset) - 24px),#ff0059 var(--join-rainbow-offset));z-index:0}
#wall .rainbow-tapped .bio-body::after{animation:join-radiate 3s linear infinite,join-rainbow-fade 8s ease-in-out both}
#wall .bio-eyes{z-index:1;transition:opacity .35s}
#wall .bio-cheeky{display:block;position:absolute;inset:0;width:100%;height:100%;transform:scale(.58);transform-origin:50% 43%;opacity:0;z-index:1;transition:opacity .35s}
#wall .rainbow-tapped .bio-cheeky,#wall .pulled .bio-cheeky{opacity:1}
#wall .rainbow-tapped .bio-eyes,#wall .pulled .bio-eyes{opacity:0}
@media(hover:hover){#wall :is(.wall-host,.stranger):hover .bio-cheeky{opacity:1}#wall :is(.wall-host,.stranger):hover .bio-eyes{opacity:0}}
@keyframes join-radiate{from{--join-rainbow-offset:0px}to{--join-rainbow-offset:168px}}
@keyframes join-rainbow-fade{0%{opacity:0;clip-path:circle(0% at 50% 50%)}18%{opacity:1;clip-path:circle(75% at 50% 50%)}65%{opacity:1}100%{opacity:0;clip-path:circle(75% at 50% 50%)}}
@media(prefers-reduced-motion:reduce){#wall .rainbow-tapped .bio-body::after{opacity:1;animation:none}#wall .bio-cheeky,#wall .bio-eyes{transition:none}}

/* A single invitation first; contact details follow joining, inside a dialog. */
.overview #join{display:inline-flex;background:#eeece5;color:#111;border:1px solid #eeece5;border-radius:0;padding:16px 26px;font-size:15px;margin-top:26px}
.overview #status:empty{display:none}
#interest-dialog #interest-form{margin-top:20px}
#interest-dialog .email-row{display:flex;flex-direction:column}
#interest-dialog .email-row button{width:100%}
#interest-dialog #interest-status{font-size:13px;line-height:1.5}
#interest-dialog>button[data-close]:last-child{margin-top:14px;width:100%}

/* Demo-day entrance: one cast lines up, then scatters into the living wall. */
.room-header,.overview,body>footer,.wall-heading,.wall-caption,#empty{transition:opacity .8s ease}
.wall-intro .room-header,.wall-intro .overview,.wall-intro>footer,.wall-intro .wall-heading,.wall-intro .wall-caption,.wall-intro #empty{opacity:0;pointer-events:none}
.wall-intro .overview{border-color:transparent}
.wall-intro #wall{pointer-events:none;z-index:20}
.wall-intro .stranger-name,.wall-intro .note-indicator{opacity:0}
@media(prefers-reduced-motion:reduce){.room-header,.overview,body>footer,.wall-heading,.wall-caption,#empty{transition:none}}

.overview h1.join-wordmark{font-weight:800;font-size:clamp(64px,8vw,124px);letter-spacing:-.075em;line-height:1;margin:24px 0}
@media(max-width:800px){.overview h1.join-wordmark{font-size:clamp(64px,15vw,110px)}}

/* Mobile: meet the living crowd before the invitation. */
@media(max-width:800px){
  .split-landing .wall-section{grid-row:1;min-height:0;padding:24px 24px 18px;border-bottom:1px solid #303030}
  .split-landing .overview{grid-row:2;border-bottom:0}
  .split-landing #wall{margin:12px auto;padding:14px 0;max-width:360px}
}

/* Condensed invitation: wordmark, living crowd, then one clear action. */
.compact-join{display:flex;flex-direction:column;max-width:760px;min-height:0;padding:0 24px;text-align:center}
.compact-join .overview{border:0;padding:0}
.compact-join .join-heading{padding-top:30px}
.compact-join .join-wordmark{margin:14px 0;font-size:clamp(64px,10vw,100px)}
.compact-join .overview-lead{margin:10px auto 0;font-size:clamp(18px,3vw,23px);max-width:580px}
.compact-join .wall-section{padding:0;min-height:0;border:0;overflow:visible}
.compact-join #wall{max-width:340px;margin:0 auto;padding:10px 0}
.compact-join .wall-heading{justify-content:center;order:2;margin:0 0 8px;font-size:10px}
.compact-join #empty{display:none}
.compact-join .hero-community{margin:12px auto;font-size:14px}
.compact-join .overview-copy{max-width:450px;margin:10px auto;line-height:1.5;font-size:14px}
.compact-join .overview #join{margin-top:12px}
.compact-join .more-story{margin:15px auto 22px;max-width:550px}
.compact-join+footer{font-size:11px;border-top:0;justify-content:center;padding:16px 24px;flex-wrap:wrap}
@media(max-width:800px){.compact-join{padding:0 20px}.compact-join .join-heading{padding-top:22px}.compact-join #wall{max-width:290px;padding:4px 0;margin:0 auto}.compact-join .wall-section{border:0;padding:0}.compact-join .overview{padding:0}.compact-join .join-heading{padding-top:22px}.compact-join .overview h1.join-wordmark{font-size:76px}}
@media(max-width:800px){.compact-join .overview h1.join-wordmark{font-size:clamp(76px,20.5vw,150px);line-height:1;letter-spacing:-.075em;margin:16px -4px}}

#say-open{margin:10px 0 0 12px;border:0;font-size:12px;padding:10px;background:transparent}
.wall-speech{position:absolute;bottom:95%;left:50%;transform:translateX(-50%);width:max-content;max-width:180px;background:#f4f2eb;color:#111;border:1px solid #111;border-radius:14px;padding:9px 12px;font-size:12px;line-height:1.35;overflow-wrap:anywhere;pointer-events:none;z-index:25;text-align:left}
#wall .stranger:has(.wall-speech){z-index:15}

/* Match the site's rounded action controls and native sans-serif. */
button{font-family:Arial,Helvetica,sans-serif}
.compact-join .overview #join,dialog button:not(.close),.email-row button,#say-open{border-radius:9px;font-family:Arial,Helvetica,sans-serif;font-size:14px;font-weight:400;line-height:1.3}
.compact-join .hero-community{font-size:clamp(18px,3vw,23px);line-height:1.4;max-width:580px}
#wall .stranger-name{top:calc(100% + 7px);bottom:auto;left:50%;transform:translateX(-50%);width:max-content;max-width:120px;text-align:center;font-size:11px;line-height:1.2;padding:3px 6px;border-radius:5px;z-index:3}

.stranger-opening{font-size:14px;color:#b3b2ad;margin:14px 0 10px}

/* Original Stranger editorial typography, with matching lead lines. */
.compact-join .overview-lead,.compact-join .hero-community{font-family:Arial,Helvetica,sans-serif;font-size:clamp(24px,3.1vw,32px);font-weight:400;line-height:1.18;letter-spacing:-.035em;color:#f3f1eb}
.compact-join .stranger-opening{font-family:Arial,Helvetica,sans-serif;font-size:18px;line-height:1.4;letter-spacing:-.025em;color:#f3f1eb}
.compact-join .join-wordmark{font-weight:700}
@media(max-width:700px){.compact-join .overview-lead,.compact-join .hero-community{font-size:27px;line-height:1.2}}

#wall .quiet-glow{z-index:16}
#wall .quiet-glow .body-wrap{filter:drop-shadow(0 0 10px #f5f3dc88);transition:filter 1.5s}
#wall .body-wrap{transition:filter 1.5s}
.bot-speech small{display:block;font:9px Arial,Helvetica,sans-serif;opacity:.6;margin-bottom:4px}
.bot-speech{animation:bot-whisper 4.5s ease both}
@keyframes bot-whisper{0%,100%{opacity:0}18%,80%{opacity:1}}
@media(prefers-reduced-motion:reduce){.bot-speech{animation:none}}
/* Keep all three invitation lines at the same quieter size. */
.compact-join .overview-lead,.compact-join .hero-community,.compact-join .stranger-opening{font-size:18px;line-height:1.4;letter-spacing:-.025em;font-weight:400}

/* Homepage header-ask controls, not catalogue cards. */
.compact-join .overview #join,dialog button:not(.close),.email-row button,#say-open{border:1px solid #77776f;border-radius:30px;padding:11px 19px;font:400 13px/1.3 Arial,Helvetica,sans-serif;background:transparent;color:#f3f1eb}
.compact-join .overview #join:hover,dialog button:not(.close):hover,.email-row button:hover,#say-open:hover{background:#f3f1eb;color:#080808}

#leave-note{border:1px solid #77776f;border-radius:30px;padding:11px 19px;margin:12px 0 0 8px;font:400 13px/1.3 Arial,Helvetica,sans-serif;background:transparent;color:#f3f1eb}
#leave-note:hover{background:#f3f1eb;color:#080808}
.compact-join .overview-copy{line-height:1.65}
/* Mobile stays scrollable without visible scrollbar tracks. */
@media(max-width:800px){html,body,dialog{scrollbar-width:none}html::-webkit-scrollbar,body::-webkit-scrollbar,dialog::-webkit-scrollbar{display:none;width:0;height:0}}
/* A viewport-sized invitation. Opening secrets restores document scrolling. */
html,body{height:100%;min-height:0}
body{height:100dvh;display:flex;flex-direction:column;overflow:hidden}
.compact-join{width:100%;max-width:960px;height:calc(100dvh - 40px);min-height:0;flex:1;display:flex;gap:0;margin:0 auto;padding:0 clamp(16px,4vw,36px)}
.compact-join .join-heading{flex:0 0 auto;padding-top:clamp(10px,2dvh,24px)}
.compact-join .eyebrow{margin:0;font-size:11px}
.compact-join .overview h1.join-wordmark{font-size:clamp(54px,min(20.5vw,12dvh),124px);margin:clamp(5px,1dvh,14px) 0;line-height:.95}
.compact-join .overview-lead{margin:4px auto 0}
.compact-join .wall-section{flex:1 1 0;min-height:0;display:flex;justify-content:center;align-items:center;overflow:visible}
.compact-join #wall{flex:none;width:min(100%,340px,max(90px,calc((100dvh - 350px)*1.1)));max-width:none;padding:0;margin:0 auto}
.compact-join .join-invitation{flex:0 0 auto;padding:0}
.compact-join .stranger-opening{margin:5px 0}
.compact-join .overview-copy{margin:6px auto;font-size:clamp(12px,1.8dvh,14px);line-height:1.5;max-width:520px}
.compact-join .overview #join,#leave-note{margin-top:6px;padding:10px 19px}
.compact-join .more-story{margin:8px auto 0}
.compact-join .more-story summary{padding:5px 0}
.compact-join #status{margin:4px 0;font-size:11px}
.compact-join+footer{height:40px;min-height:40px;flex:0 0 40px;padding:8px 12px;font-size:10px;line-height:1.3;text-align:center}
body:has(.more-story[open]){height:auto;min-height:100dvh;overflow-y:auto}
body:has(.more-story[open]) .compact-join{height:auto;min-height:calc(100dvh - 40px);flex:none}
body:has(.more-story[open]) .wall-section{flex:none;min-height:140px}
body:has(.more-story[open]) .more-story{text-align:left}
@media(max-height:550px){.compact-join .overview-lead,.compact-join .stranger-opening{font-size:14px}.compact-join .eyebrow{font-size:9px}.compact-join .overview h1.join-wordmark{font-size:clamp(36px,10dvh,60px);margin:4px 0}.compact-join .overview-copy{max-width:650px;font-size:11px;margin:4px auto}.compact-join .overview #join,#leave-note,#say-open{font-size:11px;padding:7px 14px}.compact-join+footer{height:26px;min-height:26px;flex-basis:26px;font-size:9px}.compact-join{height:calc(100dvh - 26px)}.compact-join #wall{width:min(220px,max(70px,calc((100dvh - 240px)*1.1)))}.compact-join .more-story{margin:2px auto 0}}

.compact-join{height:100dvh}
.closing-line{font:400 12px/1.4 Arial,Helvetica,sans-serif;color:#b3b2ad;margin:8px auto;max-width:480px}
@media(max-height:550px){.closing-line{font-size:10px;margin:4px auto}}
/* Preserve breathing room; compact the content rather than the gaps. */
.compact-join{gap:12px;padding-top:16px;padding-bottom:16px}
.compact-join .join-heading{padding-top:0}
.compact-join .overview h1.join-wordmark{margin:12px 0;font-size:clamp(40px,min(20.5vw,11dvh),124px)}
.compact-join .overview-lead{margin:8px auto 0}
.compact-join .stranger-opening{margin:0 0 12px}
.compact-join .overview-copy{margin:0 auto 12px;font-size:clamp(10px,1.8dvh,14px)}
.compact-join .overview-lead,.compact-join .stranger-opening{font-size:clamp(12px,2.3dvh,18px)}
.closing-line{margin:0 auto 12px;font-size:clamp(9px,1.6dvh,12px)}
.compact-join .overview #join,#leave-note{margin-top:0;font-size:clamp(10px,1.7dvh,13px)}
.compact-join .more-story{margin:12px auto 0}
.compact-join .more-story summary{padding:0;font-size:clamp(10px,1.7dvh,12px)}
@media(max-height:550px){.compact-join{gap:12px;padding-top:12px;padding-bottom:12px}.compact-join .overview h1.join-wordmark{margin:12px 0;font-size:clamp(30px,9dvh,48px)}.compact-join .overview-copy{margin:0 auto 12px}.closing-line{margin:0 auto 12px}.compact-join .more-story{margin-top:12px}.compact-join #wall{width:min(200px,max(45px,calc((100dvh - 285px)*1.1)))}}
.more-story{scroll-margin-top:24px;perspective:1200px}
.more-story summary{list-style:none;display:inline-flex;align-items:center;gap:10px}
.more-story summary::-webkit-details-marker{display:none}
.more-story summary::before{content:'';display:inline-block;width:17px;height:12px;border:1px solid currentColor;border-radius:3px;transform:rotate(-5deg);transition:transform .45s ease}
.more-story[open] summary::before{transform:rotate(0) perspective(50px) rotateX(-25deg)}
.more-story[open] .landing-story{transform-origin:top center;animation:secrets-unfold .65s cubic-bezier(.16,1,.3,1) both;border-top:1px solid #30302e;padding-top:20px}
@keyframes secrets-unfold{from{opacity:0;transform:rotateX(-10deg) translateY(-12px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.more-story[open] .landing-story{animation:none}.more-story summary::before{transition:none}}

/* One compact joining form, with contact details together at the top. */
#join-dialog{padding:22px;width:min(480px,calc(100% - 24px));max-height:calc(100dvh - 24px)}
#join-dialog #preview{position:absolute;right:45px;top:14px;width:36px;height:38px;margin:0;pointer-events:none}
#join-dialog h2{margin:0 65px 14px 0;font-size:24px}
.identity-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.identity-fields>div{min-width:0}
#join-dialog label{margin:10px 0 5px;font-size:12px}
#join-dialog label span{font-size:10px;margin-left:4px}
#join-dialog input:not([type=checkbox]):not([type=radio]),#join-dialog textarea{padding:10px;font-size:16px;min-width:0}
#join-dialog .interest-consent{margin:10px 0;align-items:center}
#join-dialog .interest-consent span{font-size:11px;line-height:1.3}
#join-dialog textarea{height:60px;min-height:48px;resize:vertical}
#join-dialog fieldset{margin:10px 0}
.visibility-options{display:flex;gap:16px;flex-wrap:wrap}
#join-dialog .choice{margin:5px 0;font-size:11px}
#join-dialog .fine{font-size:10px;line-height:1.4;margin:8px 0}
#join-dialog #save{margin-top:5px;padding:10px}
.manage-entry{display:flex;gap:10px}
#join-dialog .manage-entry button{width:auto;flex:1;font-size:10px;padding:7px;margin-top:8px}
#join-dialog #form-status:empty{display:none}
@media(max-height:600px){#join-dialog{padding:16px}#join-dialog h2{font-size:20px;margin-bottom:8px}#join-dialog label{margin-top:6px}#join-dialog textarea{height:48px}#join-dialog fieldset{margin:6px 0}}

#wall .has-note .body-wrap{filter:drop-shadow(0 0 7px #f4f2eb88) drop-shadow(0 0 15px #f4f2eb44)}
#wall .has-note .attached-boundary polygon{stroke:#fff;stroke-width:1.65}

/* Tap a glowing stranger, read one note, tap elsewhere to dismiss. */
#note-peek{position:fixed;z-index:1000;width:max-content;max-width:min(280px,calc(100vw - 24px));max-height:60dvh;overflow:auto;padding:14px 16px;border-radius:16px;background:#f4f2eb;color:#111;font:14px/1.45 Arial,Helvetica,sans-serif;white-space:pre-wrap;overflow-wrap:anywhere;box-shadow:0 8px 30px #0005}
#join-dialog .visibility-options{display:grid;grid-template-columns:1fr;gap:5px}
#join-dialog .visibility-options .choice{display:grid;grid-template-columns:18px 1fr;align-items:center;gap:8px;min-height:26px;margin:0;line-height:1.3}
#join-dialog .choice input{margin:0;width:16px;height:16px;accent-color:#eee}
.landing-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;max-width:370px;margin:auto}
.compact-join .landing-actions #join,.landing-actions #leave-note{margin:0;width:100%;min-height:42px;padding:10px 14px}
#join-dialog .form-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin-top:10px}
#join-dialog .manage-entry{display:contents}
#join-dialog .form-actions #save,#join-dialog .form-actions .manage-entry button{width:100%;min-height:42px;height:100%;padding:9px 10px;margin:0;font:400 12px/1.25 Arial,Helvetica,sans-serif}
/* Centre every action label within its button. */
button{text-align:center}
.compact-join .overview #join,#leave-note,#join-dialog .form-actions button,dialog button:not(.close){display:flex;align-items:center;justify-content:center;text-align:center}

.compact-join{gap:20px}.compact-join .wall-section{padding:8px 0}
@media(max-height:550px){.compact-join{gap:16px}}
