*{box-sizing:border-box}body{margin:0;background:#f6f4ee;color:#151515;font-family:Arial,"Microsoft YaHei",sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid #c30010;outline-offset:6px}header{height:68px;display:flex;gap:25px;align-items:center;padding:0 3%;font-size:13px;font-weight:700}header .line{height:1px;background:#333;flex:1}header b{color:#be0712;margin-left:12px}.scene{height:calc(100svh - 126px);min-height:650px;max-height:1100px;position:relative;overflow:hidden}.tickets{position:absolute;top:48px;left:4%;right:4%;height:270px;z-index:5;display:flex;justify-content:space-between;gap:28px;align-items:start}.ticket{position:relative;width:23%;height:175px;text-align:left;background:#faf9f5;border:4px solid #151515;border-radius:8px;box-shadow:7px 9px 0 #0002;padding:8px 20px 20px;transform:translateY(var(--y)) rotate(var(--r));transition:transform .3s,box-shadow .3s,background .3s}.ticket:before,.ticket:after{content:'';width:16px;height:24px;background:#f6f4ee;position:absolute;top:65%;border:3px solid #151515;border-radius:50%}.ticket:before{left:-12px;clip-path:inset(0 0 0 45%)}.ticket:after{right:-12px;clip-path:inset(0 45% 0 0)}.ticket:hover,.ticket:focus-visible{transform:translateY(calc(var(--y) - 12px)) rotate(calc(var(--r) * .45)) scale(1.06);box-shadow:9px 14px 0 #ba06192b;background:#fff}.number{display:block;font-size:58px;line-height:1.05;font-weight:900;color:#bf0612;letter-spacing:-3px}.ticket strong{display:block;font-size:26px;font-weight:900}.ticket small{display:block;font-size:10px;margin-top:7px}.ticket i{position:absolute;bottom:11px;right:13px;width:48px;height:13px;background:repeating-linear-gradient(90deg,#111 0 1px,transparent 1px 3px,#111 3px 5px,transparent 5px 6px)}.t0{--r:-17deg;--y:95px}.t1{--r:-9deg;--y:0px}.t2{--r:9deg;--y:0px}.t3{--r:17deg;--y:95px}.outline{position:absolute;top:40%;left:50%;transform:translateX(-50%);font-size:clamp(130px,17vw,270px);white-space:nowrap;letter-spacing:20px;font-weight:900;-webkit-text-stroke:1px #adb0b5;color:transparent;opacity:.8}.character-wrap{position:absolute;left:50%;transform:translateX(-50%);bottom:-4%;height:76%;width:50%;pointer-events:none;z-index:2}#character{height:100%;transform-origin:50% 90%;transition:transform .55s cubic-bezier(.2,.8,.2,1);filter:drop-shadow(0 16px 20px #33201812)}#character img{height:100%;width:100%;object-fit:contain;object-position:bottom}.character-wrap[data-look="0"] #character{transform:translate(-24px,-6px) rotate(-7deg)}.character-wrap[data-look="1"] #character{transform:translate(-13px,-16px) rotate(-4deg)}.character-wrap[data-look="2"] #character{transform:translate(13px,-16px) rotate(4deg)}.character-wrap[data-look="3"] #character{transform:translate(24px,-6px) rotate(7deg)}#character.intro{animation:greet 5s cubic-bezier(.3,.6,.3,1) both}.identity{position:absolute;left:3%;bottom:12%;z-index:3}.identity h1{font-size:clamp(48px,6vw,95px);line-height:1;margin:0;color:#bc0710;font-weight:900;letter-spacing:-3px}.identity p{color:#bc0710;font-size:clamp(18px,2.6vw,38px);font-weight:900;margin:10px 0}.identity h2{font-size:clamp(36px,4.8vw,72px);margin:0 0 15px;line-height:1.1;letter-spacing:-3px}.identity>span{font-size:11px}aside{position:absolute;right:7%;top:47%;z-index:3}aside h3{color:#be0712;font-size:25px;margin:0 0 16px}aside p,.motto{font-family:KaiTi,STKaiti,"楷体",serif;font-size:30px;line-height:1.8;margin:0}.motto{position:absolute;right:4%;bottom:11%;font-size:clamp(24px,3vw,48px);transform:rotate(-7deg);z-index:3}.demo-note{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);font-size:9px;color:#555;z-index:4;background:#f6f4eed9;padding:3px 8px;white-space:nowrap}#speech{position:absolute;left:50%;top:12%;transform:translate(-50%,-10px);background:#fff;border:2px solid #191919;border-radius:15px;padding:12px 20px;white-space:nowrap;font-size:13px;opacity:0;transition:.25s;box-shadow:4px 4px 0 #bc0712;z-index:6}.speaking #speech{opacity:1;transform:translate(-50%,-30px)}footer{min-height:58px;background:#171717;color:#faf8f1;padding:15px 3%;display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:11px}.controls{display:flex;gap:16px;align-items:center;flex-wrap:wrap}.controls button,.controls a{background:none;border:0;color:inherit;font-size:11px;padding:4px 0}.controls button:hover,.controls a:hover{color:#ff8c8c}#notice{position:fixed;bottom:75px;left:50%;transform:translateX(-50%);z-index:30;padding:12px 20px;border-radius:8px;background:#151515;color:#fff;font-size:12px;display:none;max-width:90vw}dialog{border:3px solid #161616;background:#f6f4ee;width:min(1100px,94vw);max-height:90svh;padding:25px;box-shadow:12px 12px 0 #0003}dialog::backdrop{background:#161616b0;backdrop-filter:blur(8px)}.dialog-head,.lightbar{display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:2px solid #151515;padding-bottom:16px;margin-bottom:25px}.dialog-head h2{font-size:30px;margin:0}.dialog-head button,.lightbar button,.light-controls button{background:#171717;color:#fff;border:0;padding:12px 17px}.detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.work{background:none;border:0;padding:0;text-align:left;font-size:13px}.work img{width:100%;height:300px;object-fit:contain;background:#e9e7e0;transition:transform .3s}.work:hover img{transform:translateY(-5px)}.work span{display:block;margin:12px 0}.bio{max-width:720px;line-height:2}.bio .name{font-size:42px;color:#b80010;font-weight:bold}.bio dl div{border-top:1px solid #ccc;display:grid;grid-template-columns:140px 1fr;padding:15px 0}.bio dd{margin:0}.bio .muted{color:#777;font-size:12px}#lightbox{width:min(1000px,96vw)}#full-image{width:100%;height:auto;display:block}.lightbar{position:sticky;top:-25px;background:#f6f4ee;padding:15px 0;z-index:2}.light-controls{display:flex;justify-content:space-between;align-items:center;position:sticky;bottom:-25px;background:#f6f4ee;padding:15px 0;font-size:12px}.reduced *{animation:none!important;transition:none!important}@keyframes greet{0%{transform:scale(1) translateY(0)}30%{transform:scale(1.22) translateY(-4%) rotate(-5deg)}43%{transform:scale(1.22) translateY(-4%) rotate(4deg)}57%{transform:scale(1.22) translateY(-4%) rotate(-3deg)}70%{transform:scale(1.22) translateY(-4%) rotate(0)}100%{transform:scale(1) translateY(0)}}@media(min-width:1600px){.ticket{height:205px}.number{font-size:75px}.ticket strong{font-size:32px}}@media(max-width:850px){header{font-size:10px;height:55px;gap:12px}.scene{min-height:820px;height:calc(100svh - 130px);max-height:1000px}.tickets{top:25px;left:7%;right:7%;gap:17px;height:300px;display:grid;grid-template-columns:1fr 1fr}.ticket{width:100%;height:122px;padding:8px 14px;border-width:3px}.number{font-size:40px}.ticket strong{font-size:21px}.ticket small{font-size:8px}.ticket i{width:28px;height:8px;bottom:8px}.t0{--y:0px;--r:-8deg}.t1{--y:0px;--r:8deg}.t2{--y:0px;--r:-8deg}.t3{--y:0px;--r:8deg}.character-wrap{bottom:0;height:53%;width:90%}.identity{left:5%;bottom:42%}.identity h1{font-size:42px}.identity p{font-size:18px;margin:5px 0}.identity h2{font-size:32px;margin-bottom:5px}.identity>span{font-size:9px}aside{right:5%;top:42%}aside h3{font-size:16px;margin-bottom:5px}aside p{font-size:18px;line-height:1.6}.outline{top:56%;font-size:120px;letter-spacing:5px}.motto{right:4%;bottom:7%;font-size:23px;background:#f6f4eecc;padding:5px}.demo-note{font-size:8px}footer{flex-direction:column;align-items:flex-start;gap:10px}.controls{width:100%;justify-content:space-between;gap:8px}.controls button,.controls a{font-size:10px}.detail-grid{grid-template-columns:1fr 1fr;gap:15px}.work img{height:200px}.work span{font-size:11px}.dialog-head h2{font-size:22px}dialog{padding:16px}.bio dl div{grid-template-columns:85px 1fr;font-size:13px}#speech{font-size:10px;padding:9px 12px;top:13%}.lightbar{top:-16px}.light-controls{bottom:-16px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* Fixed landscape composition, scaled as a single canvas on compact screens. */
.landscape-shell{width:min(100%,1600px);margin:0 auto;overflow:hidden;position:relative}.landscape-shell .scene{width:1440px;height:810px;min-height:810px;max-height:810px;transform-origin:top left}.scene .tickets{top:48px;left:4%;right:4%;height:270px;display:flex;gap:28px}.scene .ticket{width:23%;height:175px;padding:8px 20px 20px;border-width:4px}.scene .number{font-size:58px}.scene .ticket strong{font-size:26px}.scene .ticket small{font-size:10px;margin-top:7px}.scene .ticket i{width:48px;height:13px;bottom:11px}.scene .t0{--r:-17deg;--y:95px}.scene .t1{--r:-9deg;--y:0px}.scene .t2{--r:9deg;--y:0px}.scene .t3{--r:17deg;--y:95px}.scene .character-wrap{left:50%;bottom:-5%;height:80%;width:50%}.scene .identity{left:3%;bottom:12%}.scene .identity h1{font-size:86px;letter-spacing:-3px}.scene .identity p{font-size:36px;margin:10px 0}.scene .identity h2{font-size:66px;margin:0 0 15px}.scene .identity>span{font-size:11px}.scene aside{right:7%;top:47%}.scene aside h3{font-size:25px;margin:0 0 16px}.scene aside p{font-size:30px;line-height:1.8}.scene .outline{top:40%;font-size:245px;letter-spacing:20px}.scene .motto{right:4%;bottom:11%;font-size:43px;background:none;padding:0}.scene .demo-note{font-size:9px}.scene #speech{font-size:13px;padding:12px 20px;top:12%}.rotate-hint,.mobile-entries{display:none}header,footer{max-width:1600px;margin:auto}.mobile-entries button{border:1px solid #151515;background:transparent;padding:13px 8px;border-radius:5px;font-size:12px}@media(max-width:850px){.rotate-hint{display:block;text-align:center;font-size:11px;color:#666;margin:20px 0 15px}.mobile-entries{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;padding:0 14px 20px}footer{min-height:90px}.controls button,.controls a{padding:10px 0}}@media(max-width:850px) and (orientation:landscape){header{height:40px}.rotate-hint,.mobile-entries{display:none}footer{min-height:65px}}
/* Avatar is composited above tickets; pointer events pass through to the buttons. */
.scene .character-wrap{z-index:8;pointer-events:none}.scene .character-wrap.opening{z-index:12}.scene .character-wrap.responding{z-index:9}#character{position:relative;transition:none!important}#character .portrait{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:bottom;opacity:0;transition:opacity .18s ease}#character .portrait.active{opacity:1}.scene .character-wrap[data-look] #character{transform:none}.scene .ticket.selected{transform:translateY(calc(var(--y) - 12px)) rotate(calc(var(--r) * .45)) scale(1.06);background:#fff0e8;box-shadow:9px 14px 0 #ba061940}.scene .character-wrap.opening #speech{top:0;left:90%;font-size:13px}.scene .character-wrap.responding #speech{top:4%;left:50%}.scene #character.intro{animation:greet-front 5s cubic-bezier(.3,.6,.3,1) both}@keyframes greet-front{0%{transform:scale(1)}28%{transform:scale(1.42) translateY(-1%) rotate(-4deg)}42%{transform:scale(1.42) translateY(-1%) rotate(3deg)}55%{transform:scale(1.42) translateY(-1%) rotate(-2deg)}70%{transform:scale(1.42) translateY(-1%)}100%{transform:scale(1)}}
/* Quiet motion below the landscape instead of repeated navigation. */
.motion-strip{max-width:1500px;margin:0 auto;padding:20px 4%;display:flex;align-items:center;gap:24px;border-top:1px solid #17171714;color:#8e2925;font-size:12px;letter-spacing:2px;overflow:hidden}.motion-strip i{height:1px;background:linear-gradient(90deg,#c8aaa0,transparent);flex:1;position:relative}.motion-strip i:after{content:'';position:absolute;left:0;top:-2px;width:5px;height:5px;background:#b90b16;border-radius:50%;animation:ink-travel 7s ease-in-out infinite alternate}.drift-mark{font-size:28px;animation:slow-turn 24s linear infinite}.orbit-mark{font-size:24px;animation:soft-float 4s ease-in-out infinite alternate}@keyframes slow-turn{to{transform:rotate(360deg)}}@keyframes ink-travel{to{left:95%}}@keyframes soft-float{to{transform:translateY(-5px) rotate(12deg)}}
/* Editorial collection, generous space, each work retains its full aspect ratio. */
#details{width:min(1280px,96vw);height:92svh;max-height:92svh;padding:0;border:0;border-radius:16px;background:#f8f7f3;box-shadow:0 30px 100px #0005;scrollbar-gutter:stable}.dialog-head{position:sticky;top:0;z-index:5;background:#f8f7f3f5;backdrop-filter:blur(14px);padding:24px 36px;margin:0;border-bottom:1px solid #2222}.dialog-head h2{font-size:24px;letter-spacing:-1px}.dialog-head button{border:1px solid #2223;border-radius:25px;color:#333;background:transparent;padding:10px 18px;font-size:12px}#detail-body{padding:36px 46px 65px}.collection-lead{margin-bottom:40px}.eyebrow{font-size:10px;letter-spacing:3px;color:#986c60;margin:0 0 22px}.collection-lead>div{display:flex;align-items:center;justify-content:space-between;gap:20px}.collection-lead>div p{font-family:KaiTi,STKaiti,serif;font-size:34px;margin:0 0 18px}.collection-lead>div span{font-size:11px;color:#78766f;white-space:nowrap}.collection-lead small{font-size:11px;color:#85827b}.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:44px 32px;align-items:start}.work{width:100%;min-width:0}.work-image{position:relative;padding:22px;background:#eeece5;border-radius:5px;overflow:hidden}.work .work-image img{display:block;width:100%;height:auto;max-height:none;object-fit:contain;background:transparent;box-shadow:0 8px 22px #00000012;transition:transform .4s}.work:hover img{transform:scale(1.012)}.work .view-work{position:absolute;bottom:32px;right:32px;font-size:10px;letter-spacing:1px;border-radius:24px;background:#fffc;padding:10px 15px;opacity:0;transform:translateY(6px);transition:.25s}.work:hover .view-work,.work:focus-visible .view-work{opacity:1;transform:none}.work-caption{display:flex;gap:14px;align-items:baseline;padding:19px 0;border-bottom:1px solid #2222}.work-caption strong{font-size:17px;font-weight:500}.work-caption p{font-size:11px;line-height:1.6;color:#807e76;margin:7px 0 0}.work .work-number{font-size:10px;color:#9b7d6e;margin:0}.work .work-arrow{margin:0 0 0 auto;font-size:20px}.bio{padding:30px 0;max-width:800px;margin:auto}.bio .name{font-family:KaiTi,STKaiti,serif;font-size:65px}.bio p{color:#58574f}.bio dl{margin-top:35px}
/* Fixed toolbar + independently scrollable art, so headers never cover the image. */
#lightbox{width:98vw;height:96svh;max-width:1700px;max-height:96svh;padding:0;border:0;border-radius:12px;background:#eeede8;box-shadow:0 30px 100px #0008;overflow:hidden}#lightbox[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto}.lightbar{position:static;margin:0;padding:16px 24px;border:0;background:#faf9f5;min-height:62px;font-size:13px}.lightbar button{font-size:11px;border-radius:24px;background:#e8e6df;color:#222;padding:10px 16px}.image-viewport{min-height:0;min-width:0;overflow:auto;padding:20px;display:flex;align-items:center;justify-content:center;overscroll-behavior:contain}#full-image{display:block;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;box-shadow:0 6px 30px #0002;flex-shrink:0}#lightbox.zoomed .image-viewport{display:block;text-align:center}#lightbox.zoomed #full-image{width:100%;height:auto;max-width:none;max-height:none;margin:auto;object-fit:initial}.light-controls{position:static;margin:0;padding:13px 24px;border-top:1px solid #0001;background:#faf9f5;gap:12px;font-size:11px}.light-controls button{font-size:11px;padding:10px 14px;background:#e9e6de;color:#222;border-radius:24px}.image-tools{display:flex;align-items:center;gap:18px}.image-tools a{font-size:11px;text-decoration:underline;text-underline-offset:3px}#count{color:#888;font-variant-numeric:tabular-nums}
@media(max-width:650px){.motion-strip{gap:12px;padding:16px 4%;font-size:9px;letter-spacing:1px}.motion-strip span:last-child{display:none}.motion-strip i{min-width:45px}.rotate-hint{margin:12px 0}.dialog-head{padding:18px 20px}.dialog-head h2{font-size:21px}#detail-body{padding:25px 20px 40px}.collection-lead>div p{font-size:25px}.collection-lead>div span{font-size:9px}.collection-lead{margin-bottom:28px}.detail-grid{grid-template-columns:1fr;gap:32px}.work-image{padding:15px}.work .view-work{opacity:1;bottom:22px;right:22px;padding:8px 12px}.work-caption strong{font-size:17px}.lightbar{padding:12px 14px;gap:10px;font-size:11px;min-height:55px}.lightbar button{white-space:nowrap}.image-viewport{padding:10px}.light-controls{flex-wrap:wrap;padding:10px 12px}.image-tools{gap:12px;order:-1;width:100%;justify-content:center}.light-controls>button{flex:1}.bio .name{font-size:48px}}
.collection-filters{display:flex;gap:10px;margin-top:25px}.collection-filters button{border:1px solid #d4cfc4;background:transparent;padding:10px 18px;border-radius:22px;font-size:11px}.collection-filters button[aria-pressed=true]{background:#742e25;color:#fff;border-color:#742e25}.work[hidden]{display:none}
.collection-lead>.collection-filters{justify-content:flex-start;gap:10px;flex-wrap:wrap}#lightbox.zoomed #full-image{min-width:1000px}
