@font-face{font-family:Manrope;font-display:swap;src:url('./fonts/font-4.ttf');font-weight:400;font-display:swap}@font-face{font-family:Manrope;font-display:swap;src:url('./fonts/font-7.ttf');font-weight:700;font-display:swap}@font-face{font-family:Manrope;font-display:swap;src:url('./fonts/font-8.ttf');font-weight:800;font-display:swap}
:root{--ivory:#fff5e4;--ink:#202122;--orange:#f45100;--gutter:5.8vw}*{box-sizing:border-box}html,body{margin:0;background:var(--orange);color:var(--ivory);font-family:Manrope,sans-serif}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #fff5df;outline-offset:7px}header{position:fixed;inset:0 0 auto;z-index:20;padding:3.3vh var(--gutter);display:flex;align-items:center;justify-content:space-between;pointer-events:none}header>*{pointer-events:auto}.brand{font-size:clamp(38px,4.0vw,70px);font-weight:800;letter-spacing:-.05em;display:flex;align-items:center;line-height:1}.brand svg{width:.94em;height:.94em;margin-right:-.02em}header nav{display:flex;align-items:center;gap:3.1vw;font-size:clamp(14px,1.28vw,22px);font-weight:400}header .wallet{padding:.85em 1.65em;border:1px solid var(--ivory);border-radius:99px}.brand,header a{text-shadow:0 1px 8px #863b0722}#entry{height:2100vh}#entry-pin{position:sticky;top:0;height:100svh;overflow:hidden;min-height:540px}#world{position:absolute;inset:0}canvas{display:block;width:100%;height:100%}.shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,#8730000d,transparent 48%),linear-gradient(0deg,#94380070,transparent 26%),linear-gradient(180deg,#9b350063,transparent 17%)}.intro{position:absolute;left:var(--gutter);top:26%;width:49%;z-index:2}.intro h1{font-size:clamp(76px,9.2vw,176px);font-weight:400;letter-spacing:-.045em;line-height:1.04;margin:0 0 5.4vh;font-synthesis:none}.intro h1 .greeting{display:block;font-size:.76em;letter-spacing:-.04em;margin-bottom:.12em}.intro h1 .world-name{display:block;white-space:nowrap}.intro .button{font-weight:400}.actions{display:flex;gap:1.5vw}.button{background:var(--ivory);color:var(--ink);border:1px solid var(--ivory);border-radius:16px;padding:1.15em 1.8em;display:inline-flex;align-items:center;justify-content:center;gap:24px;font-size:clamp(15px,1.46vw,25px);font-weight:700;white-space:nowrap;transition:background .16s,transform .16s}.button:hover{transform:translateY(-2px);background:#fffaf1}.button.outline{border-color:var(--ivory);background:transparent;color:var(--ivory);font-weight:400}.button.outline:hover{background:#fff4df15}.story{position:absolute;left:var(--gutter);bottom:17vh;max-width:390px;width:29%;opacity:0;pointer-events:none;text-shadow:0 2px 14px #762c0777}.story>span{font-size:11px;letter-spacing:.16em;text-transform:uppercase;font-weight:700}.story p{font-size:clamp(20px,2.0vw,34px);line-height:1.28;letter-spacing:-.035em;font-weight:400;margin:15px 0 12px}.story small{font-size:clamp(10px,.85vw,14px);line-height:1.5;display:block;max-width:330px}.choice{position:absolute;bottom:24%;left:18%;right:18%;display:flex;justify-content:space-between;opacity:0;pointer-events:none}.choice .button{font-size:clamp(15px,1.2vw,21px);box-shadow:0 8px 26px #84320722}.footer{position:absolute;bottom:6.6vh;left:var(--gutter);right:var(--gutter);display:flex;justify-content:space-between;align-items:center;gap:18px}.scroll-cue{border:0;background:none;font-size:clamp(13px,1.26vw,21px);display:flex;gap:15px;align-items:center;padding:0}.scroll-cue>span:first-child{font-size:32px}.view-controls{display:flex;gap:14px;align-items:center}.view-controls button{font-size:10px;border:0;background:none;padding:6px 0}#fullscreen{font-size:22px}.status{position:absolute;right:var(--gutter);bottom:2vh;letter-spacing:.10em;font-size:7px;color:#fff5dfbb}.progress{position:absolute;bottom:0;width:100%;height:2px;background:#fff5df20}.progress i{display:block;height:100%;background:var(--ivory);width:0}#loading{position:absolute;inset:0;background:var(--orange);display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:15}#loading>span{font-size:60px;font-weight:800;letter-spacing:-3px}#loading p{font-size:14px}#loading a{font-size:13px;margin-top:15px;text-decoration:underline}#loading.ready{display:none}.error-copy{max-width:480px;padding:20px;line-height:1.7}
@media(max-height:800px){.intro{top:27%}.intro h1{margin-bottom:5vh}.story{bottom:18vh;max-width:340px}.story p{font-size:26px}.button{padding:.9em 1.45em}.footer{bottom:6vh}.status{font-size:6px}}
@media(max-width:1200px){header nav{gap:23px}.brand{font-size:42px}.intro h1{font-size:9.2vw}.button{font-size:15px;padding:1em 1.5em}.story{width:29%}.story p{font-size:24px}.view-controls{gap:9px}.scroll-cue{font-size:13px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

header button.wallet{background:transparent;font-size:inherit;font-weight:400}#notice:empty{display:none}#notice{position:absolute;top:14vh;right:var(--gutter);max-width:360px;background:#fff5e4;color:#282522;border-radius:16px;padding:18px 22px;font-size:14px;line-height:1.5;z-index:21;box-shadow:0 8px 30px #87320725}
/* A quiet guide card stays readable against the moving workshop. */
.story{bottom:15vh;width:340px;max-width:29vw;padding:23px 25px 24px;background:#fff7ebf5;border:1px solid #fff9ef;border-radius:20px;color:#242320;text-shadow:none;box-shadow:0 12px 40px #7b2e001c}
.story>span{display:block;color:#df4b08;font-size:10px;font-weight:800;letter-spacing:.12em}
.story p{font-size:clamp(24px,1.9vw,33px);font-weight:400;line-height:1.18;letter-spacing:-.035em;margin:12px 0 10px}
.story small{font-size:13px;line-height:1.55;color:#70685d;max-width:none}
@media(max-height:800px){.story{padding:18px 21px;bottom:15vh}.story p{font-size:25px}.story small{font-size:12px}}

/* Projected links sit inside the two architectural portals. */
.choice{inset:0;display:block;z-index:3;pointer-events:none}
.portal-choice{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;transform:translate(-50%,-50%);border-radius:24% 24% 12% 12% / 15% 15% 8% 8%;padding:var(--portal-pad,18px);color:#fff4df;background:radial-gradient(ellipse at 50% 38%,#ffb14b22,transparent 68%);text-shadow:0 2px 12px #431c1266;transition:background .2s,box-shadow .2s;font-size:var(--portal-font,28px);isolation:isolate}
.portal-choice:hover{background:radial-gradient(ellipse at 50% 38%,#ffc27844,#ffbc6310 70%);box-shadow:inset 0 0 35px #ffca7022}
.portal-choice:focus-visible{outline:3px solid #fff2ce;outline-offset:-5px}
.portal-kicker{font-size:.29em;font-weight:700;letter-spacing:.12em;margin-top:1.3em;margin-bottom:.8em;color:#ffd295}
.portal-choice strong{font-size:1em;line-height:1.15;letter-spacing:-.04em;font-weight:400;white-space:nowrap}
.portal-description{font-size:.38em;line-height:1.55;max-width:90%;margin:.7em 0 1.65em;color:#ffdfba}
.portal-action{display:flex;align-items:center;justify-content:space-between;gap:1.5em;background:#fff2dd;color:#48240f;text-shadow:none;border:1px solid #fff6e5;border-radius:.65em;padding:.85em 1.2em;font-size:.4em;min-height:40px;max-width:100%;box-shadow:0 6px 20px #27100533;transition:background .2s}
.portal-choice:hover .portal-action{background:#fffaf0}.portal-action>span{font-size:1.4em}
.portal-art{position:relative;width:2.3em;height:2.3em;display:grid;place-items:center;filter:drop-shadow(0 9px 8px #3d140955)}
.portal-art-create{border-radius:50%;border:.08em solid #ffcf83;background:linear-gradient(135deg,#ffd592,#ec7316 55%,#af420b);box-shadow:inset -.1em -.12em .12em #94340588,inset .07em .06em .12em #ffefd0,0 0 28px #ffa33a30}
.portal-art-create:before,.portal-art-create:after{content:'';position:absolute;width:1em;height:.14em;border-radius:.08em;background:#fff0cf}.portal-art-create:after{transform:rotate(90deg)}
.portal-art-explore{grid-template-columns:1fr 1fr;gap:.18em;padding:.13em;transform:rotate(-7deg)}
.portal-art-explore i{width:.88em;height:.88em;border:2px solid #ffd18a;border-radius:28%;background:linear-gradient(135deg,#ffde9d,#eb7216);box-shadow:inset -.07em -.08em .12em #aa410c66}.portal-art-explore i:nth-child(2),.portal-art-explore i:nth-child(3){background:linear-gradient(135deg,#fff6da,#eab36e)}
@media(max-width:600px){.portal-kicker{font-size:.35em;letter-spacing:.04em}.portal-description{font-size:.47em}.portal-action{font-size:.48em;min-height:36px;padding:.75em .8em;gap:.5em}.portal-art{font-size:.85em}}

@media(max-width:600px){header{padding:20px 6vw;flex-wrap:wrap;gap:15px}.brand{font-size:36px}header nav{width:100%;justify-content:space-between;gap:12px;font-size:12px}header .wallet{padding:.65em 1em}.intro{top:28%;width:88%}.intro h1{font-size:17vw}.actions{gap:10px}.intro .button{font-size:12px;padding:1em}.story{width:82%;max-width:320px;bottom:16vh;padding:16px 18px}.story p{font-size:21px}.story small{font-size:11px}.view-controls{gap:7px}.footer{gap:8px}.scroll-cue{font-size:12px;gap:8px}.status{font-size:5px}}

/* Shared framed navigation for the 3D entrance. */
header nav{gap:10px;font-size:14px}header nav>a,header button.wallet{padding:10px 17px;border:1px solid #ffe0aa70;border-radius:13px;background:#352016e8;color:#fff4df;box-shadow:inset 0 1px 0 #fff4df16,0 4px 14px #381b0920;text-shadow:none;transition:background .18s,transform .18s;white-space:nowrap}
header nav>a:hover{background:#5b2c14;transform:translateY(-1px)}header button.wallet{background:#fff3dc;color:#502711;border-color:#fff5e8}
@media(max-width:900px){header{flex-wrap:wrap;gap:14px}header nav{gap:7px;font-size:12px}header nav>a,header button.wallet{padding:8px 12px}}
@media(max-width:600px){header nav{width:100%;justify-content:flex-start;flex-wrap:wrap;gap:6px}header nav>a,header button.wallet{font-size:11px;padding:7px 10px}}

/* The landing controls are usable before WebGL initializes. */
#entry-pin{background-image:url('/entry/assets/workspace/factory-v1.jpg'),url('data:image/jpeg;base64,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');background-position:right center;background-size:cover;background-repeat:no-repeat}
#world canvas{opacity:0;transition:opacity .35s ease}#world.scene-ready canvas{opacity:1}
#loading{display:none}#loading.has-error{display:flex;inset:auto 6vw 16vh;max-width:420px;padding:20px;border-radius:18px;background:#fff4df;color:#352016;box-shadow:0 8px 28px #35201630;align-items:flex-start}#loading.has-error p{margin:0;padding:0;font-size:13px}#loading.has-error a{color:#9b3908}
@media(prefers-reduced-motion:reduce){#world canvas{transition:none}}

/* Official community link, aligned with the framed navigation. */
header nav a.social-x{display:inline-flex;align-items:center;gap:8px}header nav a.social-x svg{width:15px;height:15px;flex-shrink:0}header nav a.social-x span{font-size:12px}header nav a.social-x:focus-visible{outline:3px solid #ffbb69;outline-offset:3px}
@media(max-width:1450px) and (min-width:1151px){.topbar{gap:14px}.topbar nav a{padding:10px 12px}.topbar nav{gap:7px}}
.swap-output small{font-size:13px;line-height:1.5;color:#68615a}
