@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&family=Caveat:wght@500;600;700&family=Newsreader:wght@400;500&display=swap');
:root{font-family:'DM Sans',sans-serif;color:#383c32;background:#e8dfd0;font-synthesis:none}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #db6638;outline-offset:5px}#world{position:fixed;inset:0}canvas{display:block;touch-action:none}header{position:fixed;top:33px;left:40px;right:40px;display:flex;justify-content:space-between;pointer-events:none}.wordmark{font-family:'Space Grotesk',sans-serif;font-size:25px;letter-spacing:-1.3px;font-weight:700;color:inherit;text-decoration:none;pointer-events:auto}.house{font-size:32px;margin-right:8px}.wordmark-dot{font-size:11px;vertical-align:top;letter-spacing:0;margin-left:4px}.address{text-align:right;font-size:12px;letter-spacing:1.2px;line-height:1.9}.address span{font-size:12px;letter-spacing:0;opacity:.65}.intro{position:fixed;left:40px;top:145px;pointer-events:none}.eyebrow{font-size:10px;letter-spacing:1.4px;font-weight:600}h1{font-family:'Space Grotesk',sans-serif;font-weight:500;font-size:clamp(28px,3.1vw,48px);line-height:1.07;letter-spacing:-2px;margin:18px 0}.intro p{font-size:14px;line-height:1.65;opacity:.66}.tools{position:fixed;right:35px;top:43%;display:grid;gap:10px}.tools button,#help{position:relative;border:1px solid #646d4b26;width:42px;height:42px;border-radius:50%;background:#f9f5e998;color:#434938;font-size:24px;box-shadow:0 3px 12px #50472f05;transition:background .2s,transform .2s}.tools button:hover,#help:hover{background:#fffbed;transform:translateY(-2px)}.offslash{position:absolute;width:23px;height:1px;background:currentColor;transform:rotate(-48deg);top:21px;left:10px}.room-stamp{position:fixed;bottom:116px;left:40px;display:grid;gap:7px}.room-stamp span:first-child{font-family:'Space Grotesk';font-size:17px}.room-stamp span:last-child{font-size:9px;letter-spacing:1.6px;opacity:.6}footer{position:fixed;left:40px;right:40px;bottom:29px;display:flex;align-items:center;justify-content:space-between}.controls{display:flex;align-items:center;gap:12px;font-size:12px;color:#656856}.controls i{font-style:normal}.mouse-icon{width:14px;height:21px;border:1px solid #747660;border-radius:8px;position:relative}.mouse-icon:before{content:'';position:absolute;left:5px;top:4px;height:5px;border-left:1px solid}.discovery{display:flex;align-items:center;gap:10px;font-size:12px}.discovery>span:nth-child(2){opacity:.6}#dots{display:flex;gap:4px;margin-left:4px}#dots i{display:block;width:6px;height:6px;background:#424d3729;border-radius:50%}#dots i.found{background:#bb592f}#help{width:30px;height:30px;font-size:14px}#labels{position:fixed;inset:0;pointer-events:none}.hotspot{position:absolute;left:0;top:0;pointer-events:auto;border:1px solid #fff9;background:#fffaf0ed;color:#444b39;border-radius:6px;padding:8px 11px;display:flex;align-items:center;gap:7px;white-space:nowrap;font-size:12px;box-shadow:0 3px 10px #40382114;transform:translate(-50%,-50%);transition:opacity .2s,background .2s}.hotspot:before{content:'+';display:grid;place-items:center;width:15px;height:15px;border:1px solid #64704a50;border-radius:50%;font-size:12px}.hotspot:hover,.hotspot.active{background:#454f35;color:#fff8e8}.hotspot.found:before{content:'✓';font-size:9px}.hotspot.bonus{font-size:10px;padding:5px 8px;background:#f6f5e8ae}#toast{position:fixed;bottom:95px;left:50%;transform:translate(-50%,15px);padding:12px 20px;background:#3e4b36;color:#fff8eb;border-radius:30px;font-size:14px;opacity:0;transition:.3s;pointer-events:none;max-width:90vw;text-align:center}#toast.show{opacity:1;transform:translate(-50%,0)}#loader{position:fixed;inset:0;background:#e8dfd0;display:grid;place-content:center;text-align:center;z-index:50;transition:opacity .6s}#loader span{font-size:60px;color:#687250}#loader p{font-size:14px}dialog{border:0;background:transparent;padding:44px 24px 34px;width:min(850px,95vw);max-height:94dvh;color:#313c32;overflow:auto}dialog::backdrop{background:#28332577;backdrop-filter:blur(9px)}.close{position:absolute;right:19px;top:0;width:36px;height:36px;border:1px solid #ffffffe0;border-radius:50%;font-size:25px;background:#fdf7e8;color:#4f5546}.return-hint{font-size:10px;text-align:center;color:white;letter-spacing:1.8px;margin-top:22px}.device{background:#dfd7bd;padding:22px;border-radius:20px;box-shadow:0 25px 90px #18231160,inset 0 0 0 2px #fff8}.screen{background:#192a29;color:#e5edc9;border-radius:8px;padding:28px;min-height:330px;position:relative;overflow:hidden}.screen:after{content:'';position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(transparent 0 3px,#0000000a 3px 4px)}.screen .eyebrow{color:#adc9a2;font-size:11px}.screen h2{font-family:'Space Grotesk';font-size:36px;letter-spacing:-1.5px;font-weight:500;margin:18px 0}.screen p{font-size:16px;line-height:1.65;max-width:560px}.device-brand{text-align:center;font-size:10px;letter-spacing:3px;margin-top:17px}.object-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:22px 0}.object-tabs button,.object-action{padding:9px 14px;border:1px solid currentColor;background:transparent;color:inherit;border-radius:4px;font-size:14px}.object-tabs button.selected{background:#d9e8b9;color:#263e32}.screen .object-tabs{position:relative;z-index:1}.metrics{font-family:'Space Grotesk';font-size:16px;color:#aeca9f;padding-top:10px;border-top:1px solid #9eb39355}.notebook{display:grid;grid-template-columns:1fr 1fr;background:#f7efd9;border-radius:4px 13px 13px 4px;box-shadow:0 22px 80px #1d271955;min-height:410px;position:relative}.page{padding:35px 32px;background:repeating-linear-gradient(transparent 0 29px,#75734d17 29px 30px);background-position:0 20px}.page:first-child{border-right:1px solid #cfc3a5;box-shadow:inset -15px 0 25px #786d4320}.notebook h2{font-family:'Space Grotesk';font-size:35px;letter-spacing:-1px;line-height:1.15;font-weight:500}.notebook p{line-height:1.8;font-size:16px}.note{background:#edc66b;padding:18px;transform:rotate(-3deg);font-size:17px;margin:24px 0}.page-count{font-size:11px;opacity:.5;margin-top:25px}.book{background:#78805b;color:#fff1d3;border-radius:3px 15px 15px 3px;padding:40px 44px 40px 54px;box-shadow:inset 15px 0 #485539,0 20px 60px #13291d44;border:1px solid #869070}.book h2{font-family:Georgia,serif;font-weight:400;font-size:52px;line-height:1.05;margin:25px 0}.book p{font-size:16px;line-height:1.75;max-width:530px}.book .small{font-size:13px;opacity:.75}.tv{background:#874d32;padding:24px;border:7px solid #a57452;border-radius:25px;box-shadow:0 20px 80px #13231a55;display:grid;grid-template-columns:1fr 55px;gap:20px}.tv .screen{border-radius:40px;background:#233237;min-height:330px;border:9px solid #252b27}.tv-side{display:flex;flex-direction:column;gap:15px;justify-content:center}.tv-side button{border:2px solid #2e332c;border-radius:50%;width:48px;height:48px;background:#dbc8a6;font-size:12px}.tv-side .selected{background:#d89545}.experiment{height:95px;position:relative;display:flex;justify-content:center;align-items:center}.orb{height:75px;width:75px;background:#e7a768;border-radius:38% 62% 65% 35% / 42% 35% 65% 58%;animation:blob 4s ease-in-out infinite;box-shadow:0 0 50px #efa97766}.orb.gravity{border-radius:50%;width:30px;height:30px;animation:bounce 1s ease-in-out infinite}.orb.bloom{border-radius:0;animation:spin 8s linear infinite;background:#aec683;box-shadow:20px 20px #a67483,-20px -20px #dfa065}.tv .screen h2{font-size:27px;margin:12px 0}.tv .screen p{font-size:14px}.framed{background:#774731;padding:20px;box-shadow:0 25px 90px #19291d66;transform:rotate(-1deg)}.poster{background:#d3663f;border:15px solid #efe5cc;min-height:400px;padding:35px;color:#ffe9bf}.poster h2{font-family:'Space Grotesk';font-weight:700;font-size:clamp(35px,7vw,70px);line-height:.95;letter-spacing:-3px;margin:23px 0}.poster p{font-size:16px;line-height:1.6;max-width:470px}.poster .object-tabs button.selected{background:#ffe9bf;color:#aa492a}.phone{width:320px;max-width:100%;margin:auto;background:#272e29;border-radius:46px;padding:13px;box-shadow:0 20px 80px #14241b88}.phone-screen{border-radius:34px;background:#e8eddc;padding:30px 24px;min-height:455px;position:relative}.phone-screen:before{content:'';position:absolute;top:10px;left:50%;transform:translateX(-50%);width:70px;height:15px;border-radius:12px;background:#272e29}.phone-time{font-size:12px;margin-bottom:38px}.avatar{width:66px;height:66px;border-radius:50%;background:#86936c;color:#f9efd8;display:grid;place-items:center;font-family:Georgia;font-size:26px}.phone h2{font-family:'Space Grotesk';font-size:28px;margin:15px 0 4px}.phone p{font-size:14px;line-height:1.7}.phone a,.phone button{display:block;width:100%;text-align:center;padding:12px;background:#455b3d;color:white;text-decoration:none;border:0;border-radius:12px;font-size:14px;margin-top:13px}.phone button{background:#d6dec8;color:#455b3d}.placeholder-note{font-size:11px!important;opacity:.65}.help-sheet{background:#faf2df;padding:35px;border-radius:10px;box-shadow:0 20px 60px #1234}.help-sheet h2{font-family:'Space Grotesk';font-size:30px}.help-sheet p{font-size:16px;line-height:1.8}body.night{color:#eee6d2}body.night .controls{color:#d5dac5}body.night #dots i{background:#e9eddf50}body.night .intro p,body.night .address span{opacity:.8}@keyframes blob{50%{transform:rotate(180deg) scale(.85);border-radius:60% 40% 35% 65% / 40% 65% 35% 60%}}@keyframes bounce{50%{transform:translateY(-30px) scale(.9,1.1)}90%{transform:translateY(25px) scale(1.3,.7)}}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:760px){header{top:20px;left:22px;right:22px}.wordmark{font-size:22px}.address{font-size:9px;letter-spacing:.8px}.address span{display:none}.intro{left:22px;top:95px}.eyebrow{font-size:8px;letter-spacing:1px}h1{font-size:31px;letter-spacing:-1.2px;margin:12px 0}.intro p{font-size:12px;margin:8px 0}.tools{right:15px;top:auto;bottom:128px;gap:7px}.tools button{width:35px;height:35px;font-size:20px}.offslash{top:17px;left:7px}.room-stamp{left:22px;bottom:126px}.room-stamp span:first-child{font-size:14px}.room-stamp span:last-child{font-size:8px}footer{left:22px;right:22px;bottom:24px;flex-wrap:wrap;gap:20px}.controls{font-size:10px;gap:7px;width:100%;justify-content:center;order:3}.discovery{font-size:11px}.hotspot{font-size:10px;padding:6px 7px;gap:4px}.hotspot:before{width:12px;height:12px;font-size:10px}.hotspot.bonus{display:none}.notebook{grid-template-columns:1fr}.page{padding:22px}.page:first-child{border-right:0;border-bottom:1px solid #cfc3a5}.notebook h2{font-size:27px;margin:12px 0}.notebook p{font-size:14px}.screen{padding:19px;min-height:300px}.screen h2{font-size:27px}.screen p{font-size:14px}.device{padding:12px}.book{padding:25px 27px 25px 35px}.book h2{font-size:39px}.book p{font-size:14px}.tv{padding:10px;gap:7px;grid-template-columns:1fr 35px}.tv-side button{width:33px;height:33px;font-size:10px}.tv .screen{border-width:5px;padding:15px}.poster{padding:20px;border-width:9px;min-height:370px}dialog{padding:42px 10px 30px;max-height:95dvh}.close{right:8px}.poster h2{letter-spacing:-1.4px}#toast{font-size:12px;width:max-content;bottom:105px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* V2 extends the original room; controls only appear at the object. */
.hotspot[hidden]{display:none!important}.tactile{opacity:0;pointer-events:none;font-size:12px;padding:7px 10px;z-index:2;transition:opacity .2s}.tactile:focus-visible,.tactile.hovered{opacity:1;pointer-events:auto}.tactile.screen-key{max-width:230px;white-space:normal;text-align:center}.tactile.screen-key:focus-visible{opacity:1;pointer-events:auto;background:#edf0d8;color:#263d37}.device-focus .tactile:not(.screen-key){opacity:1;pointer-events:auto}.device-back{font-size:13px;padding:9px 12px;z-index:3}.intro{transition:opacity .4s}.intro.quiet{opacity:0}.tools button{min-width:40px;min-height:40px}.room-stamp span:last-child{max-width:270px;line-height:1.6}.hotspot:focus-visible{z-index:5}.help-sheet{max-height:72dvh;overflow:auto}.help-sheet p{line-height:1.65}.device-focus .screen-key:before{display:none}@media(max-width:760px){.tactile{font-size:12px}.device-back{font-size:12px;padding:8px 10px}.room-stamp span:last-child{max-width:220px}.tools{right:13px}.room-stamp{pointer-events:none}.device-focus .tactile:not(.screen-key){font-size:12px}.help-sheet{padding:24px}.intro.quiet{visibility:hidden}}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}

.tools{z-index:4}

/* Small, quiet story labels; tactile interactions remain on the objects themselves. */
#labels>.hotspot{font-size:11px;padding:5px 7px;gap:4px;background:rgba(255,250,240,.64);border-color:rgba(255,255,255,.3);box-shadow:0 2px 7px #40382108}
#labels>.hotspot:before{width:12px;height:12px;font-size:10px}
#labels>.secondary-label,#labels>.bonus{font-size:10px;background:rgba(255,250,240,.38);opacity:.67;padding:4px 6px}
#labels>.hotspot:hover,#labels>.hotspot:focus-visible{background:rgba(255,250,240,.87);color:#394330;opacity:1}
#labels:not(.device-focus)>.tactile,#labels:not(.device-focus)>.tactile.hovered{opacity:0;pointer-events:none}
#labels:not(.device-focus)>.tactile:focus-visible{opacity:1;pointer-events:auto}
#labels>.hotspot{transition:opacity .35s,background .2s}
#labels.labels-idle>.hotspot{opacity:0!important;pointer-events:none!important}
@media(max-width:760px){#labels>.hotspot{font-size:10px;padding:4px 6px}#labels>.secondary-label,#labels>.bonus{font-size:9px}#labels>.bonus:not([hidden]){display:flex}}
/* Long-form reading uses the room's existing book popup. */
.reading-sheet{padding:clamp(26px,5vw,52px) clamp(26px,5vw,56px);overflow-wrap:anywhere}
.reading-sheet h2{font-size:clamp(30px,4.8vw,46px);line-height:1.14}
.reading-sheet h3{font-size:20px;line-height:1.4;margin:32px 0 12px;font-weight:600}
.reading-sheet p,.reading-sheet li{font-size:16px;line-height:1.8;max-width:none}
.reading-sheet li{margin-bottom:18px;padding-left:5px}.reading-sheet ol{padding-left:24px}
.reading-sheet .reading-meta{font-size:13px;line-height:1.6;opacity:.8}
.reading-sheet .eyebrow{font-size:12px;line-height:1.6}
.reading-sheet .object-tabs{padding-top:24px;border-top:1px solid #fff3;margin-top:36px}
.reading-sheet .object-tabs button{text-align:left;line-height:1.5;white-space:normal}
.case-study{background:#f3ead7;color:#394333;border-color:#d5c9ad;box-shadow:inset 12px 0 #c5c5a4,0 20px 60px #13291d44;min-height:65dvh}
/* Project case studies retain their folder identity. */
.case-study{background:var(--case-bg);color:#f7efd8;border-color:#ffffff24;box-shadow:inset 12px 0 #ffffff12,0 24px 70px #13291d66}
.case-study .eyebrow,.case-study .reading-meta,.case-study .placeholder-note{color:#dce2c8}.case-study h3{color:#f0cf98}

/* The bookshelf reader opens as a clothbound two-page volume. */
dialog{width:min(960px,96vw)}#detail-content{perspective:1800px}
.blog-reader{--paper:#f8edcf;position:relative;width:100%;padding:19px 20px 0;perspective:1800px;color:#443e32}
.book-spine-title{width:max-content;max-width:70%;margin:0 auto -1px;padding:7px 22px;border-radius:7px 7px 0 0;background:var(--cover);color:var(--cover-ink);font-size:12px;font-weight:700;letter-spacing:1.7px;text-align:center}
.book-spread{position:relative;display:grid;grid-template-columns:1fr 1fr;transform-style:preserve-3d;filter:drop-shadow(0 26px 34px #15211655)}
.book-spread:before{content:'';position:absolute;z-index:4;left:50%;top:0;bottom:0;width:18px;transform:translateX(-50%);background:linear-gradient(90deg,#69543824,#fff8dc7d 44%,#5946292d 58%,transparent);pointer-events:none}
.book-spread:after{content:'';position:absolute;z-index:-1;inset:-11px -12px -14px;background:var(--cover);border-radius:12px 12px 8px 8px;box-shadow:inset 0 0 0 1px #fff3d931}
.book-page{position:relative;min-width:0;min-height:515px;padding:38px 38px 42px;background-color:var(--paper);background-image:radial-gradient(#7b604b0c .55px,transparent .7px),linear-gradient(90deg,#fff9e9aa,#e7d7b91a);background-size:6px 6px,100% 100%;backface-visibility:hidden;transform-style:preserve-3d}
.book-page.left{border-radius:5px 0 0 5px;box-shadow:inset -20px 0 32px #6b513c19}.book-page.right{border-radius:0 5px 5px 0;box-shadow:inset 20px 0 32px #6b513c19}
.page-running{padding-bottom:10px;border-bottom:1px solid #68583c30;font-size:10px;font-weight:700;letter-spacing:1.35px;color:#75664d}
.page-copy{padding-top:18px}.page-copy h2{font-family:Georgia,serif;font-size:clamp(27px,3.4vw,39px);font-weight:400;line-height:1.08;letter-spacing:-1px;margin:18px 0}.page-copy h3{font-family:Georgia,serif;font-size:23px;font-weight:400;line-height:1.25;margin:16px 0}.page-copy p,.page-copy li{font-family:Georgia,serif;font-size:15px;line-height:1.67}.page-copy p{margin:0 0 16px}.page-copy ol{padding-left:21px}.page-copy li{margin-bottom:15px;padding-left:3px}.page-copy time{font-size:12px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:#82674a}.title-page{padding-top:8px}.end-page{display:grid;align-content:center;min-height:330px}.end-page span{display:block;margin-top:25px;font-size:11px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:#796a50}.folio{position:absolute;bottom:16px;left:50%;font:11px Georgia,serif;color:#78694f}
.reader-arrow{position:absolute;z-index:7;top:50%;width:42px;height:42px;transform:translateY(-50%);border:1px solid #6b513b35;border-radius:50%;background:#fff8e6e8;color:#554735;font:31px/1 Georgia,serif;box-shadow:0 7px 20px #1d281f2b}.reader-arrow:hover{background:#fffdf3;transform:translateY(-50%) scale(1.06)}.reader-arrow:disabled{opacity:0;pointer-events:none}.page-previous{left:-22px}.page-next{right:-22px}
.reader-status{text-align:center;margin:24px 0 12px;color:#fff3df;font-size:11px;letter-spacing:1.2px}.book-switcher{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;color:#fff5e3}.book-switcher>span{font-size:10px;letter-spacing:1.5px}.book-switcher button{min-height:48px;border:1px solid #fff7e956;border-radius:7px;padding:9px 12px;background:#283128b8;color:#fff7e9;font-size:15px}.book-switcher button:first-child{text-align:left}.book-switcher button:last-child{text-align:right}.book-switcher button span{font-size:10px;font-weight:700;letter-spacing:.8px}
.book-opening .book-spread{animation:openVolume .72s cubic-bezier(.18,.8,.2,1) both}.book-page.turn-forward{transform-origin:left center;animation:turnForward .48s ease-out both}.book-page.turn-back{transform-origin:right center;animation:turnBack .48s ease-out both}
@keyframes openVolume{0%{transform:rotateX(10deg) scaleX(.08);filter:drop-shadow(0 8px 9px #1521162c)}55%{transform:rotateX(4deg) scaleX(1.025)}100%{transform:none;filter:drop-shadow(0 26px 34px #15211655)}}
@keyframes turnForward{0%{transform:rotateY(-84deg);box-shadow:inset 46px 0 40px #6b513c40}100%{transform:rotateY(0);box-shadow:inset 20px 0 32px #6b513c19}}@keyframes turnBack{0%{transform:rotateY(84deg);box-shadow:inset -46px 0 40px #6b513c40}100%{transform:rotateY(0);box-shadow:inset -20px 0 32px #6b513c19}}
@media(max-width:760px){.blog-reader{padding:10px 6px 0}.book-spread{grid-template-columns:1fr}.book-spread:before{display:none}.book-page{min-height:auto;padding:28px 25px 38px}.book-page.left{border-radius:4px 4px 0 0;box-shadow:inset 0 -12px 20px #6b513c12}.book-page.right{border-radius:0 0 4px 4px;box-shadow:inset 0 12px 20px #6b513c12}.page-copy p,.page-copy li{font-size:16px}.reader-arrow{position:fixed;top:50%;width:38px;height:38px}.page-previous{left:5px}.page-next{right:5px}.book-switcher{grid-template-columns:1fr 1fr}.book-switcher>span{grid-column:1/-1;grid-row:1;text-align:center}.book-switcher button{grid-row:2}.book-switcher button span{display:none}}
@media(prefers-reduced-motion:reduce){.book-opening .book-spread,.book-page.turn-forward,.book-page.turn-back{animation:none!important}}
