.ex-gallery-builder{padding:20px 0 42px;color:#d9dfc7;--gallery-line:#acba9550}.ex-gallery-builder [hidden]{display:none!important}.ex-gallery-heading{display:flex;align-items:end;justify-content:space-between;gap:28px;margin-bottom:25px}.ex-gallery-heading small{font-size:9px;letter-spacing:3px;color:#afc0a4}.ex-gallery-heading h4{font:400 clamp(25px,3vw,35px)/1.5 var(--serif);margin:12px 0 0}.ex-gallery-heading>span{font-size:11px;line-height:2;text-align:right;color:#a8b79e}.ex-gallery-studio{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:24px;align-items:start}.ex-gallery-viewport{position:relative;height:clamp(410px,calc(100dvh - 185px),610px);overflow:hidden;perspective:1500px;perspective-origin:50% 40%;background:radial-gradient(ellipse at 50% 50%,#78876d30,transparent 65%),#101f19;border:1px solid var(--gallery-line);cursor:grab;touch-action:pan-y;isolation:isolate}.ex-gallery-viewport.is-rotating{cursor:grabbing;touch-action:none}.ex-gallery-viewport:before{content:"";position:absolute;inset:0;box-shadow:inset 0 0 85px #09130d55;z-index:5;pointer-events:none}.ex-gallery-viewport:focus-visible{outline:2px solid #d8c48e;outline-offset:4px}.ex-gallery-space{position:absolute;width:900px;height:550px;left:50%;top:44%;transform-style:preserve-3d;transform:translate(-50%,-50%) scale(var(--gallery-scale,.65)) rotateX(calc(var(--gallery-pitch,-9)*1deg)) rotateY(calc(var(--gallery-yaw,-16)*1deg)) translateZ(-100px);transition:transform .18s ease-out;pointer-events:none}.is-rotating .ex-gallery-space{transition:none}.ex-gallery-plane{position:absolute;transform-style:preserve-3d;backface-visibility:visible;pointer-events:none}.ex-gallery-back{width:900px;height:550px;left:0;top:0;background:linear-gradient(#eff0df,#c1c8af);border:1px solid #d6ddc1;transform:translateZ(-230px);box-shadow:inset 0 -8px 0 #87947b}.ex-gallery-left{width:580px;height:550px;left:0;top:0;transform-origin:left;transform:translateZ(-230px) rotateY(-90deg);background:linear-gradient(90deg,#c8cfb5,#b3c0aa);box-shadow:inset 0 -8px 0 #829079}.ex-gallery-right{width:580px;height:270px;left:900px;top:280px;transform-origin:left;transform:translateZ(-230px) rotateY(-90deg);background:linear-gradient(90deg,#b1bfab,#9bac98);opacity:.92}.ex-gallery-right>span{position:absolute;top:65px;left:80px;font:400 26px/1.5 var(--serif);letter-spacing:7px;color:#70856b;transform:rotateY(180deg)}.ex-gallery-floor{width:900px;height:580px;left:0;top:550px;transform-origin:top;transform:translateZ(-230px) rotateX(90deg);background:repeating-linear-gradient(90deg,transparent 0,transparent 148px,#8e9a7e4d 149px,#8e9a7e4d 150px),repeating-linear-gradient(0deg,transparent 0,transparent 144px,#8e9a7e4d 145px,#8e9a7e4d 146px),linear-gradient(#c5cbb4,#9bac94);box-shadow:inset 0 25px 70px #5e715948}.ex-free-surface{position:absolute;inset:0;transform:translateZ(7px);pointer-events:auto;cursor:inherit;outline-offset:-12px}.ex-gallery-left .ex-free-surface{transform:translateZ(-7px) rotateY(180deg)}.ex-free-surface:focus-visible{outline:2px dashed #94783d}.ex-free-surface.is-drop-target{background:#fbefd02b;outline:3px dashed #b09c5b;outline-offset:-12px}.ex-free-surface.is-armed{cursor:crosshair}.ex-free-surface>[data-ex-corner]{position:absolute;width:0;height:0;pointer-events:none}.ex-free-surface>[data-ex-corner=tl]{left:0;top:0}.ex-free-surface>[data-ex-corner=tr]{left:100%;top:0}.ex-free-surface>[data-ex-corner=br]{left:100%;top:100%}.ex-free-surface>[data-ex-corner=bl]{left:0;top:100%}.ex-surface-label{position:absolute;left:35px;bottom:20px;font:10px var(--serif);letter-spacing:5px;color:#6a7d5a88;pointer-events:none}.ex-gallery-wall-word{position:absolute;top:28px;left:50%;transform:translateX(-50%);font:400 12px var(--serif);letter-spacing:5px;color:#687d60;white-space:nowrap;pointer-events:none}.ex-gallery-frames{display:flex;position:absolute;left:170px;right:90px;top:85px;justify-content:space-between;gap:35px;transform:translateZ(14px);pointer-events:none}.ex-gallery-frame{position:relative;width:165px;height:190px;display:grid;place-items:center;flex-shrink:0;background:#f5f4e8;border:12px solid #fafbef;box-shadow:0 9px 13px #44563a42,inset 0 0 0 1px #b8c0a2;cursor:pointer;overflow:hidden;pointer-events:auto}.ex-gallery-frame:hover{box-shadow:0 9px 20px #44563a65,0 0 0 3px #f8ffed}.ex-gallery-frame>span{display:grid;text-align:center;gap:10px;color:#8d9c7c;pointer-events:none}.ex-gallery-frame b{font-weight:200;font-size:32px}.ex-gallery-frame strong{font-weight:400;font-size:10px;letter-spacing:2px}.ex-gallery-frame small{font-size:8px}.ex-gallery-frame>img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;pointer-events:none}.ex-gallery-frame input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.ex-poetry-piece{position:absolute;width:140px;height:140px;padding:0;border:0;background:transparent;transform:translate(-50%,-50%) rotate(calc(var(--piece-angle,0)*1deg)) scale(var(--piece-scale,1));cursor:grab;touch-action:none;pointer-events:auto;filter:drop-shadow(0 7px 3px #33493630)}.ex-poetry-piece>img{width:100%;height:100%;object-fit:contain;pointer-events:none;user-select:none}.ex-poetry-piece:after{content:"";position:absolute;inset:8px;border:1px dashed transparent;border-radius:4px;pointer-events:none}.ex-poetry-piece:hover:after,.ex-poetry-piece.is-selected:after{border-color:#876d32;background:#fff4cd1a}.ex-poetry-piece:focus-visible{outline:3px solid #8a773e;outline-offset:3px}.ex-poetry-piece.is-moving{opacity:.3}.ex-floor-lettering{position:absolute;bottom:35px;left:130px;font-size:9px;letter-spacing:5px;color:#73866b;pointer-events:none}.ex-gallery-view-note{position:absolute;bottom:12px;left:10px;right:10px;font-size:9px;letter-spacing:2px;color:#acba9a;text-align:center;pointer-events:none}.ex-gallery-view-controls{display:flex;align-items:end;gap:20px;padding:17px 0 24px}.ex-gallery-view-controls label{display:grid;gap:9px;flex:1;font-size:10px;color:#a6b79b}.ex-gallery-view-controls input{width:100%;accent-color:#d3cc9b}.ex-gallery-view-controls button{font-size:9px;white-space:nowrap}.ex-poem-panel{padding:23px 21px 18px;background:linear-gradient(145deg,#ebe5cb,#d3d5b8);color:#344a3d;border-top:3px solid #b39d67;box-shadow:0 18px 35px #040d0838;position:relative}.ex-poem-panel:before{content:"";position:absolute;inset:7px;border:1px solid #83916b44;pointer-events:none}.ex-poem-kicker{font-size:9px;letter-spacing:2px;color:#718269}.ex-poem-panel h5{font:500 23px/1.6 var(--serif);margin:13px 0 15px}.ex-poem-lines{font:400 13px/2.2 var(--serif);min-height:128px;letter-spacing:.3px}.ex-poem-lines p{margin:0}.ex-poem-generate{display:flex;align-items:center;justify-content:space-between;gap:22px;width:100%;padding:12px 0;margin-top:16px;background:none;border:0;border-top:1px solid #89937066;border-bottom:1px solid #89937066;text-align:left;color:#3d5844;font-size:12px;cursor:pointer}.ex-poem-generate span{font-size:20px;transition:transform .25s}.ex-poem-generate:hover span{transform:rotate(60deg)}.ex-poem-note{display:block;font-size:8px;line-height:1.9;color:#7c846b;margin:8px 0 19px}.ex-poem-material-heading{display:grid;gap:6px;margin-bottom:12px}.ex-poem-material-heading strong{font:400 14px var(--serif)}.ex-poem-material-heading small{font-size:8px;line-height:1.7;color:#7d866b}.ex-gallery-art-tray{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.ex-gallery-art-tray>button{display:grid;justify-items:center;gap:3px;padding:7px 3px 8px;border:1px solid #8b997044;background:#ffffff24;color:#40543e;cursor:grab;touch-action:none;min-width:0}.ex-gallery-art-tray>button:hover,.ex-gallery-art-tray>button[aria-pressed=true]{border-color:#8d723e;background:#fff5ce88;transform:translateY(-2px)}.ex-gallery-art-tray img{width:48px;height:48px;object-fit:contain;pointer-events:none}.ex-gallery-art-tray span{font:10px var(--serif);pointer-events:none;white-space:nowrap}.ex-poem-library{margin:15px 0 25px;border-top:1px solid var(--gallery-line);border-bottom:1px solid var(--gallery-line);padding:15px 0;color:#afc09f}.ex-poem-library summary{font:13px var(--serif);cursor:pointer;line-height:1.8}.ex-poem-library .ex-gallery-art-tray{grid-template-columns:repeat(12,minmax(0,1fr));margin-top:19px}.ex-poem-library .ex-gallery-art-tray>button{color:#c7d1b6;background:#23372a;border-color:#a8b58b38}.ex-poem-library .ex-gallery-art-tray>button:hover,.ex-poem-library .ex-gallery-art-tray>button[aria-pressed=true]{background:#3d5038}.ex-gallery-edit{display:grid;grid-template-columns:1.3fr repeat(5,minmax(75px,1fr));align-items:end;gap:14px;padding:17px 19px;background:#24382b;border-left:2px solid #d3bd83;margin:6px 0 20px}.ex-gallery-edit>div{display:grid;gap:7px;min-width:120px}.ex-gallery-edit>div small{font-size:8px;letter-spacing:2px;color:#9fb58e}.ex-gallery-edit>div strong{font:400 19px var(--serif)}.ex-gallery-edit>div span{font-size:9px;line-height:1.6;color:#96ad8b}.ex-gallery-edit label{display:grid;gap:10px;font-size:9px;color:#b8c5a9}.ex-gallery-edit select{width:100%;background:#304a36;border:1px solid #8e9b6e55;color:#dfdec0;padding:7px;font:11px var(--sans)}.ex-gallery-edit input{width:100%;accent-color:#d5c28b}.ex-gallery-edit>button{font-size:10px;padding:10px 14px}.ex-gallery-edit .ex-action{grid-column:5/7}.ex-gallery-edit .ex-text-action{grid-column:3/5;grid-row:2}.ex-gallery-footer{display:grid;grid-template-columns:1.5fr 1fr;gap:40px;padding:10px 0}.ex-gallery-footer>div>small{font:400 22px var(--serif);color:#cbd4b3}.ex-gallery-footer p{font-size:11px;line-height:2;color:#9eb393;margin:14px 0}.ex-gallery-checklist{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}.ex-gallery-checklist span{font-size:9px;border:1px solid #9fb18155;padding:7px 10px;color:#a7bb94}.ex-gallery-checklist span.is-ready{color:#e4d7a6;border-color:#d9c38b88;background:#3b4d30}.ex-gallery-footer [data-ex-gallery-status]{color:#d8c995}.ex-gallery-actions{display:flex;align-items:start;flex-direction:column;justify-content:center;gap:17px}.ex-gallery-actions button{font-size:11px}.ex-gallery-actions [disabled]{opacity:.45;cursor:not-allowed}.ex-gallery-actions a{font-size:11px;color:#d8c995}.ex-gallery-local-note{font-size:9px;color:#78907a;line-height:1.9;margin-top:20px}.ex-gallery-drag-ghost{position:fixed;pointer-events:none;z-index:99999;width:95px;height:95px;transform:translate(-50%,-50%) rotate(-4deg);filter:drop-shadow(0 8px 12px #0008);display:grid;place-items:center}.ex-gallery-drag-ghost img{width:100%;height:100%;object-fit:contain}.ex-gallery-builder.is-complete .ex-gallery-viewport{border-color:#c9ca8b}.ex-poem-panel.is-changing .ex-poem-lines{animation:ex-poem-arrive .5s both}@keyframes ex-poem-arrive{from{opacity:.15;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(max-width:1050px){.ex-gallery-studio{grid-template-columns:minmax(0,1fr) 245px;gap:17px}.ex-poem-panel{padding:19px 15px}.ex-poem-lines{font-size:12px}.ex-gallery-art-tray img{width:42px;height:42px}.ex-poem-library .ex-gallery-art-tray{grid-template-columns:repeat(8,minmax(0,1fr))}.ex-gallery-edit{grid-template-columns:repeat(3,minmax(0,1fr))}.ex-gallery-edit>div{grid-column:1/-1}.ex-gallery-edit .ex-action,.ex-gallery-edit .ex-text-action{grid-column:auto;grid-row:auto}.ex-gallery-viewport{height:500px}}
@media(max-width:760px){.ex-gallery-heading{display:block}.ex-gallery-heading>span{display:block;text-align:left;font-size:10px;margin-top:12px}.ex-gallery-studio{display:flex;flex-direction:column}.ex-gallery-stage-group{width:100%;order:2}.ex-poem-panel{width:100%;order:1;display:grid;grid-template-columns:1fr 1fr;column-gap:20px;padding:20px}.ex-poem-panel h5{grid-column:1;grid-row:2;margin-bottom:10px;font-size:23px}.ex-poem-kicker{grid-column:1;grid-row:1}.ex-poem-lines{grid-column:1;grid-row:3/5;min-height:0;font-size:12px}.ex-poem-generate{grid-column:1;grid-row:5;font-size:11px;margin-top:12px}.ex-poem-note{grid-column:1;grid-row:6;margin-bottom:0}.ex-poem-material-heading{grid-column:2;grid-row:1/3;margin-bottom:10px}.ex-poem-panel .ex-gallery-art-tray{grid-column:2;grid-row:3/7;align-self:start}.ex-gallery-viewport{height:470px;perspective:1100px}.ex-gallery-space{top:42%}.ex-gallery-view-note{font-size:8px;letter-spacing:1px}.ex-gallery-heading h4{font-size:28px}.ex-poem-library .ex-gallery-art-tray{grid-template-columns:repeat(6,minmax(0,1fr))}.ex-gallery-footer{grid-template-columns:1fr;gap:10px}.ex-gallery-actions{flex-direction:row;flex-wrap:wrap;align-items:center;gap:18px}.ex-gallery-footer>div>small{font-size:22px}.ex-gallery-edit{gap:13px;padding:16px}.ex-gallery-edit label{font-size:9px}.ex-gallery-edit>button{font-size:9px}.ex-gallery-view-controls{gap:15px}.ex-gallery-actions .ex-action{width:100%;justify-content:center}}
@media(max-width:480px){.ex-poem-panel{gap:0 14px;padding:18px 14px}.ex-poem-panel h5{font-size:20px}.ex-poem-lines{font-size:11px;line-height:2.2;letter-spacing:0}.ex-poem-material-heading strong{font-size:11px}.ex-poem-material-heading small{font-size:8px}.ex-poem-panel .ex-gallery-art-tray{grid-template-columns:repeat(2,minmax(0,1fr))}.ex-gallery-art-tray>button{padding:4px 2px}.ex-gallery-art-tray img{width:36px;height:36px}.ex-gallery-art-tray span{font-size:9px}.ex-poem-library .ex-gallery-art-tray{grid-template-columns:repeat(4,minmax(0,1fr))}.ex-gallery-viewport{height:370px;margin:0 -6px}.ex-gallery-view-controls label{font-size:8px}.ex-gallery-view-controls button{font-size:8px}.ex-gallery-edit{grid-template-columns:1fr 1fr}.ex-gallery-edit>div{grid-column:1/-1}.ex-gallery-footer p{font-size:10px}}
@media(prefers-reduced-motion:reduce){.ex-gallery-space,.ex-gallery-art-tray>button,.ex-poem-generate span{transition:none}.ex-poem-panel.is-changing .ex-poem-lines{animation:none}}
.ex-gallery-viewport{user-select:none;-webkit-user-select:none}

/* A room you can enter, with a small writing console hinged to its left wall. */
.ex-chapter-dialog .ex-gallery-builder.wrap{width:calc(100% - 40px);max-width:none}
.ex-gallery-heading{padding-inline:12px;margin-bottom:20px}
.ex-gallery-studio{grid-template-columns:minmax(0,1fr) 220px;gap:0;background:#c3cbb7}
.ex-gallery-stage-group{min-width:0}
.ex-gallery-viewport{height:clamp(530px,calc(100dvh - 155px),720px);border:0;background:linear-gradient(160deg,#e1e3d0,#b8c6ae 66%,#a2b498);perspective:1800px;perspective-origin:50% 44%;isolation:auto}
.ex-gallery-viewport:before{box-shadow:inset 0 -35px 60px #6a80551a}
.ex-gallery-builder.is-complete .ex-gallery-viewport{border:0}
.ex-gallery-space{left:48%;top:43%;transform:translate(-50%,-50%) scale(var(--gallery-scale,.95)) rotateX(calc(var(--gallery-pitch,-7)*1deg)) rotateY(calc(var(--gallery-yaw,-10)*1deg)) translateZ(-45px)}
.ex-gallery-right{height:550px;top:0;opacity:1;box-shadow:inset 0 -8px 0 #788d70}
.ex-gallery-right>.ex-right-wall-word{position:absolute;top:310px;left:105px;color:#69826088;transform:none;font-size:20px;letter-spacing:5px;pointer-events:none}
.ex-gallery-frames{left:290px;right:auto;top:100px;gap:40px}
.ex-gallery-frame{width:150px;height:185px;border-width:10px}
.ex-gallery-wall-word{left:62%;top:40px;font-size:11px;letter-spacing:3px}
.ex-surface-label{letter-spacing:3px}
.ex-gallery-view-note{bottom:15px;color:#526e48;background:#e8ecd9bd;left:50%;right:auto;transform:translateX(-50%);width:max-content;max-width:95%;padding:8px 15px;border-radius:18px;font-size:9px}
.ex-gallery-view-controls{padding:12px 18px;background:#1c3025;color:#c1ccae;gap:18px}
.ex-gallery-view-controls input{height:10px}
.ex-poem-wall-console{position:absolute;top:58px;left:260px;width:310px;padding:23px 22px 19px;transform-origin:0 50%;transform:translateZ(-13px) rotateY(90deg);background:linear-gradient(110deg,#ebe4cc,#f0ead6 48%,#ddd8bd);color:#354d3c;box-shadow:8px 7px 0 #859675,13px 12px 20px #3a503332;pointer-events:auto;backface-visibility:hidden;border:1px solid #a5b18c;user-select:none}
.ex-poem-wall-console:before{content:"";position:absolute;inset:8px;border:1px solid #a9aa8d66;pointer-events:none}
.ex-poem-wall-console h5{font:500 20px/1.5 var(--serif);margin:10px 0;color:#3a523e;letter-spacing:1px}
.ex-poem-wall-console .ex-poem-kicker{font-size:10px;letter-spacing:1px;color:#798166}
.ex-poem-instruction{font:11px/1.8 var(--sans);color:#797960;margin:6px 0 17px}
.ex-poem-wall-console .ex-poem-lines{display:grid;gap:14px;min-height:0}
.ex-poem-strip{display:grid;gap:7px;width:100%;padding:10px 12px 8px;text-align:left;border:0;color:#fff9e6;background:#394c60;box-shadow:2px 3px 0 #293e3f21;cursor:pointer;transform:rotate(-1.4deg);transition:translate .18s,box-shadow .18s;line-height:1.7}
.ex-poem-strip-1{background:#a36748;transform:rotate(1.3deg)}
.ex-poem-strip-2{background:#64754c;transform:rotate(-.7deg)}
.ex-poem-strip>span{font:400 15px/1.65 var(--serif);min-height:2.8em;letter-spacing:.5px}
.ex-poem-strip>small{font:9px var(--sans);letter-spacing:.5px;opacity:.75;justify-self:end;border-top:1px solid #ffffff35;padding-top:4px}
.ex-poem-strip:hover{translate:0 -3px;box-shadow:4px 7px 0 #293e3f26}
.ex-poem-strip:active{translate:1px 2px;box-shadow:none}
.ex-poem-strip:focus-visible{outline:3px solid #d8ad4c;outline-offset:4px}
.ex-poem-strip.is-spinning>span{animation:ex-strip-flow .15s ease-out infinite}
.ex-poem-strip.is-locked{box-shadow:2px 3px 0 #293e3f21,inset 0 0 0 1px #fff7d866}
.ex-poem-lock-status{font:10px/1.8 var(--sans);color:#73785e;min-height:32px;margin:16px 0 3px}
.ex-poem-wall-console .ex-poem-generate{font-size:10px;margin-top:8px;padding:9px 0;position:relative}
.ex-material-shelf.ex-poem-panel{position:relative;align-self:stretch;padding:24px 17px 17px;max-height:720px;overflow:auto;border:0;border-left:1px solid #6b805a30;box-shadow:none;background:linear-gradient(90deg,#c6ceb6,#d9dec7);color:#3d543d}
.ex-material-shelf.ex-poem-panel:before{display:none}
.ex-material-shelf .ex-poem-material-heading{display:grid;gap:9px;margin:0 0 19px;padding-bottom:17px;border-bottom:1px solid #84987144}
.ex-material-shelf .ex-poem-material-heading strong{font:500 16px/1.7 var(--serif)}
.ex-material-shelf .ex-poem-material-heading small{font-size:9px;line-height:1.9;color:#718366}
.ex-material-shelf .ex-gallery-art-tray{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.ex-material-shelf .ex-gallery-art-tray>button{background:#f2f0d849;border:1px solid #899a6e38;border-radius:3px;padding:7px 3px 9px;transition:translate .2s,box-shadow .2s}
.ex-material-shelf .ex-gallery-art-tray>button:hover{translate:0 -3px;box-shadow:0 5px 9px #51634224}
.ex-material-shelf .ex-gallery-art-tray>button[aria-pressed=true]{background:#f7e9b1;box-shadow:inset 0 0 0 1px #9b844b}
.ex-material-shelf .ex-gallery-art-tray img{width:64px;height:64px;filter:drop-shadow(0 3px 2px #3d4e2620)}
.ex-material-shelf .ex-gallery-art-tray span{font-size:10px;white-space:normal}
.ex-material-shelf .ex-poem-library{color:#526a46;margin:17px 0 0;padding-top:15px;border-bottom:0}
.ex-material-shelf .ex-poem-library summary{font-size:11px}
.ex-material-shelf .ex-poem-library .ex-gallery-art-tray{margin-top:15px}
.ex-material-shelf .ex-poem-library .ex-gallery-art-tray>button{background:#e3e5cc;color:#40563a;border-color:#8e9e7444}
.ex-poetry-piece{transform-style:preserve-3d;filter:drop-shadow(2px 8px 3px #33493638)}
.ex-free-surface{transform-style:preserve-3d}
.ex-poetry-piece>img{position:relative;z-index:2;transform:translateZ(12px);opacity:1;filter:contrast(1.12) saturate(1.14)}
.ex-piece-plinth{display:none}
.ex-gallery-floor .ex-poetry-piece{transform-origin:50% 100%;transform:translate(-50%,-100%) rotateX(-90deg) rotateZ(calc(var(--piece-angle,0)*1deg)) scale(var(--piece-scale,1));filter:drop-shadow(3px 4px 2px #33493626)}
.ex-gallery-floor .ex-piece-plinth{display:block;position:absolute;left:34px;right:34px;bottom:7px;height:10px;background:#b6b79a;box-shadow:5px 6px 5px #425c3b38;transform:translateZ(3px)}
.ex-gallery-floor .ex-piece-plinth:before{content:"";position:absolute;left:0;right:0;height:18px;top:-18px;background:#e7e4ca;transform-origin:bottom;transform:rotateX(68deg)}
.ex-gallery-floor .ex-piece-plinth:after{content:"";position:absolute;right:-8px;top:-4px;bottom:0;width:8px;background:#909d7d;transform-origin:left;transform:skewY(-28deg)}
@keyframes ex-strip-flow{from{opacity:.35;translate:0 4px}to{opacity:1;translate:0 0}}
@media(max-width:1050px){.ex-gallery-studio{grid-template-columns:minmax(0,1fr) 180px;gap:0}.ex-material-shelf.ex-poem-panel{padding:20px 11px}.ex-material-shelf .ex-gallery-art-tray img{width:54px;height:54px}.ex-gallery-viewport{height:570px}}
@media(max-width:760px){.ex-chapter-dialog .ex-gallery-builder.wrap{width:calc(100% - 20px)}.ex-gallery-studio{display:grid;grid-template-columns:1fr}.ex-gallery-stage-group{order:0}.ex-material-shelf.ex-poem-panel{display:block;order:1;max-height:none;overflow:visible;padding:19px}.ex-material-shelf .ex-poem-material-heading{margin-bottom:14px}.ex-material-shelf .ex-gallery-art-tray{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.ex-material-shelf .ex-gallery-art-tray img{width:48px;height:48px}.ex-material-shelf .ex-gallery-art-tray span{font-size:9px}.ex-gallery-viewport{height:490px;perspective:1200px}.ex-gallery-space{left:45%;top:43%}.ex-poem-wall-console{width:330px;left:310px;top:40px}.ex-poem-strip>span{font-size:16px}.ex-gallery-frames{left:370px;gap:25px}.ex-gallery-frame{width:135px}.ex-gallery-heading{padding:0 5px}.ex-gallery-heading h4{font-size:27px}.ex-gallery-heading>span{font-size:10px;line-height:1.8}.ex-gallery-view-controls{gap:12px}.ex-material-shelf .ex-poem-library .ex-gallery-art-tray{grid-template-columns:repeat(6,minmax(0,1fr))}}
@media(max-width:480px){.ex-gallery-viewport{height:420px}.ex-gallery-view-note{font-size:7px;letter-spacing:.4px;padding:7px 10px}.ex-material-shelf .ex-gallery-art-tray{grid-template-columns:repeat(4,minmax(0,1fr))}.ex-material-shelf .ex-poem-library .ex-gallery-art-tray{grid-template-columns:repeat(4,minmax(0,1fr))}.ex-gallery-frames{left:390px}.ex-poem-wall-console{left:340px;top:30px}}
@media(prefers-reduced-motion:reduce){.ex-poem-strip,.ex-material-shelf .ex-gallery-art-tray>button{transition:none}.ex-poem-strip.is-spinning>span{animation:none}}

/* A wall of language, a wall of pictures, and closed geometric sculptures. */
.ex-gallery-viewport{perspective:1700px;perspective-origin:50% 48%}
.ex-gallery-space{left:49%;top:44%}
.ex-poem-wall-console{left:48px;top:55px;width:350px;padding:0;transform:translateZ(16px);border:0;background:transparent;box-shadow:none;color:#334d3c}
.ex-poem-wall-console:before{display:none}
.ex-poem-wall-console h5{font:500 25px/1.45 var(--serif);margin:7px 0 9px;letter-spacing:1.4px;color:#344a40}
.ex-poem-wall-console .ex-poem-kicker{display:inline-block;font-size:9px;letter-spacing:2.4px;color:#697c6d}
.ex-poem-instruction{font-size:10px;line-height:1.8;margin:7px 0 17px;color:#718174;letter-spacing:.2px}
.ex-poem-instruction br{display:none}
.ex-poem-wall-console .ex-poem-lines{gap:11px;counter-reset:poem-line}
.ex-poem-strip{--poem-paper:#f5f1e7;--poem-edge:#b6b5a3;--poem-accent:#8b846d;position:relative;counter-increment:poem-line;gap:7px;width:100%;padding:15px 17px 11px 48px;border:1px solid var(--poem-edge);border-radius:3px;transform:none;background:linear-gradient(120deg,#ffffff68,transparent 72%),var(--poem-paper);color:#344a40;box-shadow:inset 0 0 0 4px #ffffff30,0 3px 10px #5a6b4b0a;overflow:hidden;transition:translate .25s,box-shadow .3s,border-color .3s}
.ex-poem-strip:before{content:'0' counter(poem-line);position:absolute;left:15px;top:20px;right:auto;bottom:auto;width:auto;background:none;font:10px/1.2 var(--sans);letter-spacing:1.2px;color:var(--poem-accent);pointer-events:none}
.ex-poem-strip:after{content:'';position:absolute;left:16px;right:16px;bottom:5px;height:1px;background:linear-gradient(90deg,transparent,var(--poem-edge),transparent);opacity:.4;pointer-events:none;transition:opacity .3s}
.ex-poem-strip-1{--poem-paper:#ebe7f1;--poem-edge:#b9b1c5;--poem-accent:#8c7b9d;transform:none;width:100%}
.ex-poem-strip-2{--poem-paper:#e4ede5;--poem-edge:#a7bba8;--poem-accent:#628f7c;transform:none;width:100%}
.ex-poem-strip>span{font:400 18px/1.65 var(--serif);min-height:1.65em;letter-spacing:.3px;text-wrap:pretty}
.ex-poem-strip>small{font-size:8px;border-top:0;padding:0;opacity:1;letter-spacing:1px;color:#7d8b80}
.ex-poem-strip:hover{translate:0 -2px;border-color:var(--poem-accent);box-shadow:inset 0 0 0 4px #ffffff65,0 4px 18px #f9ffe259}
.ex-poem-strip:hover:after,.ex-poem-strip.is-spinning:after{opacity:1}
.ex-poem-strip:active{translate:0 1px;box-shadow:inset 0 0 0 4px #ffffff45,0 0 14px #f9ffe269}
.ex-poem-strip:focus-visible{outline:2px solid #a994c3;outline-offset:4px}
.ex-poem-strip.is-spinning{border-color:var(--poem-accent);box-shadow:inset 0 0 0 4px #ffffff65,0 0 19px #fff7d563}
.ex-poem-strip.is-locked{box-shadow:inset 0 0 0 4px #ffffff50,0 2px 8px #6a7b5610}
.ex-poem-strip.is-locked>small{color:#4f7c68}
.ex-poem-lock-status{font-size:9px;line-height:1.7;min-height:18px;margin:13px 0 0;color:#758371;letter-spacing:.3px}
.ex-poem-wall-console .ex-poem-generate{margin-top:3px;padding:8px 0;border-top:0;border-bottom:1px solid #97a48c70;color:#566f60;font-size:10px;letter-spacing:.6px;width:max-content;min-width:145px;transition:color .2s,border-color .2s}
.ex-poem-wall-console .ex-poem-generate:hover{color:#8b72a5;border-bottom-color:#9d89b2}
.ex-gallery-frames{display:grid;grid-template-columns:155px 155px;grid-template-rows:180px 180px;left:465px;top:80px;gap:35px 28px;right:auto;width:338px;height:395px;transform:translate3d(0,0,28px);transform-style:preserve-3d;z-index:3}
.ex-gallery-frame{width:155px;height:180px;border-width:10px;box-shadow:4px 6px 0 #93a18c38,6px 9px 12px #465b3d24;transform:translate3d(0,0,1px);backface-visibility:visible;z-index:1}
.ex-gallery-frame b{font-size:29px}.ex-gallery-frame>span{gap:8px}
.ex-gallery-frame strong{font-size:9px;letter-spacing:1.5px}.ex-gallery-frame small{font-size:8px}
.ex-gallery-wall-word{top:31px;left:67%;font-size:10px;letter-spacing:2px}
.ex-material-shelf.ex-poem-panel{height:calc(clamp(530px,calc(100dvh - 155px),720px) + 52px);max-height:none;overflow:hidden;display:flex;flex-direction:column;padding-bottom:0}
.ex-material-shelf .ex-poem-material-heading{flex:0 0 auto;margin-bottom:10px;padding-bottom:13px}
.ex-shelf-note{font:10px/1.7 var(--sans);color:#667f59;margin:0 0 13px;flex:0 0 auto}.ex-shelf-note span{display:block;font-size:9px;color:#9b8051;margin-top:3px}
.ex-material-scroll{min-height:0;flex:1;overflow-y:auto;overflow-x:hidden;padding:2px 5px 16px 1px;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#8d9e78 #d2dac1;outline-offset:-3px}
.ex-material-scroll:focus-visible{outline:1px dashed #7c8c65}
.ex-material-shelf .ex-gallery-art-tray>button{position:relative;min-height:97px;border-color:transparent;background:#eef0dd4d}
.ex-material-shelf .ex-gallery-art-tray>button.is-poem-related{border-color:#a89c704d;background:#f4edcc66}
.ex-material-shelf .ex-gallery-art-tray>button.is-poem-related:after{content:'✦';position:absolute;right:5px;top:3px;color:#aa8b4f;font-size:9px}
.ex-poetry-piece.has-solid-model{overflow:visible;filter:none;transform-style:preserve-3d;transform-origin:50% 100%;transform:translate(-50%,-100%) rotateZ(calc(var(--piece-angle,0)*1deg)) scale(var(--piece-scale,1))}
.ex-solid-model{position:absolute;left:70px;top:140px;width:0;height:0;transform:translate3d(var(--model-offset-x,0px),var(--model-offset-y,0px),var(--model-offset-z,0px));transform-style:preserve-3d;pointer-events:none;overflow:visible}
.ex-solid-face{position:absolute;left:0;top:0;display:block;transform-origin:0 0;backface-visibility:visible;pointer-events:auto;border:0;cursor:grab}
.ex-gallery-floor .ex-poetry-piece.has-solid-model{transform-origin:50% 100%;transform:translate(-50%,-100%) rotateX(-90deg) rotateY(calc(var(--piece-angle,0)*1deg)) scale(var(--piece-scale,1));filter:none}
.ex-gallery-floor .ex-solid-model{transform:translate3d(var(--model-offset-x,0px),var(--model-offset-y,0px),var(--model-offset-z,0px))}
.ex-solid-shadow{display:none}
.ex-gallery-floor .ex-solid-shadow{display:block;position:absolute;left:25px;top:126px;width:90px;height:40px;border-radius:50%;background:radial-gradient(ellipse,#42563d3b,transparent 69%);transform:rotateX(90deg);transform-origin:50% 50%;pointer-events:none}
.ex-poetry-piece.has-solid-model .ex-piece-plinth{display:none}
.ex-poetry-piece.has-solid-model:after{inset:0 4px;border-radius:1px;transform:translateZ(1px);background:none}
@media(max-width:1050px){.ex-material-shelf.ex-poem-panel{height:622px}}
@media(max-width:760px){.ex-gallery-space{left:49%;top:43%}.ex-poem-wall-console{left:48px;top:55px;width:350px}.ex-gallery-frames{left:465px;top:80px;gap:35px 28px}.ex-gallery-frame{width:155px;height:180px}.ex-material-shelf.ex-poem-panel{height:360px;max-height:360px;overflow:hidden;display:flex}.ex-material-shelf .ex-gallery-art-tray{grid-template-columns:repeat(4,minmax(0,1fr))}.ex-material-shelf .ex-gallery-art-tray>button{min-height:85px}}
@media(max-width:480px){.ex-poem-wall-console{left:48px;top:55px}.ex-gallery-frames{left:465px}.ex-material-shelf.ex-poem-panel{height:345px;max-height:345px}}
@media(prefers-reduced-motion:reduce){.ex-poem-strip,.ex-poem-strip:after,.ex-poem-wall-console .ex-poem-generate{transition:none}.ex-poem-strip.is-spinning>span{animation:none}}
/* The interaction layer stays outside the rotating mesh tree. */
.ex-gallery-space{transition:none}
.ex-piece-tools{position:absolute;z-index:30;display:flex;align-items:center;gap:9px;padding:5px 6px 5px 11px;transform:translate(-50%,-100%);background:#f7f3e5;border:1px solid #9daa8b;border-radius:20px;box-shadow:0 3px 12px #324d3821;white-space:nowrap;pointer-events:auto;color:#53654e}
.ex-piece-tools>span{font:10px var(--serif)}
.ex-piece-tools>button{padding:6px 9px;border:0;border-radius:14px;background:#e6e7d4;color:#4b604b;font:10px var(--sans);cursor:pointer}
.ex-piece-tools>button:hover,.ex-piece-tools>button:focus-visible{background:#ddd4e8;color:#665277;outline:1px solid #a99aba;outline-offset:2px}
.ex-free-surface.is-drop-target{background:#fbffe91c;outline:2px dashed #728d63;outline-offset:-9px}
.ex-gallery-drag-ghost{filter:none}
.ex-gallery-drag-ghost[data-snap]:not([data-snap=""]):after{content:attr(data-snap-label);position:absolute;top:94%;left:50%;transform:translateX(-50%);padding:5px 10px;border:1px solid #93a483;border-radius:16px;background:#f5f2df;color:#50634b;font:10px var(--sans);white-space:nowrap}
