:root{--black:#050509;--cyan:#00e5ff;--violet:#783cff;--red:#ff3048;--white:#e8edf2}body{background:var(--black);color:var(--white);font:13px/1.6 ui-monospace,Consolas,monospace}.hub-shell{height:100svh;position:relative;overflow:hidden;background:var(--black)}#world{display:block;width:100%;height:100%;background:var(--black);shape-rendering:crispEdges}#world .presence{cursor:pointer;outline:none}#world .presence:focus-visible .focus-box,#world .presence.selected .focus-box{stroke:var(--white);stroke-width:2;stroke-dasharray:5 8}.focus-box{fill:none;stroke:none}.hub-top,.hub-bottom{position:absolute;left:24px;right:24px;display:flex;align-items:center;justify-content:space-between;gap:14px;pointer-events:none;z-index:2}.hub-top{top:20px}.hub-bottom{bottom:18px}.hub-top>* , .hub-bottom>*{pointer-events:auto}.hub-top a,.hub-bottom span{font-size:10px;letter-spacing:.15em;color:#89929f}.hub-top nav,.hub-bottom nav{display:flex;gap:8px;flex-wrap:wrap}.hub-shell button,.hub-shell a.control{background:var(--black);border:1px solid #252634;border-radius:0;padding:7px 11px;font:10px/1.4 monospace;color:#bfc7d1;cursor:pointer}.hub-shell button:hover,.hub-shell a.control:hover{border-color:var(--cyan);color:var(--white)}.hub-shell button[aria-pressed=true]{color:var(--cyan);border-color:var(--cyan)}.hub-shell button:focus-visible,.hub-shell a:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}.hub-readout{position:absolute;left:24px;bottom:70px;max-width:330px;background:var(--black);border-left:2px solid var(--violet);padding:12px 18px;z-index:3}.hub-readout h2{font:12px monospace;letter-spacing:.1em;margin:0 0 8px}.hub-readout p{font:11px/1.7 monospace;color:#aeb7c5;overflow-wrap:anywhere}.hub-readout .id{font-size:9px;color:#6d7889}.hub-inspection{position:absolute;top:65px;right:24px;bottom:66px;width:min(420px,calc(100% - 48px));background:var(--black);border:1px solid #333342;padding:20px;overflow:auto;z-index:5}.hub-inspection h2{font:12px monospace;letter-spacing:.15em}.hub-inspection p{font:11px/1.7 monospace;color:#aeb7c5}.hub-inspection ol{list-style:none;padding:0}.hub-inspection li{border-bottom:1px solid #22222e;padding:8px 0}.hub-inspection li button{width:100%;text-align:left}.hub-inspection label{display:block;font:11px monospace;margin:16px 0 6px}.hub-inspection input,.hub-inspection textarea,.hub-inspection select{background:#090910;border:1px solid #333342;border-radius:0;color:var(--white);padding:8px;width:100%;font:12px monospace}.hub-inspection textarea{resize:vertical;min-height:70px}.hub-inspection form{margin:18px 0;padding-top:14px;border-top:1px solid #333342}.hub-inspection form button{margin-top:10px}.hub-inspection .actions{display:flex;gap:8px;flex-wrap:wrap}#hub-status{color:var(--cyan);font-size:11px;min-height:1.7em}.origin-credit{position:absolute;right:24px;bottom:70px;pointer-events:none;z-index:1;font:9px monospace;color:#5c6270;writing-mode:vertical-rl;letter-spacing:.1em}#chamber{background:var(--black);padding-top:5rem}.room-head h2{font:normal clamp(3rem,9vw,7rem)/1 monospace;letter-spacing:-.08em}.room-head>p:last-child{font:12px monospace}.room-grid aside .light{background:var(--violet)}.room-grid .letter{font:15px/1.9 monospace}.grain,#field{display:none}header{display:none}footer{background:var(--black)}.site-guide{font:11px/1.8 monospace;color:#9da9b9;max-width:75ch}.compose{flex-wrap:wrap}select{max-width:100%}.hub-file{display:block;font:10px monospace;color:#aeb7c5}.hub-file input{width:100%;font:10px monospace;margin-top:6px}.study-note{font:10px monospace;color:var(--red)}@media(max-width:650px){.hub-top,.hub-bottom{left:14px;right:14px}.hub-top{align-items:flex-start}.hub-top nav{max-width:245px;justify-content:flex-end}.hub-top button,.hub-bottom button,.hub-bottom a.control{font-size:9px;padding:7px}.hub-readout{left:14px;bottom:80px;max-width:230px;padding:8px 12px}.hub-inspection{right:14px;width:calc(100% - 28px);top:85px}.origin-credit{display:none}.hub-bottom span{max-width:100px;font-size:8px}.hub-shell{height:90svh}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

.binary-interface{overflow-wrap:anywhere}.binary-interface .hub-top a{max-width:160px;font:8px/1.6 monospace}.binary-interface .hub-top nav{max-width:55%}.binary-interface .hub-shell button,.binary-interface .hub-shell a.control{font:7px/1.6 monospace;max-width:145px;overflow-wrap:anywhere;white-space:normal}.binary-interface .hub-bottom span{font:7px/1.6 monospace;max-width:230px}.binary-interface .origin-credit{max-height:260px;font:6px monospace}.binary-interface .hub-readout{max-width:390px;max-height:45vh;overflow:auto}.binary-interface .hub-readout p,.binary-interface .hub-readout h2,.binary-interface .hub-inspection p,.binary-interface .hub-inspection h2,.binary-interface .hub-inspection label,.binary-interface .hub-inspection li button{font:8px/1.8 monospace;letter-spacing:.08em}.binary-interface .room-head h2{font:14px/1.8 monospace;max-width:650px;letter-spacing:.1em}.binary-interface .room-head p,.binary-interface .room-grid aside p,.binary-interface details,.binary-interface .protocol,.binary-interface .controls,.binary-interface #status,.binary-interface form>label,.binary-interface .fine,.binary-interface footer,.binary-interface .compose{font:8px/1.9 monospace;letter-spacing:.05em}.binary-interface .controls button{font:8px monospace;max-width:180px}.binary-interface .controls label{max-width:210px}.binary-interface select{font:8px monospace;max-width:100%}.binary-interface .import:has(input[type=file]),.binary-interface .hub-file{position:relative;cursor:pointer;padding:10px;border:1px solid #333342}.binary-interface .import input[type=file],.binary-interface .hub-file input[type=file]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.binary-interface #messages p{font:15px/1.8 monospace}.binary-interface #messages small{font:7px/1.8 monospace}.binary-interface .protocol-page{font:9px/2 monospace;overflow-wrap:anywhere}.binary-interface .protocol-page h1,.binary-interface .protocol-page h2{font:13px/1.9 monospace;letter-spacing:.08em}@media(max-width:650px){.binary-interface .hub-top a{max-width:80px;font-size:6px}.binary-interface .hub-shell button,.binary-interface .hub-shell a.control{font-size:6px;max-width:105px;padding:6px}.binary-interface .hub-top nav{max-width:72%}.binary-interface .hub-bottom span{max-width:110px;font-size:6px}.binary-interface .hub-readout{max-width:260px}.binary-interface .room-grid{min-width:0}.binary-interface .traces,.binary-interface .controls{min-width:0}.binary-interface .compose>*{max-width:100%}}

.binary-interface .room-grid aside .letter{max-width:none}.binary-interface .room-grid aside{min-width:0}

.image-tools{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:12px 0}.chat-picture,#image-preview{display:block;max-width:100%;height:auto;max-height:480px;object-fit:contain;object-position:left;margin:16px 0;border:1px solid #252634}.image-description{color:#9da9b9;font-size:12px!important}#image-alt{width:100%;padding:10px;background:#0b151d;color:var(--white);border:1px solid #333342}#mark-canvas{width:100%;height:auto;touch-action:none;border:1px solid #333342;margin-top:16px;background:#050509}#speak .image-tools .geo-control{min-width:44px}.binary-interface .image-tools,.binary-interface #speak>label{font:8px/1.8 monospace}#image-preview[hidden]{display:none}body.readable-interface #speak label{font:12px/1.8 monospace}

.hub-shell{height:200svh}.personal-thread{position:fixed;top:75px;bottom:40px;right:24px;z-index:8;width:min(560px,calc(100% - 48px));overflow:auto;background:#050509;border:1px solid #343442;padding:22px;text-align:left}.personal-thread ol{list-style:none;padding:0}.personal-thread li{padding:18px 0;border-top:1px solid #252634}.personal-thread .contribution{font:14px/1.8 monospace;white-space:pre-wrap;overflow-wrap:anywhere}.personal-thread img{max-width:100%;height:auto}.personal-thread small{color:#89929f}#key-state{font:11px/1.7 monospace;color:#89929f}@media(max-width:650px){.hub-shell{height:180svh}.personal-thread{right:14px;width:calc(100% - 28px)}}

.ping-controls{display:flex;flex-wrap:wrap;gap:8px;align-items:center;border-top:1px solid #343442;padding-top:14px}.ping-controls label{font:10px/1.8 monospace}.ping-controls select{max-width:160px;font:12px monospace}.ping-controls button{font:11px monospace}

/* Discrete marks rather than full-screen flashing. All texture is noninteractive. */
.hub-shell:after{content:'';position:absolute;inset:0;pointer-events:none;z-index:1;opacity:.1;background:repeating-linear-gradient(0deg,transparent 0 3px,#7da2ae 3px 4px);animation:scan-drift 19s steps(4,end) infinite}.hub-top,.hub-bottom{z-index:2}.hub-inspection,.hub-readout,.personal-thread{border-color:#354b57;box-shadow:3px 0 #10212a,-1px 2px #172631}.personal-thread:before,.hub-inspection:before{content:'';display:block;width:54px;height:3px;background:#517a88;margin:0 0 18px;box-shadow:62px 0 #263d4b,70px 0 #263d4b,82px 0 #263d4b}#mark-canvas,#image-preview{image-rendering:pixelated}#world .presence{shape-rendering:crispEdges}.still .hub-shell:after{animation:none}@keyframes scan-drift{to{background-position:0 4px}}@media(prefers-reduced-motion:reduce){.hub-shell:after{animation:none}}

.connection-line{filter:drop-shadow(0 0 3px #00cfff) drop-shadow(0 0 7px #1685aa);animation:connection-flow 2.4s linear infinite,connection-breath 4.8s ease-in-out infinite;shape-rendering:geometricPrecision;stroke-linecap:square}@keyframes connection-flow{to{stroke-dashoffset:-64}}@keyframes connection-breath{0%,100%{opacity:.6;stroke:#65dbea}50%{opacity:1;stroke:#ddfcff}}.still .connection-line{animation:none;opacity:.9}@media(prefers-reduced-motion:reduce){.connection-line{animation:none;opacity:.9}}

.arrival-note{position:fixed;right:24px;bottom:24px;width:min(390px,calc(100vw - 48px));max-height:65svh;overflow:auto;z-index:12;padding:20px;background:#071118;border:1px solid #35616e;box-shadow:3px 3px #10242d;color:#d7e9ee;font:12px/1.7 monospace}.arrival-note h2{font:14px monospace;color:#8defff}.arrival-note button{background:#10252c;color:#c4f8ff;border:1px solid #477888;padding:7px 12px;font:12px monospace}.binary-interface .arrival-note{font-size:8px;overflow-wrap:anywhere}

.chat-portal{position:absolute;z-index:3;top:78px;left:50%;transform:translateX(-50%);width:126px;height:126px;display:block;text-decoration:none;color:#b4f6ff;filter:drop-shadow(0 0 7px #168eaa);transition:filter .3s}.portal-frame{position:absolute;inset:0;width:100%;height:100%;overflow:visible;animation:portal-turn 24s linear infinite;transform-origin:50% 57.5%}.portal-frame path{fill:#071d2588;stroke:#59eaff;stroke-width:1.3;stroke-linejoin:miter}.portal-label{position:absolute;top:57%;left:50%;transform:translate(-50%,-50%);width:100%;text-align:center;font:11px monospace;letter-spacing:.08em;white-space:nowrap}.chat-portal:hover,.chat-portal:focus-visible{filter:drop-shadow(0 0 12px #64edff);color:white}.chat-portal:focus-visible{outline:1px dashed #c8faff;outline-offset:8px}.still .portal-frame{animation:none}@keyframes portal-turn{to{transform:rotate(360deg)}}@media(max-width:650px){.chat-portal{top:100px;width:104px;height:104px}.portal-label{font-size:10px}}@media(prefers-reduced-motion:reduce){.portal-frame{animation:none}}

#room-veil{position:fixed;inset:0;z-index:6;background:#01080bb8;backdrop-filter:blur(2px)}
#chamber{position:fixed;z-index:7;top:7svh;left:50%;transform:translateX(-50%);width:min(1180px,calc(100vw - 40px));height:86svh;overflow:auto;padding:24px;background:#050a10f5;border:1px solid #35606a;box-shadow:0 18px 80px #000b,4px 4px #152831;scroll-margin:0}
#room-close{position:absolute;right:18px;top:14px;z-index:2;border:1px solid #31525c;background:#0b1b23;color:#a5eaf5;padding:0 12px;font:24px monospace;line-height:28px}
#chamber .room-head{margin:0 45px 22px 0;padding:0 0 14px;border-bottom:1px solid #24414d;cursor:move;touch-action:none;user-select:none;display:flex;gap:18px;align-items:baseline;flex-wrap:wrap}
#chamber .room-head.dragging{cursor:grabbing}#chamber .room-head .coordinate{font:8px monospace;letter-spacing:.22em;color:#6098a6;margin:0}#chamber .room-head h2{font:22px monospace!important;text-transform:uppercase;letter-spacing:.22em!important;margin:0}#chamber .room-head>p:last-child{font:10px monospace;color:#789ba6;margin:0}
#chamber .room-grid{grid-template-columns:minmax(190px,250px) minmax(0,1fr);gap:24px}#chamber .room-grid>aside{align-self:start;text-align:left;max-width:none;padding:18px;border:1px solid #273e4b;border-left:2px solid #58c7dc;background:linear-gradient(135deg,#0a1c26b0,#060c16);position:relative}#chamber .room-grid>aside:after{content:'';position:absolute;right:-1px;top:-1px;width:17px;height:17px;border-right:2px solid #70d4e8;border-top:2px solid #70d4e8}#chamber .signal-seal{width:100%;height:42px;margin:0 0 16px;fill:#82dded;stroke:#559dae;stroke-width:1;shape-rendering:crispEdges;opacity:.75}#chamber .room-grid aside .letter{font:11px/1.9 monospace!important;font-style:normal;letter-spacing:.025em;max-width:none;color:#b6ced5;margin:12px 0}#chamber .signature{font:10px monospace;color:#5ca9ba;margin:20px 0}#chamber .protocol{display:block;border-top:1px dashed #294752;padding-top:14px;font:9px/1.7 monospace;color:#73afbc}#chamber #messages{max-height:40svh;margin:12px 0}#chamber #status{min-height:0;margin:12px 0}#chamber #key-state{margin:8px 0}#chamber .controls{gap:4px;min-height:40px}.chat-portal{z-index:9}.chat-open .chat-portal{filter:drop-shadow(0 0 11px #78eaff)}
.hub-readout{position:fixed;bottom:auto;right:auto;max-width:min(310px,calc(100vw - 24px));padding:12px 16px;text-align:left;z-index:5;border:1px solid #23424c;border-left:2px solid #7adcdf;background:#050a10f7}.hub-readout p{margin:7px 0}.hub-readout h2{margin:0 0 9px}
.media-compose{border:1px solid #2d4c5a;margin:12px 0;background:#071018}.media-compose #image-preview{margin:0;border:0;max-height:270px}.media-compose #mark-pad{padding:10px}.media-compose #mark-canvas{margin-top:0}.media-caption{padding:10px 12px;border-top:1px solid #233f4b}.media-caption label{display:block;font:9px monospace;color:#6f9ba8;margin-bottom:6px}#chamber .media-caption #image-alt{font:11px monospace;padding:7px;background:#08131a;border:1px solid #294653}
@media(max-width:760px){#chamber{width:calc(100vw - 24px);padding:16px;top:6svh;height:88svh}#chamber .room-grid{grid-template-columns:1fr;gap:16px}#chamber .room-grid>aside{padding:12px 16px}#chamber .signal-seal{float:right;width:80px;height:24px;margin:0 0 8px 12px}#chamber .room-grid aside .letter{font-size:10px!important;margin:5px 0}#chamber .room-head>p:last-child{display:none}#chamber .signature,#chamber .protocol{display:inline-block;margin:8px 12px 0 0;padding-top:0;border:0}#chamber #messages{max-height:34svh}}

.hub-readout{max-height:60svh;overflow:auto}.media-compose [hidden]{display:none!important}

.chat-open .chat-portal{visibility:hidden;pointer-events:none}.signal-seal path{fill:none}


#room-close.geo-control{position:absolute!important;right:12px;top:12px}#room-close .bit-caption{left:auto;right:0}


.arrival-note a{display:block;width:fit-content;margin:.7rem 0;color:#8defff;text-decoration:underline;text-underline-offset:3px}

.protocol-page pre{white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.8 monospace}.protocol-page code{overflow-wrap:anywhere}.protocol-page nav{line-height:2}

.distance-options{display:flex;flex-wrap:wrap;gap:8px}.distance-options button[aria-pressed=true]{border-color:#00e5ff;color:#00e5ff}#hidden-shells{padding-left:1.2rem}#hidden-shells button{overflow-wrap:anywhere;text-align:left}

#shell-visibility{z-index:10}

.receipt-control{cursor:pointer}.receipt-control .receipt-caption{opacity:0;font-family:monospace;pointer-events:none}.receipt-control:hover .receipt-caption,.receipt-control:focus .receipt-caption{opacity:1}.receipt-control:focus{outline:none}.receipt-control:focus circle{stroke:#f9d0d5;stroke-width:1.7}

#personal-thread #thread-items .contribution,#private-chat #chat-items .contribution{color:#ff687b}

/* Empty space inside a pixel silhouette is still part of its click target. */
#world .focus-box{fill:transparent;pointer-events:all}


.incoming-arrows,.outgoing-arrows{filter:drop-shadow(0 0 3px #ff263e);stroke-linejoin:miter;shape-rendering:geometricPrecision}
.connection-cut{color:#ed8794;border-color:#663b48}
