:root{--ink:#29372e;--muted:#778075;--wood:#bfa882;--paper:#fff;--ease:cubic-bezier(.2,.7,.15,1)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#fff;color:var(--ink);font-family:"PingFang SC","Microsoft Yahei",sans-serif}body{overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{border:0;background:none;font:inherit;color:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:2px solid #8a9c76;outline-offset:5px}.brand{position:fixed;top:30px;left:40px;z-index:25}.brand button{font:400 25px Georgia,serif;padding:5px 0;letter-spacing:-.035em}.scene{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;visibility:hidden;opacity:0;pointer-events:none;perspective:1400px;transition:opacity .48s var(--ease),visibility .48s}.scene.active{visibility:visible;opacity:1;pointer-events:auto}.model{position:relative;flex-shrink:0;transform-style:preserve-3d}.model>img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}.room-model{width:min(94vw,calc(100svh - 15px),1100px);aspect-ratio:1;transition:transform .75s var(--ease);transform-origin:43% 43%}body[data-scene=shelf] .room-model{transform:scale(1.8) translate(5%,10%) rotateY(-18deg)}body[data-scene=desk] .room-model{transform:scale(1.55) translate(14%,-3%) rotateY(-12deg)}.object-area{position:absolute;padding:0;border-radius:6px}.object-area span{position:absolute;top:-30px;left:50%;transform:translate(-50%,5px);white-space:nowrap;padding:6px 10px;border-radius:4px;font-size:11px;color:#46533e;background:#fffefa;box-shadow:0 2px 14px #33412c12;opacity:0;pointer-events:none;transition:opacity .15s,transform .15s}.object-area:hover span,.object-area:focus-visible span{opacity:1;transform:translate(-50%,0)}.object-area:hover{background:#ffffff0a;box-shadow:0 0 22px #e1e9d333}.shelf-area{left:31%;top:23%;width:20%;height:32%}.desk-area{left:14%;top:45%;width:25%;height:22%}.cafe-area{left:12.1%;top:38%;width:3.8%;height:8.8%}.design-area{left:20.4%;top:32.2%;width:3.8%;height:9%}.felt-area{left:44%;top:73%;width:17%;height:8%}.back-room{position:absolute;left:42px;top:88px;font-size:12px;padding:8px 0;z-index:20}.back-room:hover{color:#799063}.shelf-model{height:min(91svh,900px);aspect-ratio:13/15;transition:transform .8s var(--ease),opacity .8s var(--ease);transform:rotateY(20deg) scale(.84) translateX(-30px);opacity:0}.active .shelf-model{transform:none;opacity:1}.shelf-row{position:absolute;display:flex;gap:3%;align-items:flex-end;left:27.82%;width:48.55%;height:11.1%;padding-left:3%;perspective:900px;z-index:3}.research-row{bottom:64%;height:10.8%}.spatial-row{bottom:50%;height:10.8%}.shelf-label{position:absolute;left:-120px;bottom:10%;font-size:11px;color:var(--muted);letter-spacing:.08em;writing-mode:vertical-rl}.project-book{position:relative;width:17%;height:100%;padding:0;transform-style:preserve-3d;transition:transform .3s var(--ease);transform-origin:center bottom;outline-offset:0!important}.project-book:hover,.project-book:focus-visible{transform:translateY(-12px) translateZ(25px);z-index:15}.spine{position:absolute;inset:0;background:var(--book-color,#a6b199);border-radius:2px 3px 1px 1px;box-shadow:inset 4px 0 #ffffff20,inset -4px 0 #00000010,3px 1px 5px #29321d26;display:flex;flex-direction:column;align-items:center;padding:12px 3px 8px}.spine-title{writing-mode:vertical-rl;font-family:"Songti SC",STSong,serif;font-size:clamp(9px,1.25svh,14px);line-height:1.4;max-height:90%;letter-spacing:.08em;overflow:hidden;color:#34412f}.spine:after{content:"";width:65%;height:2px;background:#ffffff70;position:absolute;bottom:7px}.book-cover{position:absolute;height:100%;aspect-ratio:.72;left:7%;bottom:0;transform-origin:left center;transform:rotateY(-80deg);opacity:0;transition:transform .35s var(--ease),opacity .2s;backface-visibility:hidden;box-shadow:4px 3px 12px #24311f30;z-index:4;background:white;border:3px solid var(--book-color)}.book-cover img{width:100%;height:100%;object-fit:cover;display:block}.project-book:hover .book-cover,.project-book:focus-visible .book-cover{transform:rotateY(-12deg);opacity:1}.book-tooltip{position:absolute;left:50%;top:-35px;background:#fff;padding:6px 9px;font-size:11px;white-space:nowrap;box-shadow:0 2px 12px #31402612;transform:translateX(-50%);opacity:0;pointer-events:none}.project-book:hover .book-tooltip,.project-book:focus-visible .book-tooltip{opacity:1}.shelf-hint{position:absolute;bottom:15px;font-size:10px;color:#959b90;letter-spacing:.1em}.desk-model{width:min(94vw,calc(100svh * 1.02),1300px);aspect-ratio:15/14;transition:transform .8s var(--ease),opacity .8s var(--ease);transform:rotateY(-20deg) scale(.84) translateX(35px);opacity:0}.active .desk-model{transform:none;opacity:1}.monitor{position:absolute;left:37.8%;top:34.5%;width:21%;height:16.5%;background:#f8faf4;padding:4% 7%;padding:1.1% 1.2%;border-radius:1px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;overflow:hidden}.monitor h1{font:500 clamp(10px,1.45svh,17px)/1.5 "Songti SC",serif;margin:0 0 5%}.monitor p{font-size:clamp(7px,1.05svh,12px);line-height:1.75;margin:0 0 4%}.monitor a,.monitor button{font-size:clamp(7px,.95svh,11px);line-height:1.8;padding:0;border-bottom:1px solid #cbd4c0}.monitor a{margin-top:auto}.monitor button{margin-top:3%}.desk-cafe{left:12%;top:4%;width:18%;height:26%}.desk-design{left:49%;top:1%;width:17%;height:25%}#about-details{position:absolute;z-index:30;width:min(460px,86vw);padding:35px 40px;background:#fbfcf8;border:1px solid #e0e5d9;box-shadow:0 20px 100px #32412b1c;border-radius:4px}#about-details h2{font:26px Georgia,serif;margin:0 0 20px}#about-details p,#about-details a{font-size:12px;line-height:2;color:#64705e}.close-small{position:absolute;right:15px;top:10px;font-size:24px}dialog{border:0;padding:0;background:white;color:var(--ink)}dialog::backdrop{background:#ffffffdc;backdrop-filter:blur(9px)}#reader{width:100vw;height:100svh;max-width:none;max-height:none;margin:0;overflow:hidden}#reader[open]{animation:reader-in .4s var(--ease)}.reader-bar{height:74px;padding:0 35px;display:flex;align-items:center;gap:25px;border-bottom:1px solid #edf0e9;position:relative;z-index:20;background:white}.reader-bar h2{font-size:13px;font-weight:400;line-height:1.5;margin:0;color:#55604e;max-width:55%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.reader-bar button,.reader-bar a{font-size:12px}.reader-bar a{margin-left:auto;color:#8b9385;white-space:nowrap}.close{font-size:29px!important;width:35px;height:35px;line-height:1;margin-left:auto;flex-shrink:0}.close:hover{background:#f4f6ef;border-radius:50%}.reader-bar a:not([hidden])+.close{margin-left:0}#reader-body{height:calc(100svh - 74px);position:relative}.loading{height:100%;display:grid;place-items:center;color:#8a9383;font-size:12px}.reader-intro{position:absolute;top:21px;left:5%;right:5%;text-align:center;font-size:11px;color:#8a9383;line-height:1.8;margin:0;z-index:3}.book-reader{height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:58px 5% 65px;background:#fafbf8}.book-surface{position:relative;width:min(100%,1350px);height:calc(100% - 20px);display:flex;align-items:center;justify-content:center;perspective:2400px}.book-paper{position:relative;aspect-ratio:var(--ratio,1.5);width:100%;max-height:100%;background:#fff;box-shadow:0 9px 30px #3b482d16,0 1px 2px #3b482d20;isolation:isolate}.book-paper>img{display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:contain;cursor:zoom-in}.book-paper:after{content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;background:#8b806625;box-shadow:-4px 0 10px 2px #b5a5840b;pointer-events:none;z-index:4}.turning-leaf{position:absolute;left:50%;top:0;bottom:0;width:50%;transform-origin:left center;backface-visibility:hidden;z-index:8;background-color:white;background-size:200% 100%;background-position:right center;box-shadow:-1px 0 7px #35412c18;pointer-events:none}.turning-leaf.next{animation:turn-next .62s var(--ease) both}.turning-leaf.previous{left:0;transform-origin:right center;background-position:left center;animation:turn-prev .62s var(--ease) both}.book-controls{position:absolute;bottom:20px;left:0;right:0;display:flex;justify-content:center;gap:24px;align-items:center;color:#7f8977;font-size:11px}.book-controls button{font-size:20px;padding:4px 16px}.book-controls button:disabled{opacity:.2;cursor:default}.page-count{min-width:65px;text-align:center;font-variant-numeric:tabular-nums}.book-jump{font:inherit;border:0;border-bottom:1px solid #dce3d2;outline-offset:4px;width:35px;text-align:center;color:inherit;background:none}.vertical-reader{height:100%;overflow-y:auto;padding:65px max(7%,calc((100vw - 760px)/2)) 85px;scroll-snap-type:y proximity;overscroll-behavior:contain;background:#fafbf8}.portrait-sheet{width:100%;margin:0 0 55px;padding:0;display:block;position:relative;scroll-snap-align:start;scroll-margin-top:35px;transform:translateY(24px);opacity:.2;transition:transform .65s var(--ease),opacity .65s;background:white;box-shadow:0 6px 25px #34412a0b;cursor:zoom-in}.portrait-sheet.visible{opacity:1;transform:none}.portrait-sheet img{display:block;width:100%;height:auto;min-height:80px}.portrait-sheet small{display:block;color:#adb5a4;background:#fafbf8;font-size:9px;padding-top:10px;text-align:right}.vertical-controls{position:absolute;right:24px;bottom:24px;display:flex;align-items:center;gap:15px;padding:8px 13px;font-size:11px;border:1px solid #e8ece1;background:#ffffffed;border-radius:30px}.vertical-controls button{font-size:17px}.vertical-controls span{min-width:50px;text-align:center}.project-empty{display:grid;place-items:center;height:100%;padding:40px;text-align:center}.project-empty p{color:#87917b;font-size:12px;line-height:2}.project-empty a{display:inline-block;margin-top:15px;border-bottom:1px solid #bbc7ad;padding:8px;font-size:13px}#lightbox{width:100vw;height:100svh;max-width:none;max-height:none;margin:0;background:#fff;overflow:auto;text-align:center}#lightbox .close{position:fixed;top:22px;right:30px;background:#fff;z-index:20}#large-image{display:block;width:auto;height:auto;max-width:96%;margin:65px auto 25px}#status{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);font-size:11px;color:#7d8872;pointer-events:none}body:has(dialog[open]){overflow:hidden}[hidden]{display:none!important}@keyframes reader-in{from{opacity:0;transform:scale(.975)}to{opacity:1;transform:none}}@keyframes turn-next{0%{transform:rotateY(0);filter:brightness(1)}65%{filter:brightness(.78)}100%{transform:rotateY(-180deg);filter:brightness(.9)}}@keyframes turn-prev{0%{transform:rotateY(0)}100%{transform:rotateY(180deg)}}@media(max-width:700px){.brand{top:22px;left:24px}.brand button{font-size:23px}.room-model{width:100vw}.scene{padding-top:40px}.back-room{left:25px;top:69px;font-size:11px}.shelf-model{height:min(85svh,110vw);width:auto;max-width:99vw}.shelf-label{left:-45px;font-size:9px}.spine{padding:8px 1px 5px}.spine-title{font-size:9px}.book-tooltip{font-size:10px;top:-29px}.shelf-hint{bottom:35px}.desk-model{width:100vw}.monitor h1{font-size:8px;line-height:1.4;margin:0 0 3px}.monitor p{font-size:6px;line-height:1.6;margin:0 0 3px}.monitor a,.monitor button{font-size:6px;line-height:1.6}.monitor button{margin-top:0}.reader-bar{height:64px;padding:0 18px;gap:15px}.reader-bar h2{font-size:11px;max-width:52%}.reader-bar button,.reader-bar a{font-size:10px}#reader-body{height:calc(100svh - 64px)}.reader-intro{font-size:10px;top:16px}.book-reader{padding:55px 12px 70px}.book-controls{gap:13px;bottom:25px}.vertical-reader{padding:65px 18px 80px}.vertical-controls{right:15px;bottom:20px}.portrait-sheet{margin-bottom:35px}.close{font-size:26px!important}#large-image{max-width:100%;margin-top:70px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.portrait-sheet{opacity:1;transform:none}}
.monitor{padding:.7% .9%;justify-content:flex-start}.monitor h1{flex-shrink:0;font-size:clamp(8px,1.35svh,14px);line-height:1.35;margin:0 0 3%}.monitor p{flex-shrink:0;font-size:clamp(6px,.92svh,10px);line-height:1.6;margin:0 0 3%}.monitor a,.monitor button{flex-shrink:0;font-size:clamp(6px,.9svh,10px);line-height:1.5;margin-top:0}.monitor a{margin-top:auto}@media(max-width:700px){.desk-model{width:130vw;max-width:none}.monitor h1{font-size:8px;margin-bottom:2px}.monitor p{font-size:6px;line-height:1.5;margin-bottom:2px}.monitor a,.monitor button{font-size:6px;line-height:1.45}}
/* v3: one room, one shelf, a door into it. */
:root{--ink:#424c55;--muted:#7e8790;--wood:#bfa8a1;--paper:#fff}button:focus-visible,a:focus-visible{outline-color:#a28091}.back-room:hover{color:#a28091}.brand{z-index:40}.scene{transition:opacity .55s var(--ease),visibility .55s}body[data-scene=entrance] .brand{color:#f2f4ee;text-shadow:0 1px 8px #254e4c40}body[data-scene=entrance] #world{visibility:hidden}#entrance{position:fixed;inset:0;z-index:35;overflow:hidden;background:#80b5bd;transition:opacity .7s ease;perspective:1000px}.entrance-landscape{position:absolute;inset:0;background:url('assets/entrance-sky.png') center center/cover}.door-stage{position:absolute;width:clamp(175px,23vh,300px);height:clamp(350px,46vh,600px);left:50%;bottom:22.5%;transform:translateX(-50%);perspective:1000px;transition:transform 1.2s cubic-bezier(.55,.04,.35,1)}.door-frame{position:absolute;inset:0;border:10px solid #81b7ab;border-bottom-width:6px;background:#1c6167;box-shadow:inset 3px 0 6px #184e54,4px 1px 0 #568a84,7px 3px 0 #427772,0 0 0 1px #a5d0ba;transform-style:preserve-3d}.door-frame:before{content:'';position:absolute;inset:-9px;border-top:3px solid #cee2ca;border-left:3px solid #bed9bf;pointer-events:none}.door-interior{position:absolute;inset:0;background:#c2d0d3 url('assets/room-detail-day.png?v=18') 50% 50%/180% auto no-repeat;filter:brightness(.72)}.door-leaf{position:absolute;inset:0;background:linear-gradient(100deg,#8fbeb0,#a2caba 55%,#82b8a9);border:3px solid #b5d7c2;box-shadow:inset 3px 1px 0 #c7dfca,inset -3px -2px 0 #548e83,-2px 0 7px #164b4a44;transform-origin:100% 50%;transform:rotateY(-8deg);transition:transform 1.2s cubic-bezier(.35,.1,.2,1);transform-style:preserve-3d}.door-leaf:hover{transform:rotateY(-17deg)}.door-panel{position:absolute;left:13%;width:74%;border:5px solid #7eafa0;box-shadow:inset 3px 3px 5px #42796d44,2px 2px 1px #c5ddc5;background:linear-gradient(125deg,#8fb5a7,#a6c7b3)}.door-panel.upper{top:8%;height:47%}.door-panel.lower{top:65%;height:27%}.door-handle{position:absolute;left:5%;top:58%;width:20px;height:7px;border-radius:3px;background:linear-gradient(#ddc795,#8c7655);box-shadow:1px 3px 3px #224b4255}.door-shadow{position:absolute;left:5%;bottom:-2%;width:140%;height:14%;background:#173d3670;filter:blur(6px);transform:skewX(-65deg);transform-origin:left top}.entrance-hint{position:absolute;bottom:8%;left:0;right:0;text-align:center;color:#f5f6ef;font-size:13px;letter-spacing:.1em;text-shadow:0 1px 10px #1c453a}.opening .door-leaf{transform:rotateY(-105deg)}.opening .entrance-hint{opacity:0}.departing{opacity:0;pointer-events:none}.departing .door-stage{transform:translateX(-50%) scale(3.5)}
.view-tools{position:absolute;right:35px;bottom:27px;z-index:15;display:flex;gap:16px}.view-tools button{font-size:11px;border-bottom:1px solid #c9cdd0;padding:8px 2px;color:#6e7a84}.view-tools button:hover{color:#8d657b}.view-tools button[aria-pressed=true]{color:#8d657b}.room-model{filter:drop-shadow(0 13px 12px #51616a12)}#orbit-host{position:absolute;inset:75px 0 60px;z-index:5;cursor:grab;touch-action:none}#orbit-host:active{cursor:grabbing}#orbit-host canvas{display:block;width:100%;height:100%}#orbit-hint{position:absolute;left:30px;bottom:30px;font-size:11px;color:#84929c;z-index:10}
.shelf-scroll{width:100%;overflow-x:auto;overflow-y:visible;padding:130px 30px 100px;scrollbar-width:thin;scrollbar-color:#c9b5b0 transparent}.single-shelf{width:min(1100px,90vw);min-width:950px;height:265px;margin:auto;position:relative;perspective:1100px}.shelf-backboard{position:absolute;inset:0;background:linear-gradient(180deg,#ddd4d0,#d1c2bc);border:16px solid #c7b5ad;border-bottom:0;box-shadow:inset 0 12px 25px #70636325,0 8px 35px #5f65700b}.all-books{position:absolute;bottom:18px;left:27px;right:27px;height:218px;display:flex;gap:3px;align-items:flex-end;justify-content:space-between;perspective:1100px}.shelf-plank{position:absolute;bottom:0;left:-8px;right:-8px;height:20px;background:linear-gradient(#e5d8ce 0 22%,#c3aea5 23% 85%,#b5a198);box-shadow:0 15px 18px #554e4b22;border-radius:2px;z-index:5;pointer-events:none}.all-books .project-book,.filler-book{display:block;position:relative;width:var(--book-width);flex:1 0 var(--book-width);height:var(--book-height);max-width:31px;transform-style:preserve-3d;transition:transform .3s var(--ease);transform-origin:bottom}.all-books .spine{padding:0;box-shadow:inset 2px 0 #ffffff30,inset -3px 0 #00000013,2px 1px 3px #29321d22;border-radius:2px 3px 0 0}.all-books .spine:after{width:75%;height:1px;bottom:15px;background:#ffffff35}.all-books .project-book:hover,.all-books .project-book:focus-visible{transform:translateY(-13px) translateZ(65px);z-index:20}.filler-book:hover{transform:translateY(-5px) translateZ(12px)}.all-books .book-cover{left:0;transform:rotateY(-88deg);border-width:2px}.all-books .project-book:hover .book-cover,.all-books .project-book:focus-visible .book-cover{transform:rotateY(-22deg);opacity:1}.all-books .book-tooltip{top:-42px;color:#56616b;z-index:30}.bookmark{position:absolute;bottom:-5px;left:35%;height:13px;width:6px;background:#896f7c;clip-path:polygon(0 0,100% 0,100% 100%,50% 75%,0 100%);z-index:6}.shelf-hint{color:#8d9499;font-size:11px;bottom:18%;text-align:center}.touch-hint{display:none}.desk-model{width:min(1200px,94vw,calc((100svh - 70px) * 1.3333));aspect-ratio:4/3}.monitor{background:#ebedf1;padding:1% 1.2%;justify-content:center;transform:none}.monitor h1{font:500 clamp(11px,1.5vw,21px)/1.5 'Songti SC',serif;margin-bottom:5%}.monitor p{font-size:clamp(8px,1vw,12px);line-height:1.65;margin-bottom:4%}.monitor a,.monitor button{font-size:clamp(8px,.9vw,11px);line-height:1.5;flex-shrink:0;border-color:#b4bdc8;margin-top:2%}.monitor a{margin-top:0}#about-details{background:#f9fafb;border-color:#d5dce2}#about-details p,#about-details a{color:#65727e}.craft-model{width:min(1100px,96vw);aspect-ratio:1.4}.craft-project{position:absolute;left:50%;bottom:0;transform:translateX(-50%);font:18px/1.8 'Songti SC',serif;white-space:nowrap}.craft-project span{display:block;font:11px/2 sans-serif;color:#8b7583;border-bottom:1px solid #d2c3cc;width:max-content;margin:8px auto}.project-intro{height:100%;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,1fr);align-items:center;gap:6vw;padding:5vh 7vw}.project-cover-large{padding:0;height:100%;max-height:70svh;display:flex;justify-content:center;align-items:center}.project-cover-large img{display:block;max-width:100%;max-height:100%;object-fit:contain}.project-summary h1{font:400 clamp(24px,3vw,40px)/1.5 'Songti SC',serif;max-width:16em;margin:12px 0 20px}.project-summary p{font-size:13px;line-height:2;color:#77818a;max-width:28em}.project-category{font-size:11px!important;color:#9b8491!important}.read-project{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #bba6b1;padding:15px 0;margin-top:34px;min-width:150px;font-size:13px}.read-project span{margin-left:35px}.reader-bar h2{color:#596772}.reader-intro{color:#89939b}.book-reader,.vertical-reader,.portrait-sheet small{background:#f5f6f8}.vertical-controls{border-color:#dbe0e6}.book-jump{border-color:#bbc7d0}
@media(max-width:700px){.door-stage{height:42svh;width:21svh;bottom:23%}.door-frame{border-width:7px;border-bottom-width:4px}.entrance-landscape{background-position:center}.view-tools{right:20px;bottom:22px}.view-tools button{font-size:10px}.room-model{width:104vw}.single-shelf{margin:0 25px}.shelf-scroll{padding-left:0;padding-right:25px}.shelf-hint{bottom:20%;font-size:10px}.touch-hint{display:block;margin-top:10px}.desk-model{width:128vw;max-width:none;aspect-ratio:4/3}.monitor h1{font-size:11px;margin-bottom:4px}.monitor p{font-size:7px;margin-bottom:4px;line-height:1.5}.monitor a,.monitor button{font-size:7px;line-height:1.5}.craft-project{font-size:14px;bottom:-15%}.project-intro{display:flex;flex-direction:column;gap:20px;overflow:auto;align-items:stretch;padding:25px 25px 45px}.project-cover-large{height:42svh;flex-shrink:0}.project-summary h1{font-size:25px;margin:5px 0 10px}.project-summary p{font-size:12px}.read-project{margin-top:12px}#orbit-hint{bottom:70px;left:0;right:0;text-align:center;font-size:10px}}
.door-leaf{transform:translateZ(2px) rotateY(8deg)}.door-leaf:hover{transform:translateZ(2px) rotateY(15deg)}.opening .door-leaf{transform:translateZ(2px) rotateY(105deg)}
.desk-model{container-type:inline-size}.monitor{justify-content:flex-start;padding:.75% 1%}.monitor h1{font-size:1.7cqw;line-height:1.35;margin:0 0 3%}.monitor p{font-size:1.15cqw;line-height:1.55;margin:0 0 3%}.monitor a,.monitor button{font-size:1.05cqw;line-height:1.5;margin:0 0 2%}.monitor a{margin-top:auto}
.screen-zoom{display:none}@media(max-width:700px){.screen-zoom{display:block;position:absolute;bottom:16%;font-size:12px;color:#8d7584;border-bottom:1px solid #d4c3cd;padding:8px}}

/* Bright room / accessible single-row project shelf */
#shelf-view{background:linear-gradient(180deg,#fff 0%,#f4f8fb 70%,#f8f1ee 70.2%,#fdfaf8 100%)}
.shelf-scroll{padding:110px 34px 100px;overflow-x:auto}
.single-shelf{min-width:0;width:min(980px,92vw);height:330px;margin:auto}
.shelf-backboard{border:17px solid #f1e4d6;background:linear-gradient(#fbf8f4,#fffdfb);box-shadow:inset 0 12px 20px #a38e741a,0 17px 40px #a68f771a}
.all-books{height:270px;left:32px;right:32px;gap:11px;justify-content:center}
.all-books .project-book{width:72px;max-width:none;flex:1 1 72px;transition:flex .45s var(--ease),transform .45s var(--ease);min-width:48px}
.all-books .project-book:is(:hover,:focus-visible){flex:2.65 1 190px;transform:translateY(-10px);z-index:20}
.all-books .spine{justify-content:center;padding:15px 5px}
.all-books .spine-title{font:15px/1.4 'Songti SC',serif;letter-spacing:.08em;color:#344654;transition:opacity .2s}
.all-books .project-book:is(:hover,:focus-visible) .spine-title{opacity:0}
.all-books .book-cover{left:0;width:100%;aspect-ratio:auto;transform:rotateY(-85deg);border:5px solid var(--book-color);background:var(--book-color);display:flex;flex-direction:column;justify-content:center;gap:10px;padding:10px}
.all-books .book-cover img{height:76%;object-fit:cover;border:1px solid #ffffff70}
.all-books .book-cover>span{font:14px/1.5 'Songti SC',serif;color:#344654}
.all-books .project-book:is(:hover,:focus-visible) .book-cover{transform:rotateY(0);opacity:1}
.all-books .filler-book{flex:0 0 20px;width:20px;max-width:20px;transform:none!important;transition:none}
.shelf-plank{background:linear-gradient(#f5e9dc 0 22%,#e1c9b3 23% 85%,#cfb49e)}
.shelf-hint{bottom:15%;color:#677d8b;letter-spacing:0}
.desk-model{width:min(1400px,100vw,calc((100svh - 100px)*1.3333));margin-top:88px}
.monitor{background:transparent;padding:0;justify-content:center;align-items:center;transform:rotateX(0)}
.monitor #about-more{font:italic 4cqw/1 Georgia,serif;width:100%;height:100%;border:0;margin:0;color:#5d7183;text-shadow:0 1px 0 white}
.monitor #about-more:hover{color:#b2768e}
.craft-model{width:min(1200px,100vw,calc((100svh - 110px)*1.4));margin-top:70px}
.craft-project{bottom:3%;background:#ffffffdd;padding:8px 22px;border-radius:4px;font-size:16px}
.paper-gallery{display:block;border:0;width:100%;height:100%}
@media(max-width:700px){.single-shelf{width:700px;margin:0 20px;height:290px}.all-books{height:235px;gap:8px;left:25px;right:25px}.all-books .project-book{min-width:51px}.all-books .spine-title{font-size:13px}.shelf-scroll{padding-left:0;padding-right:20px}.desk-model{width:100vw;margin-top:20px}.craft-model{width:100vw;margin-top:10px}.craft-project{bottom:-12%;font-size:13px}.screen-zoom{bottom:15%}.shelf-hint{bottom:14%}}
