/* Dorm-only styles; no existing room selectors are changed. */
.dorm-room{position:fixed;inset:0;z-index:7;overflow:hidden;background:#c58d9b;color:#704b55;font-family:'PingFang SC','Microsoft YaHei',sans-serif;--rose:#ac4871;--cream:#fff9f0;--visible-height:100dvh;--visible-top:0px}
.dorm-room *{box-sizing:border-box}.dorm-room [hidden]{display:none!important}.dorm-room button{font:inherit;color:inherit;border:0;cursor:pointer;background:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.dorm-room button:focus-visible,.dorm-room input:focus-visible,.dorm-room textarea:focus-visible{outline:2px solid #a53b65;outline-offset:3px}.dorm-room img{display:block;max-width:100%;user-select:none}.dorm-scene{position:absolute;inset:0;overflow:hidden;background:#d798ac url('./assets/dorm-room-v2.webp') center/cover;transition:filter .5s}.dorm-world{position:absolute;left:50%;top:50%;width:max(100vw,159dvh);aspect-ratio:1672/941;transform:translate(-50%,-50%)}.dorm-backdrop{width:100%;height:100%;object-fit:cover;pointer-events:none}.dorm-world:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(0deg,#3d152a18,transparent 18%,transparent 82%,#713b3c16);box-shadow:inset 0 0 90px #73443516}.dorm-header{position:absolute;top:max(26px,env(safe-area-inset-top));left:max(32px,env(safe-area-inset-left));right:max(32px,env(safe-area-inset-right));display:flex;justify-content:space-between;align-items:start;pointer-events:none;color:#642e43;text-shadow:0 1px 15px #fff6eccc}.dorm-header>div{font:600 14px/1.4 sans-serif;letter-spacing:.2em}.dorm-header small{display:block;font:10px/2.5 sans-serif;letter-spacing:.12em}.dorm-header p{margin:0;font:15px 'Songti SC',serif;letter-spacing:.13em}.dorm-header i{font:italic 30px Georgia,serif;margin-right:8px;opacity:.65}.dorm-footer{position:absolute;bottom:max(23px,env(safe-area-inset-bottom));left:max(30px,env(safe-area-inset-left));right:max(30px,env(safe-area-inset-right));display:flex;justify-content:space-between;align-items:center;gap:20px;color:#633546}.dorm-footer p{font:15px 'Songti SC',serif;letter-spacing:.2em;text-shadow:0 1px 10px #fff0ea;margin:0}.dorm-footer button{padding:11px 15px;border:1px solid #fffcf0a0;border-radius:3px;background:#fff4e975;backdrop-filter:blur(8px);font-size:12px}.dorm-board{position:absolute;left:63.4%;top:18%;width:32.2%;height:35.8%;transform:perspective(1100px) rotateY(-7deg) rotate(-2deg);transform-origin:center}.dorm-board h2{text-align:center;font:italic 400 clamp(13px,2vw,31px) 'Kaiti SC','STKaiti','Songti SC',serif;letter-spacing:.34em;color:#fffaed;margin:0 0 3%;height:14%;text-shadow:0 1px 3px #ac496833}.dorm-pockets{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr);column-gap:7%;row-gap:15%;height:82%;padding:0 2%}.dorm-pocket{position:relative;display:block;min-width:0;min-height:0;padding:0!important;border:0;border-radius:4px;background:none;isolation:isolate;--edge:#d0779e;filter:drop-shadow(2px 5px 3px #71354438)}.dorm-pocket.dark{--edge:#3b363d}.pocket-paper{position:absolute;inset:10% 10% 8%;background:#fff7ec;border:2px solid #e1a7c0;transform:rotate(var(--paper-angle));box-shadow:0 1px 4px #7d405238;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5%;color:#b55c81;transition:transform .35s,opacity .25s;overflow:hidden}.pocket-paper>b{font:700 clamp(4px,.68vw,12px) 'Songti SC',serif}.pocket-paper>i{position:absolute;top:1%;left:5%;font-style:normal;font-size:clamp(5px,.8vw,12px)}.pocket-paper em{width:72%;border-top:1px dashed #d593b2;height:5%}.pocket-paper small{font-size:clamp(4px,.52vw,9px);white-space:nowrap}.dorm-pocket:nth-child(2) .pocket-paper{inset:15% 15% 4% 8%}.dorm-pocket:nth-child(4) .pocket-paper{inset:14% 8% 5% 20%}.pocket-pvc{position:absolute;inset:0;border:clamp(2px,.3vw,5px) solid var(--edge);border-radius:4px;background:linear-gradient(129deg,#ffffff65,transparent 28%,#ffffff25 48%,transparent 64%,#ffffff30),repeating-linear-gradient(40deg,#fff3 0 .6px,transparent .8px 3px);box-shadow:inset 1px 1px 1px #fff9,inset -1px -1px 3px #4b234022;pointer-events:none}.pocket-flap{position:absolute;inset:0 0 56%;clip-path:polygon(0 0,100% 0,98% 37%,52% 100%,3% 40%);background:linear-gradient(173deg,#fff9,#fff2 85%,var(--edge) 87%);border-radius:3px;pointer-events:none;filter:drop-shadow(0 1px 0 #fff)}.pocket-snap{position:absolute;left:48%;top:33%;width:6%;aspect-ratio:1;border-radius:50%;background:#fffff5;box-shadow:0 1px 2px #57403977;pointer-events:none}.dorm-pocket[data-bag]:hover .pocket-paper,.dorm-pocket[data-bag]:focus-visible .pocket-paper{transform:translateY(-4px) rotate(var(--paper-angle))}.dorm-pocket.is-empty .pocket-paper{opacity:0}.dorm-cabinet-photo{position:absolute;padding:.3%!important;background:#fffaeb!important;box-shadow:2px 3px 5px #61364455;transform:rotate(var(--angle));transition:transform .25s;transform-origin:left top}.dorm-cabinet-photo img{width:100%;filter:sepia(.09) brightness(.93)}.dorm-cabinet-photo:before{content:'';position:absolute;top:-5%;left:25%;width:55%;height:11%;background:#e6b3aa90;transform:rotate(-4deg)}.dorm-cabinet-photo:hover{transform:rotate(var(--angle)) perspective(300px) rotateY(-8deg)}.dorm-cabinet-photo.is-lifted{opacity:.15}.has-paper .dorm-scene{filter:blur(2.5px) brightness(.83)}
.dorm-hand,.dorm-photo-view{position:fixed;top:var(--visible-top);left:0;width:100%;height:var(--visible-height);z-index:20;display:flex;align-items:center;justify-content:center;padding:20px max(20px,env(safe-area-inset-right)) 12px max(20px,env(safe-area-inset-left));touch-action:pan-y}.dorm-shade{position:absolute;inset:0;background:#51233624;backdrop-filter:blur(1px);pointer-events:none}.dorm-paper-wrap{position:relative;max-height:100%;width:min(480px,85vw);display:flex;flex-direction:column;align-items:stretch;gap:10px;z-index:1;touch-action:pan-y}.dorm-return{align-self:end;font-size:12px!important;min-height:32px;padding:6px 12px!important;background:#fff4eacb!important;border-radius:2px;color:#743f56!important}.dorm-paper{position:relative;padding:30px 35px 24px 43px;color:#765363;background:repeating-linear-gradient(40deg,#ba8c8510 0 1px,transparent 1px 4px),#fffaf1;border:9px solid #edb5cf;outline:1px solid #ffecf6;box-shadow:8px 18px 45px #34172665,inset 0 0 20px #e6bfab22;transform:rotate(-1deg);transform-origin:0 0;max-height:calc(var(--visible-height) - 155px);overflow:auto;scrollbar-width:thin;scrollbar-color:#dfa6ba #fff5eb;touch-action:pan-y}.dorm-paper:before{content:'';position:absolute;left:9px;top:18%;bottom:7%;width:7px;background:radial-gradient(circle,#d9a3bb 0 3px,transparent 3.5px) 0 0/7px 65px}.paper-heading{text-align:center;margin-bottom:23px;color:#af547c}.paper-heading small{font:8px sans-serif;letter-spacing:.13em}.paper-heading h2{font:700 28px/1.4 'Songti SC','Noto Serif SC',serif;letter-spacing:.08em;margin:10px -10px 5px;text-shadow:1px 1px #fff,-1px -1px #fff,2px 2px #e8c2d2}.paper-heading p{font:11px 'Kaiti SC','Songti SC',serif;letter-spacing:.14em;margin:0}.dorm-tape{position:absolute;width:75px;height:21px;background:repeating-linear-gradient(90deg,transparent 0 7px,#fff6 7px 9px),repeating-linear-gradient(0deg,#e591b280 0 7px,#fff6 7px 9px);z-index:1}.tape-top{left:5px;top:5px;transform:rotate(-12deg)}.tape-bottom{right:-2px;bottom:6px;transform:rotate(-17deg)}.dorm-fields{display:grid;gap:15px}.dorm-field{display:block;min-width:0}.dorm-field>span,.dorm-author-note>small{display:block;color:#b1577d;font-size:11px;letter-spacing:.07em;margin-bottom:3px}.dorm-field p,.dorm-author-note p{margin:0;font:16px/1.85 'Kaiti SC','STKaiti','Songti SC',serif;white-space:pre-wrap;overflow-wrap:anywhere;background:repeating-linear-gradient(transparent 0 28px,#dda2bb9c 28px 29px,transparent 29px 30px)}.dorm-field input,.dorm-field textarea{width:100%;display:block;border:0;border-radius:0;outline:0;background:repeating-linear-gradient(transparent 0 28px,#dda2bba8 28px 29px,transparent 29px 30px);color:#70505d;font:16px/30px 'Kaiti SC','STKaiti','Songti SC',serif;padding:0 2px;resize:none;box-shadow:none;user-select:text;-webkit-user-select:text;touch-action:pan-y}.dorm-field input{height:31px}.dorm-field textarea{height:95px}.dorm-field input::placeholder,.dorm-field textarea::placeholder{color:#bca1a6;font-size:12px}.dorm-author-note{margin-top:2px;border:1px dashed #dca1b9;padding:8px 10px}.dorm-author-note p{font-size:13px;line-height:1.8;background:none}.dorm-sticker-area{margin-top:14px}.dorm-placed{display:flex;justify-content:center;align-items:center;gap:13px;min-height:48px}.dorm-sticker{display:grid;place-items:center;width:46px;height:46px;flex:0 0 46px;filter:drop-shadow(1px 2px 0 #deb2ba);transform:rotate(-8deg);font-size:36px!important;color:#bc4777!important;padding:2px!important}.dorm-sticker:nth-child(even){transform:rotate(8deg)}.dorm-sticker img{width:100%;height:100%;object-fit:contain}.dorm-empty-stickers{font:11px 'Songti SC',serif;color:#c99eae;letter-spacing:.07em}.dorm-sticker-choices{display:flex;gap:8px;overflow-x:auto;padding:7px 2px;touch-action:pan-x;scrollbar-width:thin}.dorm-sticker-choices button{display:flex;flex:0 0 43px;align-items:center;flex-direction:column;gap:2px;min-height:44px;padding:2px!important;border-bottom:1px solid transparent!important}.dorm-sticker-choices span{font-size:24px}.dorm-sticker-choices img{width:28px;height:28px;object-fit:contain}.dorm-sticker-choices small{font-size:8px;white-space:nowrap}.dorm-sticker-choices button[aria-pressed=true]{border-color:#b0577a!important;opacity:.55}.sticker-instruction{font-size:9px;color:#ba8ca0}.paper-foot{display:flex;justify-content:space-between;gap:10px;margin-top:18px;color:#b27a93;font-size:9px}.paper-foot small{font-size:8px;text-align:right}.dorm-finish{display:block;margin:15px 0 0 auto;border-bottom:1px solid #bd658b!important;font:14px 'Songti SC',serif!important;min-height:36px;padding:7px 14px!important;color:#a14c73!important}.dorm-actions{display:flex;gap:10px;justify-content:center;flex-shrink:0}.dorm-actions:empty{display:none}.dorm-actions button{font-size:12px;padding:12px 18px;background:#fff6ed;border:1px solid #f0d0db;box-shadow:0 3px 12px #4c233622;border-radius:3px;color:#834463;min-height:42px}.dorm-actions button:first-child{background:#ad4e79;color:#fff6ed;border-color:#b7648d}.dorm-actions button:disabled{opacity:.65;cursor:default}.dorm-status{font:11px/1.7 sans-serif;white-space:pre-line;text-align:center;color:#fff8ef;margin:0;text-shadow:0 1px 5px #481228;min-height:0}.dorm-status:empty{display:none}.dorm-photo-view{flex-direction:column;gap:20px}.dorm-photo-view figure{position:relative;margin:0;padding:13px 13px 20px;background:#fff7e8;box-shadow:8px 15px 50px #43233370;transform:rotate(1deg);transform-origin:0 0;max-width:80vw}.dorm-photo-view img{max-height:calc(var(--visible-height) - 160px);min-height:80px;width:auto;max-width:75vw;object-fit:contain;margin:auto}.dorm-photo-view figcaption{font:14px 'Songti SC',serif;text-align:center;margin:15px 0 8px}.dorm-photo-view small{display:block;text-align:center;font-size:9px;opacity:.65}.dorm-photo-return{position:relative;padding:10px 20px!important;background:#fff4eae0!important;font-size:12px!important;border-radius:3px}.dorm-next-room{position:absolute;right:24px;bottom:70px;z-index:22;padding:12px 16px;border:1px solid #efd6ad66!important;background:#381d17b5!important;color:#ffe8c9!important;backdrop-filter:blur(6px);font:13px 'Songti SC',serif!important}
@media(max-height:650px) and (min-aspect-ratio:1/1){.dorm-header{top:14px;left:max(20px,env(safe-area-inset-left));right:max(20px,env(safe-area-inset-right))}.dorm-header>div{font-size:10px}.dorm-header small{font-size:8px}.dorm-header p{font-size:12px}.dorm-header i{font-size:22px}.dorm-footer{bottom:max(12px,env(safe-area-inset-bottom));left:max(18px,env(safe-area-inset-left));right:max(18px,env(safe-area-inset-right))}.dorm-footer button{font-size:10px;padding:8px 10px}.dorm-footer p{font-size:12px}.dorm-hand{padding-top:5px;padding-bottom:5px}.dorm-paper-wrap{width:min(680px,82vw);gap:6px}.dorm-return{min-height:26px;padding:3px 10px!important;font-size:10px!important}.dorm-paper{padding:13px 24px 12px 30px;border-width:6px;max-height:calc(var(--visible-height) - 116px)}.dorm-paper.is-editing{max-height:calc(var(--visible-height) - 48px)}.paper-heading{margin-bottom:10px}.paper-heading h2{font-size:22px;margin:4px 0}.paper-heading small{font-size:7px}.paper-heading p{font-size:10px}.dorm-fields{grid-template-columns:1fr 1.3fr;column-gap:22px;row-gap:9px}.field-nickname{grid-column:1;grid-row:1}.field-metWhen{grid-column:1;grid-row:2}.field-message{grid-column:2;grid-row:1 / span 2}.dorm-field>span{font-size:10px}.dorm-field p{font-size:14px;line-height:1.9}.dorm-field input{height:28px;font-size:16px}.dorm-field textarea{height:90px;font-size:16px}.dorm-author-note{grid-column:1 / -1;padding:5px 8px}.dorm-author-note p{font-size:12px}.dorm-sticker-area{margin-top:8px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}.dorm-placed{justify-content:start;min-height:32px;gap:8px;flex:1}.dorm-sticker{width:32px;height:32px;flex-basis:32px;font-size:26px!important}.dorm-sticker-choices{max-width:55%;padding:2px;gap:5px}.dorm-sticker-choices button{flex-basis:34px;min-height:36px}.dorm-sticker-choices span{font-size:21px}.dorm-sticker-choices img{height:23px;width:23px}.sticker-instruction{width:100%;font-size:8px;line-height:1}.paper-foot{margin-top:8px;font-size:8px}.paper-foot small{font-size:7px}.dorm-finish{margin-top:5px;font-size:12px!important;min-height:28px;padding:4px 10px!important}.dorm-actions button{font-size:11px;min-height:34px;padding:7px 13px}.dorm-status{font-size:10px;line-height:1.5}.dorm-photo-view{gap:10px}.dorm-photo-view figure{padding:8px 8px 12px}.dorm-photo-view img{max-height:calc(var(--visible-height) - 120px)}.dorm-photo-view figcaption{font-size:12px;margin:8px 0 5px}}
@media(max-width:700px) and (orientation:landscape){.dorm-paper-wrap{width:88vw}.paper-heading h2{font-size:19px}.dorm-paper{padding:10px 20px 10px 26px}.dorm-fields{column-gap:13px}.dorm-sticker-area{gap:6px}.dorm-sticker-choices{max-width:52%}.dorm-footer p{font-size:10px}.dorm-header small{display:none}}
.dorm-keyboard .dorm-hand{align-items:start;padding-top:5px}.dorm-keyboard .dorm-paper-wrap{max-height:100%;gap:4px}.dorm-keyboard .dorm-paper{max-height:calc(var(--visible-height) - 42px);transform:none}.dorm-keyboard .paper-heading{display:none}.dorm-keyboard .dorm-status{display:none}
@media(orientation:portrait){.dorm-world{width:177dvh;left:30%}.dorm-scene{overflow-x:auto}.dorm-board{left:61%}.dorm-footer p{display:none}.dorm-paper-wrap{width:88vw}.dorm-paper{padding:25px 22px 22px 30px}.paper-heading h2{font-size:24px}.dorm-actions button{padding:10px;font-size:11px}.dorm-header p{font-size:11px}.dorm-header>div{font-size:11px}}
@media(prefers-reduced-motion:reduce){.dorm-room *{animation:none!important;transition:none!important}.dorm-paper{transform:none}}
/* Writing stays on the paper; keyboard focus is a soft wash, not a form box. */
.dorm-field input:focus-visible,.dorm-field textarea:focus-visible{outline:0;background-color:#efd1df33;box-shadow:0 1px 0 #b56288}
@media(max-height:400px) and (orientation:landscape){
 .paper-heading{margin-bottom:7px}.paper-heading small{font-size:6px}.paper-heading h2{font-size:18px;line-height:1.25;margin:3px 0}.paper-heading p{font-size:8px}
 .dorm-paper{padding-top:10px;padding-bottom:9px}.dorm-fields{row-gap:5px}.dorm-field>span{font-size:9px;margin-bottom:1px}.dorm-field p{font-size:13px;line-height:1.7}.dorm-field input{height:25px;line-height:25px}.dorm-field textarea{height:75px;line-height:25px}
 .dorm-sticker-area{margin-top:5px;row-gap:3px}.dorm-placed{min-height:26px}.dorm-sticker{height:27px;width:27px;flex-basis:27px;font-size:24px!important}.dorm-sticker-choices button{min-height:30px}.dorm-sticker-choices span{font-size:18px}.dorm-sticker-choices img{height:20px;width:20px}.dorm-sticker-choices small{font-size:7px}.paper-foot{margin-top:5px}.sticker-instruction{font-size:7px}.dorm-finish{margin-top:3px;min-height:25px;font-size:11px!important}.dorm-empty-stickers{font-size:9px}
}
/* The exhibition disables body touch scrolling; the dorm paper needs native vertical panning. */
body:has(#dormRoot:not([hidden])){touch-action:pan-y}
.dorm-tape,.dorm-paper:before{pointer-events:none}

/* Approved rose / warm film scene. Pouch piping and empty interiors live in the
   photograph; only removable sheets and their thin PVC sheen are overlaid. */
.dorm-scene{overflow-x:auto;overflow-y:hidden;touch-action:pan-x;scrollbar-width:none;background:#b47783}
.dorm-scene::-webkit-scrollbar{display:none}
.dorm-scene:before{content:'';position:fixed;inset:-25px;background:url('./assets/dorm-room-v2.webp') center/cover;filter:blur(22px);opacity:.7;pointer-events:none}
.dorm-world{position:relative;left:0;top:50%;width:max(100vw,160dvh);aspect-ratio:1672/941;transform:translateY(-50%);container-type:inline-size}
.dorm-world:after{background:linear-gradient(0deg,#5425320c,transparent 16%,transparent 90%,#5f353910);box-shadow:none}
.dorm-header{color:#fff0d9;text-shadow:0 1px 6px #70394d88}
.dorm-footer{pointer-events:none;justify-content:flex-start}.dorm-footer button{pointer-events:auto;background:#fff4e949;backdrop-filter:blur(3px)}
.dorm-footer p{position:absolute;left:50%;transform:translateX(-50%);white-space:nowrap;color:#fff3e0;text-shadow:0 1px 6px #70394d}
.dorm-board{left:0;top:0;width:100%;height:100%;transform:none;pointer-events:none}
.dorm-board h2{position:absolute;left:57.4%;top:24.2%;width:19%;height:auto;margin:0;font-size:1.45cqw;transform:rotate(-4deg);text-shadow:0 1px 2px #7d314a33}
.dorm-book-intro{pointer-events:auto;letter-spacing:.28em;padding:4px 9px!important;font:inherit!important;color:#ffeddb!important;transition:color .3s}
.dorm-book-intro:hover,.dorm-book-intro[aria-pressed=true]{color:#fff!important;text-shadow:0 0 5px #ffe3ba66}
.dorm-pockets{display:contents}
.dorm-pocket{position:absolute;left:calc(var(--x)*1%);top:calc(var(--y)*1%);width:calc(var(--w)*1%);height:calc(var(--h)*1%);filter:none;isolation:isolate;--paper-angle:-1deg;pointer-events:none}
.dorm-pocket[data-bag]{pointer-events:auto}
.dorm-pocket:nth-child(1){--x:49.8;--y:31.5;--w:7.25;--h:11.15}
.dorm-pocket:nth-child(2){--x:58.35;--y:30.5;--w:8.1;--h:11.8}
.dorm-pocket:nth-child(3){--x:67.9;--y:29.7;--w:8.65;--h:12.05}
.dorm-pocket:nth-child(4){--x:49.85;--y:45.15;--w:7.15;--h:11.05}
.dorm-pocket:nth-child(5){--x:58.35;--y:44.75;--w:8.05;--h:12}
.dorm-pocket:nth-child(6){--x:67.9;--y:44.4;--w:8.65;--h:12.9}
.pocket-paper,.dorm-pocket:nth-child(2) .pocket-paper{inset:13% 8% 6%;justify-content:space-between;padding:8% 5% 4%;gap:4%;border:.14cqw solid #d98aa8;outline:1px solid #f6c5d1;background:repeating-linear-gradient(85deg,#ac67560a 0 1px,transparent 1px 4px),#efdecc;box-shadow:0 1px 3px #66314144;color:#a85476;transform:rotate(var(--paper-angle))}
.pocket-paper>b{font:700 .64cqw/1.2 'Songti SC',serif;text-align:center;letter-spacing:.02em;text-shadow:.05cqw .05cqw #f8ebdc}
.pocket-paper>i{font-size:.6cqw;top:3%;left:3%}
.pocket-fields{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:.28cqw .2cqw}
.pocket-fields em{font:normal .23cqw/2 'Songti SC',serif;border-top:0;border-bottom:.04cqw solid #ce91a7;width:100%;height:auto;white-space:nowrap;color:#b5738a}
.pocket-paper small{font:.28cqw 'Songti SC',serif;letter-spacing:.04em}
.dorm-pocket:nth-child(3) .pocket-paper{padding-top:16%;inset:16% 10% 7%}
.dorm-pocket:nth-child(4) .pocket-paper{inset:60% 16% 8% 11%;padding:3%;opacity:.54}
.dorm-pocket:nth-child(5) .pocket-paper{inset:69% 14% 8% 10%;padding:3%;opacity:.64;transform:rotate(-5deg)}
.dorm-pocket:nth-child(6) .pocket-paper{inset:70% 10% 6% 14%;padding:3%;opacity:.62}
.dorm-pocket:nth-child(n+4) .pocket-paper>b,.dorm-pocket:nth-child(n+4) .pocket-paper>i,.dorm-pocket:nth-child(n+4) .pocket-fields{display:none}
.dorm-pocket.is-empty .pocket-paper{opacity:0}
.pocket-pvc{inset:3% 5% 4%;border:0;border-radius:0;box-shadow:none;background:linear-gradient(126deg,#fff2,transparent 26%,#fff2 57%,transparent 72%),repeating-linear-gradient(43deg,#fff3 0 .4px,transparent .6px 2.4px);pointer-events:none}
.pocket-flap{inset:0 0 67%;clip-path:polygon(0 0,100% 0,97% 42%,55% 99%,8% 68%);border-radius:0;filter:none;background-image:url('./assets/dorm-room-v2.webp');background-size:100cqw auto;background-position:calc(var(--x)*-1cqw) calc(var(--y)*-.562799cqw)}
.pocket-snap{display:none}
.dorm-cabinet-photo{padding:.15%!important;background:#ead9c4!important;box-shadow:1px 2px 3px #59342d55}
.dorm-cabinet-photo img{filter:sepia(.13) brightness(.92) saturate(.86)}
.dorm-cabinet-photo:before{height:7%;width:35%;left:34%;background:#e6c6a859}
.dorm-audition-door{position:absolute;left:83.7%;top:11.4%;width:15%;height:77%;padding:0!important}
.dorm-audition-door span{position:absolute;left:25%;top:19%;padding:8% 10%;white-space:nowrap;font:.95cqw 'Songti SC',serif;letter-spacing:.15em;color:#765143;background:linear-gradient(110deg,#e8cba7,#e1c09b);border:1px solid #b49375;box-shadow:0 2px 3px #684c3440;transform:rotate(-2deg)}
.dorm-audition-door:hover span{color:#4f3027;box-shadow:0 2px 5px #684c3470}
.at-audition-door .dorm-world{scale:1.65;transform-origin:92% 48%}
.at-audition-door .dorm-scene{filter:none;overflow:hidden}
.dorm-threshold{position:absolute;inset:0;z-index:25;display:grid;place-items:center;background:#4b303499;backdrop-filter:blur(8px);color:#fff1d8;text-align:center}
.dorm-threshold>div{padding:35px}.dorm-threshold small{font:10px sans-serif;letter-spacing:.3em;opacity:.75}.dorm-threshold h2{font:36px 'Songti SC',serif;letter-spacing:.3em;margin:22px 0}.dorm-threshold p{font:14px 'Songti SC',serif;letter-spacing:.12em}.dorm-threshold-return{margin-top:22px;padding:12px 18px!important;border-bottom:1px solid #eed7b580!important;font:13px 'Songti SC',serif!important}
@media(orientation:portrait){.dorm-world{left:0;width:177.68dvh}.dorm-board{left:0}.dorm-footer p{display:none}}

.dorm-pan-hint{display:none;position:absolute;bottom:70px;left:50%;transform:translateX(-50%);font:11px 'Songti SC',serif;letter-spacing:.15em;color:#fff2df;text-shadow:0 1px 5px #65333c;pointer-events:none;white-space:nowrap}.can-pan:not(.has-panned):not(.has-paper) .dorm-pan-hint{display:block}.can-pan .dorm-scene{cursor:grab}.can-pan .dorm-scene:active{cursor:grabbing}
/* Scene navigation and the shared visual language for collection controls. */
.dorm-world{aspect-ratio:1992/941;width:max(100vw,185dvh);container-type:normal}
.dorm-room-main{position:absolute;left:16.0643%;width:83.9357%;height:100%;container-type:inline-size}
.dorm-return-wall{position:absolute;left:0;top:0;width:16.0643%;height:100%;container-type:inline-size;overflow:hidden}
.dorm-return-wall>img{width:100%;height:100%;object-fit:fill}
.dorm-back{position:absolute;left:8%;top:8%;width:84%;height:80%;padding:0!important;background:none!important;border:0!important;border-radius:0!important;backdrop-filter:none!important}
.dorm-back>span{position:absolute;top:20%;left:25%;padding:8% 10%;font:6cqw 'Songti SC',serif;letter-spacing:.15em;white-space:nowrap;color:#765143;background:linear-gradient(110deg,#e8cba7,#e1c09b);border:1px solid #b49375;box-shadow:0 2px 3px #684c3440}
.at-practice-door .dorm-world{scale:1.55;transform-origin:7% 48%}.at-practice-door .dorm-scene{filter:none;overflow:hidden}
.dorm-header{left:auto;top:max(18px,env(safe-area-inset-top));right:max(22px,env(safe-area-inset-right));display:flex;align-items:flex-end;flex-direction:column;gap:8px}
.dorm-header .dorm-memory{font:13px 'PingFang SC',sans-serif;letter-spacing:.06em;padding:9px 13px;border-radius:25px;background:#2a171c26;color:#fff1dd;text-shadow:0 1px 10px #25130f}
.dorm-collection-open{pointer-events:auto;display:block;width:44px;height:44px;padding:5px!important}.dorm-collection-open svg{width:32px;height:34px;filter:drop-shadow(0 2px 3px #45212640)}
.dorm-footer{z-index:22;left:5%;right:5%;bottom:max(25px,env(safe-area-inset-bottom));justify-content:center;min-height:25px}
.dorm-footer .dorm-caption{position:static;transform:none;padding:8px 16px;background:#40212769;border-radius:3px;font:16px/1.65 'Songti SC',serif;letter-spacing:.1em;white-space:normal;text-align:center;color:#fff3df;text-shadow:0 1px 5px #321b22}
.dorm-collection{position:absolute;inset:0;z-index:30}.dorm-collection-dismiss{position:absolute;inset:0;background:#42242b25;backdrop-filter:blur(2px)}
.dorm-collection>section{position:absolute;right:max(22px,env(safe-area-inset-right));top:120px;width:min(350px,calc(100vw - 30px));max-height:calc(100dvh - 145px);overflow:auto;touch-action:pan-y;padding:18px;border:1px solid #f0cbd7;border-radius:12px 12px 18px 12px;background:linear-gradient(135deg,#fffbf3f5,#f9e6ecf5);box-shadow:0 12px 36px #41202b42;color:#794754}
.dorm-collection header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px dashed #d5aebb;padding-bottom:10px}.dorm-collection h2{font:19px 'Songti SC',serif;margin:0}.dorm-collection-close{font:26px Georgia!important;min-width:38px;min-height:38px}
.dorm-collection h3{font:12px 'Songti SC',serif;margin:18px 0 8px}.dorm-collected-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.dorm-collected-grid figure{margin:0;text-align:center;padding:7px}.dorm-collected-grid img{width:100%;height:90px;object-fit:contain}.dorm-collected-grid figure>span{font-size:36px}.dorm-collected-grid figcaption{font-size:11px;margin-top:7px}.dorm-collected-grid>p{grid-column:1/-1;font-size:12px;line-height:1.8;opacity:.7}.dorm-collection section>p{font:11px 'Songti SC',serif;text-align:center;margin-top:22px;color:#ad8595}
/* A transparent, paper-wide placement layer. Only the stickers intercept touch. */
.dorm-paper{transform:none}.dorm-sheet-surface{position:relative;container-type:inline-size}.dorm-stamp-space{height:62px}.dorm-placed{position:absolute;inset:0;display:block;min-height:0;pointer-events:none;--stamp-size:10cqw}
.dorm-placed .dorm-sticker{position:absolute;display:grid;place-items:center;width:var(--stamp-size);height:var(--stamp-size);min-width:0;min-height:0;transform:translate(-50%,-50%);padding:0!important;font-size:var(--stamp-size)!important;border:0;line-height:1}
.dorm-placed button{pointer-events:auto;touch-action:none!important;cursor:grab;user-select:none}.dorm-placed button:active{cursor:grabbing}.dorm-placed button[aria-pressed=true]{outline:1px dashed #b76182;outline-offset:3px;border-radius:3px}.dorm-placed img{width:100%;height:100%;object-fit:contain;pointer-events:none}.dorm-placed span{pointer-events:none}
.dorm-sticker-area{margin-top:10px;display:block}.dorm-sticker-choices{max-width:none;width:100%;gap:12px}.dorm-sticker-controls{display:flex;align-items:center;gap:12px;justify-content:space-between}.dorm-sticker-controls .sticker-instruction{width:auto;font-size:10px;line-height:1.6}.dorm-sticker-controls button{font-size:10px;padding:8px 3px!important;min-height:32px;white-space:nowrap;border-bottom:1px solid #bc6e8e!important}.dorm-sticker-controls button:disabled{opacity:.35;cursor:default}
@media(max-height:500px) and (orientation:landscape){.dorm-header{top:10px;right:16px;gap:0}.dorm-header .dorm-memory{font-size:11px;padding:6px 10px}.dorm-collection-open{height:38px;width:38px}.dorm-footer{bottom:12px}.dorm-footer .dorm-caption{font-size:13px;padding:5px 12px}.dorm-stamp-space{height:35px}.dorm-sticker-area{margin-top:5px}.dorm-sticker-choices{gap:10px}.dorm-sticker-controls .sticker-instruction{font-size:8px}.dorm-sticker-controls button{font-size:9px;min-height:24px;padding:4px!important}.dorm-collection>section{top:55px;right:65px;max-height:calc(100dvh - 65px);padding:12px}.dorm-collected-grid img{height:60px}}
@media(orientation:portrait){.dorm-world{width:211.689dvh}.dorm-footer .dorm-caption{display:block}}

/* Keep the paper's writing areas stable when fields become a finished page. */
.dorm-fields .dorm-field p{min-height:31px;line-height:30px}.dorm-fields .field-message p{min-height:95px}
@media(max-height:600px) and (orientation:landscape){.dorm-fields .dorm-field p{min-height:28px;line-height:28px}.dorm-fields .field-message p{min-height:90px}}
@media(max-height:400px) and (orientation:landscape){.dorm-fields .dorm-field p{min-height:25px;line-height:25px}.dorm-fields .field-message p{min-height:75px}}
/* Clear physical invitations, while keeping the room quiet. */
.dorm-bedding{position:absolute;left:1%;top:12%;width:43%;height:12%;clip-path:polygon(0 0,100% 23%,100% 100%,0 76%);padding:0!important}.dorm-bedding>span{position:absolute;left:35%;top:35%;font:12px 'Songti SC',serif;color:#fff1dc;text-shadow:0 1px 6px #643044;opacity:0;transition:opacity .25s}.dorm-bedding:hover>span,.dorm-bedding:focus-visible>span{opacity:1}
.dorm-write-entry{position:absolute;left:65.8%;top:61.8%;width:14.5%;padding:8px 10px!important;text-align:left;transform:rotate(-2deg);color:#743c51!important;background:#f7e7cf!important;border:1px solid #d6b89d!important;box-shadow:1px 3px 5px #743c5130;font:clamp(10px,1.1cqw,17px) 'Songti SC',serif!important;white-space:nowrap}
.dorm-write-entry:before{content:'';position:absolute;top:-5px;left:34%;width:32%;height:11px;background:#d3929b99;transform:rotate(5deg)}.dorm-write-entry>span{margin-right:3px}.dorm-write-entry>i{display:block;font:normal clamp(7px,.58cqw,10px) sans-serif;letter-spacing:.02em;margin-top:6px;color:#af7e80}.dorm-write-entry:hover{transform:rotate(-1deg) translateY(-2px)}
.dorm-collection-write{display:block;width:100%;margin-top:16px;padding:12px 8px!important;border:1px solid #c591a2!important;border-radius:5px;background:#944860!important;color:#fff4e4!important;font:13px 'Songti SC',serif!important}
/* Vintage loose-leaf page: cloth binding, quiet rose rules and a paper bookmark. */
.dorm-paper{border:1px solid #d8b6a6;border-left:13px solid #a15970;outline:1px solid #fff1db;background:radial-gradient(ellipse at 100% 0,#fffdf580,transparent 70%),repeating-linear-gradient(0deg,#b9837910 0 .6px,transparent .8px 4px),#fff7e6;box-shadow:4px 6px 0 #e4cdb8,6px 8px 0 #b47d7c,8px 18px 45px #34172665;padding:27px 30px 20px 39px;border-radius:2px 7px 7px 2px}
.dorm-paper:before{left:10px;top:15%;bottom:6%;width:7px;background:radial-gradient(circle,#7e485b 0 2px,#ddc3aa 2.1px 3px,transparent 3.5px) 0 0/7px 76px}
.dorm-tape.tape-top{left:auto;right:23px;top:0;width:19px;height:52px;background:linear-gradient(90deg,#a85c76,#b96c83 50%,#a85c76);transform:none;clip-path:polygon(0 0,100% 0,100% 100%,50% 81%,0 100%)}
.dorm-tape.tape-bottom{width:52px;height:18px;right:8px;bottom:9px;opacity:.5;background:repeating-linear-gradient(90deg,#d693a599 0 5px,#f8e1dfcc 5px 6px);transform:rotate(-9deg)}
.paper-heading{position:relative;margin:0 0 24px;padding:9px 0 18px;border-bottom:1px solid #c9959f;color:#8e405d}
.paper-heading:after{content:'✧';position:absolute;bottom:-8px;left:calc(50% - 13px);width:26px;background:#fff6e6;font:14px Georgia;color:#ba8294}
.paper-heading small{font:8px Georgia,serif;letter-spacing:.22em;color:#b28686}.paper-heading h2{font:600 32px/1.35 'Songti SC',serif;letter-spacing:.24em;margin:11px 0 8px;text-shadow:none}.paper-heading p{font:11px 'Kaiti SC','Songti SC',serif;letter-spacing:.05em;color:#a07479}
.dorm-field>span{font:11px 'Songti SC',serif;letter-spacing:.08em;margin-bottom:5px;color:#a56179}.dorm-fields{gap:19px}.dorm-field input,.dorm-field textarea,.dorm-field p{background:repeating-linear-gradient(transparent 0 28px,#cdadb19e 28px 29px,transparent 29px 30px)}
.dorm-field input::placeholder,.dorm-field textarea::placeholder{color:#b99e98}.paper-foot{border-top:1px solid #e1c6be;padding-top:10px;color:#af8685}.paper-foot>small{font-size:8px}.dorm-stamp-space{height:65px}
.dorm-sticker-area{border-top:1px dashed #cfb3ad;margin-top:18px;padding-top:12px}.dorm-sticker-choices{display:block;overflow:visible;max-width:none;padding:0}
.dorm-sticker-group{margin-bottom:12px}.dorm-sticker-group h3{margin:0 0 6px;font:13px 'Songti SC',serif;color:#874b62;letter-spacing:.04em}.dorm-sticker-group h3 small{font:9px sans-serif;color:#b08388;margin-left:7px}.dorm-sticker-group p{font:10px/1.6 sans-serif;color:#b18e89;margin:5px 0 9px}
.dorm-sticker-tray{display:flex;gap:6px;overflow-x:auto;padding:5px 2px 8px;touch-action:pan-x;scrollbar-width:thin;scrollbar-color:#c89aa8 #f9ede0}
.dorm-sticker-choices .dorm-sticker-tray button{position:relative;display:flex;flex:0 0 58px;min-height:65px;padding:5px 3px!important;background:#f6e8dc;border:1px solid #ead2c8!important;border-radius:5px;gap:5px}
.dorm-sticker-choices .dorm-sticker-tray img{width:42px;height:42px;object-fit:contain}.dorm-sticker-choices .dorm-sticker-tray span{font-size:30px;height:42px;display:grid;place-items:center}.dorm-sticker-choices .dorm-sticker-tray small{font:8px/1.4 sans-serif;white-space:normal;color:#916c73;max-width:55px}
.dorm-sticker-choices .dorm-sticker-tray button[aria-pressed=true]{opacity:1;background:#efdae0;border-color:#bd8097!important}.dorm-sticker-choices .dorm-sticker-tray button[aria-pressed=true]:after{content:'✓';position:absolute;top:2px;right:3px;color:#944c6a;font-size:9px}.dorm-sticker-group.basics h3{font-size:11px;color:#a18782}
.dorm-sticker-group.basics .dorm-sticker-tray button{flex-basis:45px;min-height:48px;background:none;border-color:transparent!important}.dorm-sticker-group.basics .dorm-sticker-tray span{font-size:25px;height:30px}.dorm-sticker-controls{padding-top:3px;border-top:1px solid #ead6cc}
.dorm-actions .dorm-finish{margin:0;min-height:42px;font:13px 'Songti SC',serif!important;padding:11px 25px!important;background:#96445f!important;color:#fff5e4!important;border:1px solid #b56881!important;box-shadow:0 3px 15px #48203430}
.dorm-paper.is-editing{max-height:calc(var(--visible-height) - 160px)}
@media(max-height:600px) and (orientation:landscape){.dorm-paper{padding:15px 25px 12px 30px;border-left-width:10px}.dorm-paper.is-editing{max-height:calc(var(--visible-height) - 110px)}.paper-heading{padding:0 0 12px;margin-bottom:14px}.paper-heading h2{font-size:24px;margin:5px 0 6px}.paper-heading small{font-size:7px}.paper-heading p{font-size:10px}.dorm-tape.tape-top{width:14px;height:36px;right:14px}.dorm-fields{gap:9px 24px}.dorm-field>span{font-size:10px;margin-bottom:2px}.dorm-stamp-space{height:30px}.paper-foot{padding-top:7px}.dorm-sticker-area{margin-top:10px;padding-top:9px}.dorm-sticker-group{margin-bottom:8px}.dorm-sticker-tray{gap:7px}.dorm-sticker-choices .dorm-sticker-tray button{flex-basis:53px;min-height:56px}.dorm-sticker-choices .dorm-sticker-tray img{width:34px;height:34px}.dorm-sticker-group h3{font-size:12px}.dorm-sticker-group.basics .dorm-sticker-tray button{min-height:44px}.dorm-actions .dorm-finish{min-height:34px;padding:7px 20px!important}.dorm-write-entry{padding:6px 7px!important}.dorm-write-entry>i{margin-top:3px}}
.dorm-keyboard .dorm-paper.is-editing{max-height:calc(var(--visible-height) - 88px)}
/* Writing page and open sticker wallet sit together, so collected art stays visible. */
.dorm-paper-wrap:has(.has-sticker-tray){width:min(860px,92vw)}
.dorm-paper.has-sticker-tray{display:grid;grid-template-columns:minmax(0,1fr) 210px;gap:26px;align-items:start}
.has-sticker-tray .dorm-sheet-surface{padding-right:21px;border-right:1px dashed #d8b9ae}
.has-sticker-tray .dorm-sticker-area{margin:0;padding:13px 12px 10px;border:1px solid #e3c7c0;border-radius:3px 12px 3px 3px;background:linear-gradient(145deg,#f0d9d9bb,#f9ebe3b3);box-shadow:inset 0 0 0 4px #fff3e866;max-height:calc(var(--visible-height) - 250px);overflow-y:auto;scrollbar-width:thin;touch-action:pan-y}
.has-sticker-tray .dorm-sticker-group h3{line-height:1.6}.has-sticker-tray .dorm-sticker-group h3 small{display:block;margin-left:0}
.has-sticker-tray .dorm-sticker-tray{flex-wrap:wrap;overflow:visible;gap:5px}.has-sticker-tray .dorm-sticker-tray button{flex-basis:53px}
.has-sticker-tray .dorm-sticker-controls{display:block}.has-sticker-tray .sticker-instruction{display:block}.has-sticker-tray [data-remove-selected]{margin-top:4px}
@media(max-height:600px) and (orientation:landscape){.dorm-paper.has-sticker-tray{grid-template-columns:minmax(0,1fr) 165px;gap:13px}.has-sticker-tray .dorm-sheet-surface{padding-right:12px}.has-sticker-tray .dorm-sticker-area{padding:8px;max-height:calc(var(--visible-height) - 142px)}.has-sticker-tray .dorm-sticker-tray button{flex-basis:43px;min-height:50px}.has-sticker-tray .dorm-sticker-tray img{width:30px;height:30px}.has-sticker-tray .dorm-sticker-tray small{font-size:7px}.has-sticker-tray .dorm-fields{column-gap:12px}.has-sticker-tray .paper-heading p{font-size:9px}.has-sticker-tray .paper-heading h2{font-size:23px}}
@media(max-width:700px) and (orientation:landscape){.dorm-paper.has-sticker-tray{grid-template-columns:minmax(0,1fr) 140px;gap:10px;padding-left:23px;padding-right:14px}.has-sticker-tray .dorm-sticker-tray button{flex-basis:48px}.has-sticker-tray .paper-heading h2{font-size:19px}.has-sticker-tray .paper-heading small{font-size:6px}.has-sticker-tray .dorm-field>span{font-size:8px}}
@media(orientation:portrait){.dorm-paper.has-sticker-tray{display:block}.has-sticker-tray .dorm-sheet-surface{padding-right:0;border:0}.has-sticker-tray .dorm-sticker-area{margin-top:16px;max-height:240px}.has-sticker-tray .dorm-sticker-tray{flex-wrap:nowrap;overflow-x:auto}}

.dorm-bedding[aria-pressed=true]>span{opacity:1}

/* One personal scrapbook sheet with a separate, usable sticker wallet. */
.has-paper .dorm-scene{filter:blur(5px) brightness(.91) saturate(.88)}
.dorm-hand .dorm-shade{background:#64334320;backdrop-filter:blur(2px)}
.dorm-paper-wrap,.dorm-paper-wrap:has(.has-sticker-tray){width:min(900px,94vw);gap:12px}
.dorm-paper,.dorm-paper.has-sticker-tray,.dorm-paper.is-editing{display:grid;grid-template-columns:minmax(0,1fr) 242px;gap:28px;align-items:start;padding:12px 8px 14px;border:0;border-radius:0;outline:0;background:none;box-shadow:none;max-height:calc(var(--visible-height) - 150px);overflow:auto;transform:none;scrollbar-color:#d6a0b0 #f9e6e622}
.dorm-paper:before{display:none}
.dorm-paper:focus-visible{outline:0}
.dorm-sheet-surface,.has-sticker-tray .dorm-sheet-surface{position:relative;padding:40px 40px 24px 52px;border:1px solid #e3b6c0;background:repeating-linear-gradient(35deg,#b7808010 0 .6px,transparent .8px 3px),linear-gradient(125deg,#fffaf3,#fcf1e9);box-shadow:2px 3px 0 #f0d6ce,5px 7px 16px #5b263837;color:#724455;isolation:isolate}
.dorm-sheet-surface:before{content:'';position:absolute;left:12px;top:56px;bottom:24px;width:12px;background:radial-gradient(circle,#815d60 0 4px,#b9959166 4.3px 5.5px,transparent 6px) center top/12px 67px;pointer-events:none}
.dorm-sheet-surface:after{content:'';position:absolute;inset:17px 16px 15px 34px;border:1px solid #e9b3c377;pointer-events:none;z-index:-1}
.dorm-sheet-surface .dorm-tape{z-index:2;clip-path:none;opacity:.9;width:91px;height:24px;background:repeating-linear-gradient(90deg,#fff8 0 2px,transparent 2px 9px),repeating-linear-gradient(0deg,#eda0b2 0 7px,#ffd5dd 7px 9px);box-shadow:0 1px 2px #b5778222}
.dorm-sheet-surface .tape-top{left:15px;right:auto;top:6px;transform:rotate(-18deg)}
.dorm-sheet-surface .tape-bottom{right:5px;bottom:13px;transform:rotate(-24deg)}
.dorm-paperclip{position:absolute;right:69px;top:-8px;width:14px;height:37px;border:2px solid #d67898;border-radius:9px;transform:rotate(30deg);z-index:3;box-shadow:1px 1px #fff8}
.dorm-paperclip:after{content:'';position:absolute;inset:2px 3px 6px 2px;border:1px solid #d67898;border-radius:8px}
.paper-doodles{position:absolute;inset:0;pointer-events:none;color:#db7798;z-index:1;font:27px 'Kaiti SC',serif}
.paper-doodles i{position:absolute;font-style:normal}.paper-doodles i:nth-child(1){left:34px;top:93px;transform:rotate(-19deg)}.paper-doodles i:nth-child(2){right:18px;top:155px}.paper-doodles i:nth-child(3){right:17px;top:58%;font-size:21px}.paper-doodles i:nth-child(4){left:30px;bottom:31px;font-size:21px}
.paper-heading{margin:0 0 26px;padding:0;border:0;color:#d65f89}
.paper-heading:after{display:none}.paper-heading small{display:block;color:#a57883;font:12px 'Kaiti SC','STKaiti',serif;letter-spacing:.08em;text-align:right;margin-bottom:14px}
.paper-heading h2,.has-sticker-tray .paper-heading h2{font:900 clamp(29px,3.4vw,44px)/1.3 'PingFang SC','Microsoft YaHei',sans-serif;letter-spacing:.02em;margin:0 0 5px;color:#fff1e9;-webkit-text-stroke:1.3px #da7295;text-shadow:2px 3px 0 #e6a0b6,3px 4px 0 #bd6c8b}
.paper-heading p,.has-sticker-tray .paper-heading p{color:#d57397;font:600 10px/1.5 sans-serif;letter-spacing:.23em}
.dorm-fields,.has-sticker-tray .dorm-fields{display:grid;grid-template-columns:1fr;gap:22px}
.dorm-field{grid-column:auto!important;grid-row:auto!important}
.dorm-field>span,.has-sticker-tray .dorm-field>span{font:16px/1.5 'Kaiti SC','STKaiti','Songti SC',serif;letter-spacing:.02em;margin-bottom:3px;color:#cf698b}
.dorm-field input,.dorm-field textarea,.dorm-fields .dorm-field p{font:18px/30px 'Kaiti SC','STKaiti','Songti SC',serif;color:#61434c;background:repeating-linear-gradient(transparent 0 28px,#db91ad99 28px 29px,transparent 29px 30px);min-height:31px;padding:0 2px}
.dorm-field input{height:31px}.dorm-field textarea,.dorm-fields .field-message p{height:120px;min-height:120px}.dorm-fields .field-message p{height:auto}
.dorm-field input::placeholder,.dorm-field textarea::placeholder{color:#bc98a2;font-size:13px}
.dorm-stamp-space{height:82px;position:relative;display:flex;justify-content:space-between;align-items:center;margin-top:12px}
.paper-little-note{font:12px/1.65 'Kaiti SC','STKaiti',serif;color:#aa7a87;transform:rotate(-4deg);margin:0;padding:9px 14px;border:1px dashed #dca3b4;border-radius:3px}
.paper-foot{border:0;padding:0;margin:4px 0 0;display:flex;flex-direction:column;gap:13px;color:#bd728d;font:12px 'Kaiti SC','STKaiti',serif}
.paper-foot>span{text-align:right}.paper-foot>small{text-align:center;font:9px sans-serif;letter-spacing:.19em;color:#d691a9}
.has-sticker-tray .dorm-sticker-area{display:block;margin:30px 0 0;padding:17px 16px 16px;border:1px solid #f8dee5;border-radius:18px 18px 8px 8px;background:linear-gradient(140deg,#fff6efed,#f6e2e4f5);box-shadow:4px 8px 22px #5b26382e,inset 0 0 0 4px #fffbf466;max-height:calc(var(--visible-height) - 216px);overflow-y:auto;touch-action:pan-y}
.sticker-wallet-title{border-bottom:1px solid #e8beca;margin-bottom:19px;padding-bottom:13px}.sticker-wallet-title>span{display:block;width:100%;border:1px solid #eaa0b9;border-radius:16px;padding:8px 12px;text-align:center;background:linear-gradient(#e68fab,#d87298);color:#fff7f4;font:16px 'Songti SC',serif;box-shadow:inset 0 0 0 2px #ffffff55}.sticker-wallet-title>small{display:block;text-align:center;margin-top:10px;color:#a9818e;font:10px 'Kaiti SC',serif}
.has-sticker-tray .dorm-sticker-tray{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;overflow:visible;padding-bottom:12px}
.has-sticker-tray .dorm-sticker-tray button,.dorm-sticker-group.basics .dorm-sticker-tray button{width:100%;min-height:74px;flex-basis:auto;background:#fff9f34d;border:1px solid transparent!important;padding:6px 2px!important;border-radius:10px}
.has-sticker-tray .dorm-sticker-tray img{width:46px;height:46px}.has-sticker-tray .dorm-sticker-tray span{height:46px;font-size:36px;filter:drop-shadow(0 2px 1px #c1879340)}
.has-sticker-tray .dorm-sticker-tray small{font:9px/1.35 sans-serif;color:#916774;max-width:100%}
.has-sticker-tray .dorm-sticker-group h3{font:13px/1.7 'Songti SC',serif;color:#a3647b}.has-sticker-tray .dorm-sticker-group h3 small{font-size:9px;color:#b88a98}
.has-sticker-tray .dorm-sticker-group p{line-height:1.9;font-size:11px}
.has-sticker-tray .dorm-sticker-controls{border-top:1px solid #e7c1cd;padding-top:12px}.has-sticker-tray .sticker-instruction{font:11px/1.8 'Kaiti SC','Songti SC',serif;color:#a5768b}
.dorm-return{background:#fff5efec!important;border:1px solid #f7dce5!important;border-radius:18px!important;padding:7px 16px!important}
.dorm-actions button,.dorm-actions .dorm-finish{border-radius:20px;font:13px 'Songti SC',serif!important;padding:11px 26px!important;min-height:42px}
.dorm-actions button:first-child,.dorm-actions .dorm-finish{background:#b45c80!important;color:#fff8f0!important;border:1px solid #d391aa!important}
.dorm-status{color:#fff9f1;text-shadow:0 1px 6px #502436}
.dorm-keepsake-stamp{display:block;flex-shrink:0;color:#c56d8a;border:2px solid #ce8aa0;border-radius:50%;width:76px;height:76px;text-align:center;padding:19px 3px 0;font:15px 'Kaiti SC','STKaiti',serif;transform:rotate(-12deg);opacity:.8;box-shadow:inset 0 0 0 3px #fff5eb,inset 0 0 0 4px #ce8aa077;pointer-events:none}.dorm-keepsake-stamp small{display:block;font:7px sans-serif;letter-spacing:.08em;margin-top:6px}
.dorm-paper-curl{position:absolute;bottom:0;right:0;width:31px;height:31px;opacity:0;background:linear-gradient(135deg,transparent 48%,#e7bdc2 50%,#fff9f1 60%);pointer-events:none}
.dorm-finish-hearts{position:absolute;inset:0;pointer-events:none;overflow:hidden}.dorm-finish-hearts i{position:absolute;bottom:80px;right:20%;color:#d9799b;font:23px serif;opacity:0}.dorm-finish-hearts i:nth-child(2){right:10%;font-size:15px}.dorm-finish-hearts i:nth-child(3){right:30%;font-size:19px}
.is-celebrating .dorm-keepsake-stamp{animation:dorm-stamp-in 1.35s both}.is-celebrating .dorm-paper-curl{animation:dorm-corner 1.35s both}.is-celebrating .dorm-field p{animation:dorm-ink 1.1s both}.is-celebrating .dorm-finish-hearts i{animation:dorm-hearts 1.1s .18s both}.is-celebrating .dorm-finish-hearts i:nth-child(2){animation-delay:.3s}.is-celebrating .dorm-finish-hearts i:nth-child(3){animation-delay:.1s}
@keyframes dorm-stamp-in{0%,25%{opacity:0;transform:scale(1.5) rotate(-20deg)}48%{opacity:.95;transform:scale(.94) rotate(-12deg)}65%,100%{opacity:.8;transform:scale(1) rotate(-12deg)}}
@keyframes dorm-corner{0%,100%{opacity:0;scale:1}35%,65%{opacity:1;scale:1.25}}
@keyframes dorm-ink{from{opacity:.5}to{opacity:1}}
@keyframes dorm-hearts{0%{opacity:0;transform:translateY(0) scale(.5)}30%{opacity:.85}100%{opacity:0;transform:translateY(-65px) scale(1.1)}}
/* Captions stay below the open paper without covering its completion actions. */
.has-paper .dorm-hand{padding-bottom:64px}.has-paper .dorm-paper,.has-paper .dorm-paper.is-editing{max-height:calc(var(--visible-height) - 194px)}
@media(max-height:600px) and (orientation:landscape){
 .dorm-paper-wrap,.dorm-paper-wrap:has(.has-sticker-tray){width:min(810px,94vw);gap:6px}
 .dorm-paper,.dorm-paper.has-sticker-tray{grid-template-columns:minmax(0,1fr) 186px;gap:18px;padding:8px}
 .dorm-sheet-surface,.has-sticker-tray .dorm-sheet-surface{padding:22px 29px 17px 40px}
 .paper-heading{margin-bottom:16px}.paper-heading small{font-size:10px;margin-bottom:9px}.paper-heading h2,.has-sticker-tray .paper-heading h2{font-size:29px}.paper-heading p,.has-sticker-tray .paper-heading p{font-size:8px}
 .dorm-fields,.has-sticker-tray .dorm-fields{gap:12px}.dorm-field>span,.has-sticker-tray .dorm-field>span{font-size:13px}.dorm-field input,.dorm-field textarea,.dorm-fields .dorm-field p{font-size:16px}
 .dorm-stamp-space{height:76px}.has-sticker-tray .dorm-sticker-area{margin-top:8px;padding:11px;max-height:calc(var(--visible-height) - 148px)}
 .sticker-wallet-title{margin-bottom:12px}.sticker-wallet-title>span{font-size:14px;padding:5px}.sticker-wallet-title>small{font-size:9px}
 .has-sticker-tray .dorm-sticker-tray img{width:35px;height:35px}.has-sticker-tray .dorm-sticker-tray span{height:35px;font-size:29px}.has-sticker-tray .dorm-sticker-tray button{min-height:59px}.has-sticker-tray .dorm-sticker-tray small{font-size:8px}
 .has-paper .dorm-hand{padding-bottom:42px}.has-paper .dorm-paper,.has-paper .dorm-paper.is-editing{max-height:calc(var(--visible-height) - 116px)}
 .dorm-actions button,.dorm-actions .dorm-finish{min-height:32px;padding:7px 20px!important;font-size:12px!important}
 .has-paper .dorm-footer{bottom:5px}.dorm-footer .dorm-caption{font-size:12px;padding:4px 12px}
}
@media(orientation:portrait){
 .dorm-hand{padding-left:10px;padding-right:10px}.dorm-paper-wrap,.dorm-paper-wrap:has(.has-sticker-tray){width:min(520px,96vw)}
 .dorm-paper,.dorm-paper.has-sticker-tray{display:block;padding:10px 5px}
 .dorm-sheet-surface,.has-sticker-tray .dorm-sheet-surface{padding:32px 23px 21px 38px;border:1px solid #e3b6c0}
 .paper-heading h2,.has-sticker-tray .paper-heading h2{font-size:32px}.paper-heading small{font-size:10px}.paper-heading{margin-bottom:23px}
 .dorm-fields,.has-sticker-tray .dorm-fields{gap:18px}.dorm-field>span,.has-sticker-tray .dorm-field>span{font-size:15px}.dorm-field input,.dorm-field textarea,.dorm-fields .dorm-field p{font-size:16px}
 .has-sticker-tray .dorm-sticker-area{margin-top:20px;max-height:none;padding:16px}.has-sticker-tray .dorm-sticker-tray{display:flex;overflow-x:auto;flex-wrap:nowrap}.has-sticker-tray .dorm-sticker-group .dorm-sticker-tray button{flex:0 0 65px;width:65px}
 .sticker-wallet-title{margin-bottom:12px}.sticker-wallet-title>span{width:105px}.sticker-wallet-title>small{text-align:left}
 .dorm-keepsake-stamp{width:68px;height:68px;padding-top:16px;font-size:13px}.paper-little-note{font-size:11px;padding:8px}
 .paper-doodles i:nth-child(1){left:17px}.paper-doodles i:nth-child(2){right:8px}.paper-doodles i:nth-child(3){right:7px}
 .has-paper .dorm-footer{bottom:max(10px,env(safe-area-inset-bottom))}.dorm-footer .dorm-caption{font-size:13px}
}
.dorm-keyboard .dorm-hand{padding-bottom:8px}.dorm-keyboard.has-paper .dorm-paper.is-editing{max-height:calc(var(--visible-height) - 89px)}
@media(prefers-reduced-motion:reduce){.is-celebrating .dorm-field p{opacity:1}.dorm-finish-hearts,.dorm-paper-curl{display:none}}

/* Each placed sticker owns a separate remove button; the artwork remains draggable. */
.dorm-sticker-item{position:absolute;width:var(--stamp-size);height:var(--stamp-size);transform:translate(-50%,-50%);pointer-events:none}
.dorm-placed .dorm-sticker-item>.dorm-sticker{position:absolute;inset:0;transform:none}
.dorm-placed .dorm-sticker-remove{position:absolute;top:-9px;right:-6px;z-index:2;width:22px;height:22px;padding:0!important;display:grid;place-items:center;border:1px solid #e5a0b8;border-radius:50%;background:#fff6f2;color:#b84971;font:20px/1 Arial,sans-serif;box-shadow:0 1px 4px #79405233;cursor:pointer;touch-action:manipulation!important;pointer-events:auto}
.dorm-placed .dorm-sticker-remove:hover{background:#b84971;color:#fff6f2}
.dorm-sticker-item:focus-within{z-index:3}
@media(pointer:coarse){.dorm-placed .dorm-sticker-remove{width:24px;height:24px;top:-11px;right:-7px}}
/* The one usable pouch invites a touch through its paper, not a floating sign. */
.dorm-pocket:not([data-bag]) .pocket-paper{filter:saturate(.5);opacity:.65}
.dorm-pocket[data-bag=mine] .pocket-paper{inset:-23% 10% 8%;padding-top:6%;transform:rotate(-4deg);background:#fff3e6;border-color:#e090af;box-shadow:0 3px 6px #77324940}
.dorm-pocket[data-bag=mine] .pocket-paper:after{content:'';position:absolute;left:3%;top:5%;width:34%;height:12%;transform:rotate(-17deg);background:repeating-linear-gradient(90deg,#fff7 0 1px,transparent 1px 5px),repeating-linear-gradient(0deg,#e991b2 0 4px,#ffdbe5 4px 5px)}
.dorm-pocket[data-bag=mine] .pocket-paper>b{font-size:.8cqw;color:#bd557e;text-shadow:1px 1px #fff}
.dorm-pocket[data-bag=mine] .pocket-flap{transform:translateY(-3%) rotate(-1deg);transform-origin:top}
.pocket-pull{position:absolute;right:13%;top:-29%;width:15%;height:21%;border-radius:2px 2px 6px 6px;background:#cc799b;color:#fff3e8;font:.8cqw/1.8 serif;box-shadow:0 1px 3px #6e2e4433;transform:rotate(-4deg);pointer-events:none}
.pocket-cue{position:absolute;top:106%;left:15%;width:70%;padding:4% 0;border-radius:9px;background:#fff2e4df;color:#8f4c67;font:.65cqw 'Songti SC',serif;opacity:0;transition:opacity .25s;pointer-events:none}
.dorm-pocket[data-bag]:hover .pocket-paper,.dorm-pocket[data-bag]:focus-visible .pocket-paper{transform:translateY(-8%) rotate(-4deg)}
.dorm-pocket[data-bag]:hover .pocket-cue,.dorm-pocket[data-bag]:focus-visible .pocket-cue,.dorm-pocket.has-invitation .pocket-cue{opacity:1}
.dorm-pocket.has-invitation .pocket-paper{animation:dorm-pocket-invite 2.8s ease-in-out 1}
@keyframes dorm-pocket-invite{0%,100%{transform:rotate(-4deg)}35%,60%{transform:translateY(-9%) rotate(-4deg)}}
.dorm-pocket.is-empty .pocket-pull,.dorm-pocket.is-empty .pocket-cue{opacity:0}
.dorm-sticker-drop{position:fixed;z-index:65;width:90px;pointer-events:none;text-align:center;filter:drop-shadow(0 4px 8px #77324b44)}
.dorm-sticker-drop>img{width:82px;height:82px;object-fit:contain;margin:auto}.dorm-sticker-drop>span{display:block;width:max-content;max-width:240px;position:relative;left:50%;transform:translateX(-50%);background:#fff7ecf5;border:1px solid #e6b2c6;border-radius:18px;color:#a15f7b;padding:8px 13px;font:12px 'Songti SC',serif}.dorm-sticker-drop small{display:block;font-size:10px;margin-top:5px}
/* Laptop hotspot follows the existing photographed screen. */
.dorm-computer-hotspot{position:absolute;left:10.6%;top:50.5%;width:8.8%;height:9.2%;padding:0!important}
.computer-mini-screen{position:absolute;left:4%;top:4%;width:73%;height:76%;clip-path:polygon(0 0,94% 0,100% 100%,7% 100%);background:linear-gradient(145deg,#a96d85,#422d41);background-size:cover;background-position:center;opacity:.25;transition:opacity .3s;pointer-events:none}
.computer-mini-screen.has-wallpaper{opacity:.9}.dorm-computer-hotspot:hover .computer-mini-screen,.dorm-computer-hotspot:focus-visible .computer-mini-screen{opacity:.95}
.computer-hover-label{position:absolute;left:5%;top:108%;width:90%;font:.75cqw 'Songti SC',serif;white-space:nowrap;background:#fff1e8dd;border-radius:8px;padding:4%;opacity:0;transition:opacity .2s}
.dorm-computer-hotspot:hover .computer-hover-label,.dorm-computer-hotspot:focus-visible .computer-hover-label{opacity:1}
.dorm-computer{position:fixed;inset:0;top:var(--visible-top);height:var(--visible-height);z-index:35;display:flex;align-items:center;justify-content:center;padding:12px;touch-action:pan-y}
.computer-shell{position:relative;width:min(1030px,94vw);display:flex;flex-direction:column;align-items:stretch;gap:9px;max-height:100%}
.dorm-room .computer-leave{align-self:end;border:1px solid #f1d9dd;background:#fff5ebe8;border-radius:20px;font:12px 'Songti SC',serif;padding:9px 17px;min-height:34px}
.computer-bezel{position:relative;padding:21px 21px 30px;border-radius:16px 16px 6px 6px;background:linear-gradient(130deg,#574048,#382d35 45%,#53404c);border:1px solid #755665;box-shadow:0 18px 65px #30132370}
.computer-screen{position:relative;aspect-ratio:16/10;max-height:calc(var(--visible-height) - 151px);min-height:190px;overflow:hidden;border:2px solid #30202b;border-radius:5px;background:radial-gradient(ellipse at 80% 20%,#f7d3bf,transparent 60%),linear-gradient(135deg,#b58399,#c9a6a4 60%,#a87c91);background-size:cover;background-position:center;color:#714452}
.computer-system-bar{position:absolute;top:0;left:0;right:0;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:10px;background:#fff5e7b8;border-bottom:1px solid #f8e6d299;backdrop-filter:blur(12px);height:32px;padding:0 14px;font:12px 'Songti SC',serif}
.computer-system-bar small{font:10px 'Kaiti SC',serif;color:#a07f87}
.computer-desktop{position:absolute;inset:32px 0 0}.computer-folder{position:absolute;top:30px;left:29px;display:flex;align-items:center;flex-direction:column;gap:8px;padding:12px!important;border-radius:8px;color:#fff7ed!important;text-shadow:0 1px 5px #493441;font:15px 'Songti SC',serif!important}
.computer-folder:hover,.computer-folder:focus-visible{background:#fff5ef33}.computer-folder small{font:10px sans-serif;opacity:.8}
.computer-folder-icon{position:relative;display:grid;place-items:center;width:70px;height:48px;background:linear-gradient(#ffe3b3,#eabd89);border:2px solid #fff2d8;border-radius:4px 7px 7px 7px;color:#ad6580;font:25px serif;text-shadow:none;box-shadow:2px 5px 6px #65424b33}
.computer-folder-icon:before{content:'';position:absolute;left:-2px;top:-10px;width:33px;height:11px;background:#edc490;border:2px solid #fff2d8;border-bottom:0;border-radius:6px 8px 0 0}
.computer-desktop-note{position:absolute;right:6%;bottom:21%;color:#fff6ebc9;font:clamp(15px,2.3vw,27px) 'Kaiti SC','STKaiti',serif;letter-spacing:.13em;text-shadow:0 2px 8px #71455555;pointer-events:none}.has-wallpaper .computer-desktop-note{display:none}
.computer-wallpaper-tools{position:absolute;bottom:17px;left:17px;display:flex;gap:8px}.computer-wallpaper-tools button,.computer-viewer-actions button,.computer-crop-actions button{padding:9px 13px!important;border-radius:6px;border:1px solid #e4b6c6!important;background:#fff6eeeb!important;font:12px 'Songti SC',serif!important;color:#86546c!important;min-height:34px}
.computer-wallpaper-tools button:last-child{background:#fff6ee91!important}
.computer-bezel-mark{position:absolute;bottom:10px;left:0;right:0;text-align:center;font:7px sans-serif;letter-spacing:.28em;color:#b79ea9}
.computer-base{height:12px;margin-top:-9px;margin-left:-2%;width:104%;background:linear-gradient(#b9a2a6,#776269);border-radius:0 0 50% 50%;box-shadow:0 8px 16px #593c4e40}
.computer-album,.computer-crop{position:absolute;inset:48px 22px 21px;display:flex;flex-direction:column;background:#fff4eaeF;box-shadow:4px 7px 20px #55374740;border:1px solid #f9dcdf;border-radius:9px;overflow:hidden;backdrop-filter:blur(8px)}
.computer-window-bar{height:37px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 13px;background:linear-gradient(#e8bdcb,#dfacc2);color:#78475e;font:13px 'Songti SC',serif;border-bottom:1px solid #c58ca5}
.computer-window-bar button{font:24px/1 serif!important;width:32px;height:30px}.computer-thumbnails{flex:1;min-height:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:17px;align-content:center;padding:24px;overflow:auto}
.computer-thumbnails button{position:relative;padding:10px 10px 13px!important;background:#fffcf2!important;border:1px solid #e4c3c5!important;box-shadow:1px 4px 7px #90626a24;transform:rotate(-2deg);transition:transform .2s}
.computer-thumbnails button:nth-child(even){transform:rotate(2deg)}.computer-thumbnails button:hover{transform:translateY(-5px) rotate(0deg)}
.computer-thumbnails button>span{display:block;aspect-ratio:3/4;overflow:hidden;background:#eddbd3}.computer-thumbnails img{width:100%;height:100%;object-fit:cover}.computer-thumbnails b{display:block;font:12px 'Kaiti SC','STKaiti',serif;margin-top:12px}.computer-thumbnails small{display:block;font:8px sans-serif;color:#ba9a9e;margin-top:5px}
.computer-album-footer{text-align:center;font:11px 'Kaiti SC',serif;color:#b48b94;padding:8px;flex-shrink:0}
.computer-viewer{flex:1;min-height:0;display:flex;flex-direction:column;padding:14px 18px 0;gap:8px}.computer-photo-stage{position:relative;flex:1;min-height:0;touch-action:pan-y;background:#f0dfd677;border-radius:3px}
.computer-photo-stage img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;user-select:none;-webkit-user-drag:none}
.computer-photo-controls{display:flex;align-items:center;justify-content:center;gap:18px;flex-shrink:0}.computer-photo-controls button{width:35px;min-height:30px;border:1px solid #dbb1c0;border-radius:50%;background:#fff9ed;font:19px serif}
.computer-photo-caption{font:12px 'Kaiti SC',serif;color:#906072}.computer-viewer-actions,.computer-crop-actions{display:flex;justify-content:center;gap:10px;flex-shrink:0}
.computer-viewer-actions button:last-child,.computer-crop-actions button:last-child{background:#bd7797!important;color:#fff7ec!important}
.computer-notice{position:absolute;bottom:13px;left:50%;transform:translateX(-50%);width:max-content;max-width:90%;padding:9px 16px;margin:0;z-index:5;background:#573748ec;border:1px solid #fff0de55;color:#fff7ed;border-radius:18px;text-align:center;font:12px/1.6 'Songti SC',serif;pointer-events:none}
.computer-crop{gap:10px;padding-bottom:14px}.computer-crop-preview{display:flex;align-items:center;justify-content:center;flex:1;min-height:0;overflow:hidden;margin:0 16px;background:#d4bdc433}
.computer-crop canvas{display:block;width:auto;height:auto;max-width:100%;max-height:100%;touch-action:none;cursor:grab}.computer-crop canvas:active{cursor:grabbing}
.computer-zoom{display:flex;justify-content:center;align-items:center;gap:12px;font:12px 'Songti SC',serif;flex-shrink:0}.computer-zoom input{width:45%;accent-color:#b8648a}.computer-zoom output{width:35px}
.computer-crop>p{text-align:center;font:11px 'Songti SC',serif;color:#ad8491;margin:0;padding:0 8px;flex-shrink:0}
@media(max-height:600px) and (orientation:landscape){.computer-shell{gap:4px;width:min(900px,94vw)}.computer-bezel{padding:10px 12px 20px;border-radius:10px}.computer-screen{max-height:calc(var(--visible-height) - 97px);min-height:130px}.computer-leave{padding:5px 13px!important;min-height:26px!important;font-size:11px!important}.computer-bezel-mark{bottom:7px;font-size:6px}.computer-system-bar{height:25px;font-size:10px}.computer-system-bar small{font-size:8px}.computer-desktop{top:25px}.computer-folder{top:14px;left:19px;font-size:12px!important;gap:5px}.computer-folder-icon{width:51px;height:34px;font-size:19px}.computer-folder small{font-size:8px}.computer-album,.computer-crop{inset:32px 12px 10px}.computer-window-bar{height:26px;font-size:11px}.computer-window-bar button{height:24px;font-size:20px!important}.computer-thumbnails{padding:12px 23px;gap:18px;align-content:start}.computer-thumbnails button>span{aspect-ratio:4/3}.computer-thumbnails b{font-size:10px;margin-top:6px}.computer-thumbnails small{display:none}.computer-album-footer{font-size:9px;padding:4px}.computer-viewer{padding:6px 10px 0;gap:3px}.computer-photo-controls button{min-height:23px;width:28px;font-size:16px}.computer-photo-caption{font-size:10px}.computer-viewer-actions button,.computer-crop-actions button,.computer-wallpaper-tools button{min-height:26px;padding:5px 10px!important;font-size:10px!important}.computer-wallpaper-tools{bottom:10px;left:12px}.computer-notice{padding:5px 11px;font-size:10px;bottom:6px}.computer-crop{gap:5px;padding-bottom:7px}.computer-crop>p{font-size:9px}.computer-zoom{font-size:10px}.computer-base{height:8px;margin-top:-4px}}
@media(orientation:portrait){.computer-shell{width:96vw}.computer-bezel{padding:13px 10px 25px}.computer-screen{aspect-ratio:auto;height:min(640px,calc(var(--visible-height) - 145px));max-height:none}.computer-system-bar small{display:none}.computer-album,.computer-crop{inset:45px 10px 14px}.computer-thumbnails{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;padding:19px;align-content:start}.computer-thumbnails b{font-size:11px}.computer-thumbnails button{padding:7px 7px 10px!important}.computer-viewer{padding:9px 8px 0}.computer-photo-controls{gap:7px}.computer-photo-caption{font-size:11px}.computer-viewer-actions{gap:6px}.computer-viewer-actions button{padding:8px!important;font-size:11px!important}.computer-crop{gap:12px}.computer-folder{left:14px;top:25px}.computer-wallpaper-tools{left:12px;right:12px;justify-content:center}.computer-wallpaper-tools button{font-size:11px!important;padding:8px!important}.computer-desktop-note{font-size:18px;bottom:30%}.computer-notice{font-size:11px}.computer-crop>p{font-size:10px}}

.computer-thumbnails img{opacity:0;transition:opacity .25s}.computer-thumbnails img.is-ready{opacity:1}
/* Keep the screen full-width in WebKit when landscape height constrains the bezel. */
.computer-screen{width:100%}
.computer-album,.computer-crop{background:#fff4ea}
@media(max-height:600px) and (orientation:landscape){
 .computer-viewer{display:grid;grid-template-columns:minmax(0,1fr) 153px;grid-template-rows:1fr auto;gap:6px 10px;padding:7px 12px}
 .computer-photo-stage{grid-column:1;grid-row:1 / span 2;height:100%}
 .computer-photo-controls{grid-column:2;grid-row:1;align-self:end;gap:5px;flex-wrap:wrap}.computer-photo-caption{order:-1;width:100%;text-align:center}
 .computer-viewer-actions{grid-column:2;grid-row:2;flex-direction:column;gap:5px}.computer-album:has(.computer-viewer:not([hidden])) .computer-album-footer{display:none}
}

/* Self-hosted, unmodified LXGW WenKai Lite, SIL OFL 1.1 (license beside font). */
@font-face{font-family:'Dorm Handwriting';src:url('./assets/fonts/LXGWWenKaiLite-Regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
.dorm-sheet-surface .paper-heading h2,.has-sticker-tray .paper-heading h2{font-family:'Dorm Handwriting','Kaiti SC',serif;font-weight:400}
.dorm-sheet-surface .paper-heading small,.dorm-sheet-surface .dorm-field>span,.dorm-sheet-surface .dorm-field input,.dorm-sheet-surface .dorm-field textarea,.dorm-sheet-surface .dorm-field p,.dorm-sheet-surface .paper-foot>span,.dorm-sheet-surface .dorm-keepsake-stamp{font-family:'Dorm Handwriting','Kaiti SC',serif;font-weight:400}
.dorm-stamp-space{justify-content:flex-end}
.dorm-room>.dorm-music-toggle{position:fixed;right:max(22px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));display:grid;place-items:center;width:36px;height:36px;border:1px solid #ffe6d43d;border-radius:50%;background:#3b142c38;color:#ffe8d4;font:20px/1 sans-serif;z-index:10;backdrop-filter:blur(8px)}
.dorm-music-toggle[aria-pressed=false]{opacity:.5}
#experience[data-phase=dorm]>#musicToggle{visibility:hidden}

/* Keep the confirmed crop intact on both the room laptop and responsive desktop. */
.computer-screen.has-wallpaper,.computer-mini-screen.has-wallpaper{background-size:contain;background-repeat:no-repeat;background-color:#fff4e9}
.computer-wallpaper-tools{flex-wrap:wrap}
.computer-crop-fit{display:flex;justify-content:center;gap:8px;flex-shrink:0}
.computer-crop-fit button{font:11px 'Songti SC',serif!important;padding:5px 12px!important;border:1px solid #dcadbf!important;border-radius:12px;background:#fff9f0!important}
@media(max-height:600px) and (orientation:landscape){.computer-crop>p{display:none}.computer-crop-fit button{padding:3px 10px!important;font-size:10px!important}}

/* Match childhood's camera: main artwork max(112vw, 177.68dvh),
   plus the existing left doorway, with horizontal exploration. */
.dorm-scene{overflow-x:auto;overflow-y:hidden;touch-action:pan-x;overscroll-behavior-x:contain}
.dorm-world{left:0;top:50%;width:max(133.436vw,211.690dvh);margin:0;transform:translateY(-50%)}

.shared-collection .dorm-collection-open{display:none!important}
