/* The shelf, books, pin, cord and pendant are real WebGL geometry. */
:root{--paper:#fcfaf9}header{height:86px}.intro{padding-top:28px}.intro-line{margin-top:16px;margin-bottom:27px}h1{font-size:clamp(32px,3.6vw,49px)}.intro-side p{font-size:11px;line-height:1.7;margin:8px 0}.intro-side .hand-note{font-size:19px}.instruction{display:none}.studio-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;border-top:1px solid #e6dddf;padding-top:21px}.studio-heading .eyebrow{font-size:9px;letter-spacing:1.4px}.studio-heading p{font-size:10px;color:#8d777f;line-height:1.6;margin:9px 0 0}.studio-tools{display:flex;gap:6px;flex-shrink:0}.studio-tools button{font-size:10px;padding:10px 12px;border:1px solid #e5dade;border-radius:20px;background:#fff9;transition:background .2s}.studio-tools button:hover,.studio-tools button[aria-pressed=true]{background:#f5d5e2;border-color:#ecc0d1}.studio{width:100%;height:clamp(470px,52vw,690px);position:relative;margin-top:0;border-radius:8px;isolation:isolate;overflow:hidden;background:#fcfaf9}.studio canvas{width:100%;height:100%;display:block;touch-action:none;outline:none;position:relative;z-index:1}#shelf-canvas,#shelf-canvas:focus,#shelf-canvas:focus-visible{outline:none!important;outline-offset:0;box-shadow:none}.scene-caption{position:absolute;bottom:52px;left:20px;right:20px;display:flex;justify-content:space-between;font-size:8px;letter-spacing:1.6px;color:#9b838e;pointer-events:none;z-index:2}.pendant-note{position:absolute;right:1%;top:20%;color:#af7d91;font:italic 16px var(--serif);pointer-events:none;z-index:2;opacity:0;transition:opacity .3s}.scene-ready .pendant-note{opacity:1}#scene-status{position:absolute;bottom:8px;left:10px;right:10px;text-align:center;font-size:10px;letter-spacing:.3px;line-height:1.5;color:#8f7480;pointer-events:none;z-index:2;min-height:18px}.scene-loading{position:absolute;inset:0;display:grid;place-content:center;color:#ab6b84;font-size:12px;z-index:2;background:#fcfaf9}.scene-ready .scene-loading{display:none}.scene-failed .scene-loading{padding:40px;text-align:center;line-height:2}.interaction-guide{border-top:1px solid #e4dade;border-bottom:1px solid #e4dade;padding:14px 0;color:#8c747f}.interaction-guide summary{font-size:10px;cursor:pointer;list-style:none;display:flex;justify-content:space-between}.interaction-guide summary::-webkit-details-marker{display:none}.interaction-guide p{font-size:11px;line-height:1.9;max-width:760px;margin-top:20px}.plain-projects{display:flex;flex-wrap:wrap;gap:9px;margin-block:18px 6px}.plain-projects button{font-size:11px;padding:10px 14px;border:1px solid #e4cdd7;border-radius:3px}.plain-projects button:hover{background:#f5d9e4}#press-ring{display:none;position:absolute;z-index:8;width:38px;height:38px;border:2px solid #eab8cb;border-top-color:#9d4c6d;border-radius:50%;pointer-events:none;transform:translate(-50%,-50%);box-shadow:0 0 0 4px #fff8}#press-ring.pressing{display:block;animation:press-ready .36s linear forwards}#press-ring.grabbing{display:block;width:13px;height:13px;border:0;background:#d180a0;box-shadow:0 0 0 7px #efbcd14d}@keyframes press-ready{from{rotate:0deg;scale:.65}to{rotate:290deg;scale:1}}footer{margin-top:10px;padding-top:19px}.studio-error-link{display:block;margin-top:16px;color:#984c6c;text-decoration:underline}.preview{z-index:16;max-width:calc(100vw - 24px)}
@media(max-width:760px){header{height:74px}.intro{padding-top:25px}.intro-line{display:flex;align-items:center;gap:15px;margin-bottom:23px}h1{font-size:29px;line-height:1.4}.intro-side{display:block;margin:0;max-width:135px}.intro-side .hand-note{font-size:14px}.intro-side p{font-size:9px;margin-top:8px;line-height:1.7}.intro-side .instruction{display:none}.studio-heading{display:block;padding-top:18px}.studio-heading .eyebrow{font-size:8px}.studio-heading p{font-size:9px}.studio-tools{margin-top:14px;gap:7px}.studio-tools button{padding:9px 11px;font-size:9px}.studio{height:420px;margin-top:0;overflow:visible}.scene-caption{left:2px;right:2px;bottom:45px;font-size:6px;letter-spacing:.5px}#scene-status{font-size:9px;bottom:8px;left:0;right:0}.pendant-note{display:none}.interaction-guide{margin-top:5px}.interaction-guide p{font-size:10px}.plain-projects button{font-size:10px}.bookmarks{position:relative}.studio canvas{border-radius:6px}}
@media(max-width:380px){.intro-line{display:block}.intro-side{max-width:none;margin-top:15px}.intro-side p{display:none}.studio{height:350px}}
@media(max-width:760px){.intro-line{display:block}.intro-side{max-width:none;margin-top:13px}.intro-side p{display:none}.studio{height:300px}}
@media(prefers-reduced-motion:reduce){#press-ring.pressing{animation:none}.pendant-note{transition:none}}
.studio-heading{border-top:0;padding-top:24px}.shelf-title{font:400 18px Arial,'Microsoft YaHei',sans-serif;letter-spacing:0;margin:0}.project-hero-single{grid-template-columns:1fr;height:300px}.project-hero-single .art{padding:20px}.project-hero-single .orb{width:200px}.project-hero-single .loop{height:220px;width:100px}.project-hero-single .grid-art{width:180px}.project-hero-single .arch{width:160px}.project-hero-single .waves{width:230px}.project-hero-single .petal{width:100px}.project-pending{margin:30px 7%;font-size:12px;color:#7f7179}.poetry-mark{font:28px 'Songti SC',SimSun,serif;text-align:center;color:#795065}.poetry-mark small{display:block;font:14px Georgia;margin-top:24px}.poetry-page{padding:48px 9% 20px;min-height:400px}.poetry-page h2{font:400 clamp(30px,4vw,44px) 'Songti SC',SimSun,serif;line-height:1.4;margin:0 0 15px}.poetry-book-heading{border-bottom:1px solid #e6dce0;padding-bottom:26px}.poetry-book-heading p,.poem-author{font:16px Georgia;color:#9c6e84;margin:0}.poems-empty{font-size:12px;color:#918089;margin-top:35px}.poem-index{padding:0;list-style:none;margin:26px 0}.poem-index li{border-bottom:1px solid #e4dade}.poem-index button{display:flex;justify-content:space-between;width:100%;padding:20px 0;text-align:left;font:20px 'Songti SC',SimSun,serif}.poem-index button span{font:14px Arial;color:#ab708b}.poem-original{white-space:pre-wrap;overflow-wrap:anywhere;font:18px/2.1 'Songti SC',SimSun,serif;margin:40px 0 50px;tab-size:4}.poetry-page .reader-bottom{margin-inline:0}
@media(max-width:760px){.studio-heading{padding-top:22px}.shelf-title{font-size:17px}.poetry-page{padding:30px 7% 18px;min-height:300px}.poem-original{font-size:16px;line-height:2}.project-hero-single{height:220px}.project-hero-single .orb{width:160px}}
.project-thumbnail{display:block;width:100%;height:100%;object-fit:contain;background:#d7e8f3}.folio-reader{padding-bottom:1px}.folio-head{padding:28px 5% 20px}.folio-head h2{font:400 clamp(32px,5vw,52px) Georgia,serif;letter-spacing:-1px;margin:10px 0}.folio-head>p{font-size:12px;color:#756a70;margin:0}.folio-actions{display:flex;gap:10px;margin-top:18px}.folio-actions>a,.folio-actions>button{font-size:11px;border:1px solid #ddd0d6;padding:10px 14px;border-radius:3px;line-height:1.2}.folio-actions>a:hover,.folio-actions>button:hover{background:#f2d9e4}.folio-controls{display:flex;justify-content:space-between;align-items:center;margin:0 5%;padding:8px 0;border-top:1px solid #e1d8dc;gap:10px}.folio-controls button{width:42px;height:38px;font-size:20px;border-radius:3px}.folio-controls button:hover:enabled{background:#f1d9e3}.folio-controls button:disabled{opacity:.25;cursor:default}#folio-page-label{font-size:11px;color:#735968;text-align:center}.folio-media{margin:0 5%;width:90%;overflow:auto;border:1px solid #ded9d9;background:#fff;max-height:72dvh;overscroll-behavior:contain}.folio-media img{display:block;width:100%;height:auto;max-width:none}.folio-media.is-zoomed img{width:1600px}.folio-page-tabs{margin:17px 5% 0;display:flex;gap:6px;flex-wrap:wrap}.folio-page-tabs button{display:flex;gap:7px;align-items:center;border:1px solid #e1d4db;border-radius:3px;padding:8px 10px;font-size:9px}.folio-page-tabs button span{font:10px Georgia;color:#9c7b8d}.folio-page-tabs button[aria-current=page]{background:#f0d1df;border-color:#e7b2c9}.folio-source-note{margin:18px 5% 0;font-size:10px;line-height:1.8;color:#8f7f87}.folio-reader>.reader-bottom{margin:22px 5% 0}.folio-actions button[aria-pressed=true]{background:#f0d1df}
@media(max-width:760px){.folio-head{padding:23px 5% 16px}.folio-head h2{font-size:34px}.folio-head>p{font-size:11px}.folio-actions{margin-top:15px}.folio-actions>a,.folio-actions>button{font-size:10px;padding:9px 12px}.folio-page-tabs button{font-size:8px;padding:7px 9px}.folio-source-note{font-size:9px}.folio-controls{padding:4px 0}#folio-page-label{font-size:9px}}
.folio-media{max-height:none}.folio-media.is-zoomed{max-height:72dvh}
.contact-email{display:inline-block;color:#a65074;border-bottom:1px solid #ddb3c5;padding:8px 0;overflow-wrap:anywhere}
body.opening-book{overflow:hidden}
#book-opening{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;overflow:hidden;--opening-shade:0}
#book-opening::backdrop{background:rgb(252 250 249 / var(--opening-shade));backdrop-filter:blur(3px)}
#book-opening canvas{width:100%;height:100%;display:block;pointer-events:none}
.opening-label{position:absolute;bottom:6%;left:15%;right:15%;margin:0;text-align:center;color:#93677b;font:14px Georgia,'Songti SC',SimSun,serif;letter-spacing:1px}
.opening-cancel{position:absolute;right:5%;top:5%;border:1px solid #e3d1da;border-radius:30px;padding:12px 18px;background:#fcfaf9dd;font-size:12px;color:#775e6b}
#reader[open] #reader-body{animation:reader-reveal .25s ease-out}
@keyframes reader-reveal{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){#reader[open] #reader-body{animation:none}}
header{margin-left:6.5%}main{padding-left:6.5%}
.plain-projects[hidden]{display:none}
#scene-status{position:absolute;inset:auto;width:1px;height:1px;min-height:0;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
#book-opening{display:block;z-index:40;background:rgb(252 250 249 / var(--opening-shade));transition:none}
#book-opening[hidden]{display:none}
#book-opening canvas{pointer-events:auto;touch-action:none}
.book-toolbar{position:absolute;left:4.5%;right:4.5%;top:24px;display:flex;align-items:center;justify-content:space-between;gap:20px;pointer-events:none;color:#765968}
.book-toolbar h2{font:400 20px Georgia,'Songti SC',SimSun,serif;margin:0 0 5px;letter-spacing:.3px}
.book-toolbar #book-author{font-size:10px;color:#9f8792}
.book-actions{display:flex;align-items:center;gap:18px;pointer-events:auto}
.book-actions button,.book-actions a{font-size:11px;padding:9px 0;background:none;color:#805d6e;white-space:nowrap}
.book-actions button:hover,.book-actions a:hover{color:#b55780}
.book-actions button:disabled{opacity:.35;cursor:default}
.book-actions [hidden]{display:none}
.book-pagination{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:20px;color:#916d80;font-size:11px;white-space:nowrap}
.book-pagination button{width:44px;height:40px;border-radius:50%;font-size:24px;line-height:1;background:#f1dce655;transition:background .2s}
.book-pagination button:hover:enabled{background:#ebc8d8}
.book-pagination button:disabled{opacity:.2;cursor:default}
#book-page{min-width:190px;text-align:center}
#book-retry{position:absolute;top:47%;left:50%;transform:translateX(-50%);padding:14px 20px;background:#fffaf7;color:#995a76;border:1px solid #e3c7d3}
#book-retry[hidden]{display:none}
.book-accessible{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:pre-wrap}
@media(max-width:760px){.book-toolbar{top:20px;left:5%;right:5%;align-items:flex-start;gap:12px}.book-toolbar h2{font-size:17px}.book-actions{gap:12px;flex-wrap:wrap;justify-content:flex-end;max-width:230px}.book-actions button,.book-actions a{font-size:10px;padding:5px 0}.book-pagination{bottom:26px;gap:10px;font-size:10px}#book-page{min-width:165px}.book-pagination button{width:39px;height:38px}}
.book-toolbar{background:#fcfaf9e8;border-radius:6px;padding:10px 14px;left:3.5%;right:3.5%;top:12px;backdrop-filter:blur(8px)}
.book-pagination{padding:4px 10px;background:#fcfaf9e8;border-radius:40px;backdrop-filter:blur(8px);bottom:18px}
body.opening-book>header,body.opening-book main .studio-heading,body.opening-book main footer{opacity:0}
.book-pagination #book-next.book-return{width:auto;min-width:88px;padding:0 15px;border-radius:22px;font-size:11px;white-space:nowrap}
.preview{transform:translateY(9px) scale(.975);transition:opacity .16s ease,transform .2s ease,left .12s ease-out,top .12s ease-out!important;will-change:opacity,transform}
.preview.visible{transform:translateY(0) scale(1);transition:opacity .2s ease,transform .4s cubic-bezier(.2,.8,.25,1.12),left .12s ease-out,top .12s ease-out!important}
#preview-art{overflow:hidden}
#preview-art>.project-thumbnail,#preview-art>.art{transform:scale(1.018);transition:transform .42s ease-out!important}
.preview.visible #preview-art>.project-thumbnail,.preview.visible #preview-art>.art{transform:scale(1)}
.preview.positioning{transition:none!important}
@media(prefers-reduced-motion:reduce){.preview{transform:translateY(4px) scale(.995);transition:opacity .18s ease,transform .26s ease-out,left .1s ease-out,top .1s ease-out!important}.preview.visible{transform:translateY(0) scale(1);transition:opacity .2s ease,transform .28s ease-out,left .1s ease-out,top .1s ease-out!important}#preview-art>.project-thumbnail,#preview-art>.art{transform:none;transition:none!important}.preview.positioning{transition:none!important}}

.studio.sharing-loading #shelf-canvas{opacity:0;pointer-events:none}.studio.sharing-loading .scene-loading{display:grid}

.language-switch{display:inline-flex;align-items:center;gap:8px;white-space:nowrap;font:11px/1.4 Arial,'Microsoft YaHei',sans-serif;color:#b6a4ad;letter-spacing:.2px}
.language-switch button{border:0;background:transparent;padding:8px 2px;color:#9a858f;font:inherit;cursor:pointer;transition:color .15s}
.language-switch button[aria-pressed=true]{color:#694655;font-weight:600}.language-switch button:hover{color:#ab5e80}.language-switch button:focus-visible{outline:1px solid #9a7d8b;outline-offset:3px;border-radius:2px}
.book-actions .language-switch{margin-left:2px}.book-actions .language-switch button{font-size:11px;padding:6px 2px}.reader-toolbar>.language-switch{margin-left:auto;margin-right:22px}
@media(max-width:760px){.language-switch{gap:6px}.book-actions .language-switch{margin-left:0}.book-actions .language-switch button{font-size:10px}.book-actions{max-width:260px}}
