/* A letter on the desk and a drawer in the same miniature world. */
dialog:has(.town-cabinet){width:min(960px,calc(100vw - 32px));border-radius:12px;background:#4f3022}
.town-cabinet{--cabinet-ink:#493529;--cabinet-paper:#f4e7ce;--cabinet-brass:#c3a16a;box-sizing:border-box;position:relative;font-family:Georgia,'Times New Roman',serif;color:var(--cabinet-ink)}
.town-cabinet *{box-sizing:border-box}.town-cabinet [hidden]{display:none!important}
.town-cabinet button{font:inherit;cursor:pointer}.town-cabinet button:focus-visible{outline:2px solid #ecc77b;outline-offset:5px}.town-cabinet button:disabled{opacity:.5;cursor:wait}
.cabinet-text-button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:44px;border:0;background:none;padding:9px 4px;color:inherit;text-decoration:underline;text-underline-offset:5px;text-decoration-color:#9f805260;text-decoration-thickness:1px;font-size:15px!important}
.cabinet-text-button:hover{text-decoration-color:currentColor}.cabinet-status{min-height:1.4em;margin:0;padding:0 24px 16px;text-align:center;font:12px/1.5 Georgia;color:#d9bc94}.cabinet-status:empty{min-height:0;padding:0}
.cabinet-sr{position:absolute!important;left:0;bottom:0;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;padding:0!important}
.letter-cabinet{isolation:isolate;overflow:hidden;padding:54px 11% 24px;background:repeating-linear-gradient(2deg,#593b2900 0px,#d09d6420 1px,#593b2900 2px,#593b2900 13px),linear-gradient(110deg,#62412e,#795239 46%,#4f3327);box-shadow:inset 0 0 80px #20150f60;min-height:570px}
.letter-envelope{position:absolute;z-index:-1;inset:125px 10% 57px;background:linear-gradient(25deg,#c7ad7d,#e3cea7);border:1px solid #bfa57c;box-shadow:3px 13px 20px #1f100c65;transform:rotate(-5deg);display:flex;align-items:flex-end;justify-content:space-between;padding:24px 28px;color:#806440;font-size:17px}
.letter-envelope:after{content:'';position:absolute;inset:0;background:linear-gradient(149deg,transparent 49.8%,#a88a581f 50%,transparent 50.2%),linear-gradient(30deg,transparent 49.8%,#a88a5829 50%,transparent 50.2%)}
.letter-envelope i{font-size:27px;letter-spacing:-1px}
.letter-note{position:relative;min-height:390px;padding:29px 38px 34px;background:linear-gradient(90deg,transparent 49.8%,#ae8a4f13 50%,transparent 50.4%),linear-gradient(0deg,transparent 51%,#ab8b5115 51.2%,transparent 51.5%),linear-gradient(125deg,#fff4dd,#f1dfba);box-shadow:0 1px 1px #ffecc3 inset,1px 8px 18px #23160f55;clip-path:polygon(0 0,calc(100% - 19px) 0,100% 19px,100% 100%,0 100%);transform:rotate(.7deg)}
.letter-note-top{display:flex;justify-content:space-between;align-items:center;min-height:60px;gap:12px;margin-bottom:26px}.letter-note-top>span:first-child{font-size:10px;text-transform:uppercase;letter-spacing:1.7px;color:#957653;max-width:160px;line-height:1.7}
.letter-postmark{width:62px;height:62px;border:1px solid #9663416b;outline:1px solid #96634152;outline-offset:-5px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:3px;transform:rotate(-13deg);color:#9b6f4d;flex:none}.letter-postmark span{font-size:6px;letter-spacing:1.5px}.letter-postmark b{font-size:21px;font-weight:400;line-height:1}
.letter-note h2{font-size:clamp(26px,4vw,39px)!important;line-height:1.1!important;font-weight:400;letter-spacing:-1px!important;margin:0 0 22px!important}.letter-message{font-size:clamp(18px,2.5vw,23px);line-height:1.6;margin:0;max-width:29em;color:#604831}.letter-signature{font-size:23px;line-height:1.4;margin:27px 0 0;text-align:right;font-style:italic;color:#79573b}.letter-signature span{display:block;font-size:14px;margin-bottom:5px}.letter-fold{position:absolute;top:0;right:0;width:19px;height:19px;background:#d1b990;box-shadow:-2px 2px 2px #73533220}
.letter-footer{position:relative;display:flex;justify-content:flex-end;align-items:center;gap:16px;margin-top:43px;color:#efd7ae;font-size:12px;font-style:italic}.letter-footer button{font-style:normal}.letter-footer>span{opacity:.7}
.keepsake-cabinet{padding:31px 24px 23px;background:repeating-linear-gradient(0deg,#bb84420b 0px,#bb84420b 1px,transparent 1px,transparent 8px),linear-gradient(100deg,#513327,#795137 50%,#513226);box-shadow:inset 0 0 80px #26150d70}
.drawer-heading{text-align:center;color:#f0dfbf;padding:0 35px 24px}.drawer-brass{display:inline-block;padding:5px 17px 6px;margin-bottom:16px;border:1px solid #bc925a;border-radius:2px;font-size:12px;color:#5a3b24;background:linear-gradient(110deg,#b39359,#e3c68b,#b58d4b);box-shadow:0 1px 1px #efdaa1 inset,0 2px 2px #2a180d;font-style:italic;letter-spacing:.3px}.drawer-heading h2{font-size:clamp(27px,4vw,37px)!important;line-height:1.1!important;letter-spacing:-.7px!important;font-weight:400;margin:0!important}.drawer-heading p{font:13px Georgia;color:#c6aa88;margin:9px 0 0}
.drawer-compartments{display:grid;grid-template-columns:1fr 1.2fr;gap:13px;padding:10px;border:1px solid #946c41;border-radius:5px;background:linear-gradient(130deg,#9e724a,#694329);box-shadow:0 1px 1px #c99459 inset,0 5px 12px #28180f52}
.drawer-compartment{min-width:0;padding:21px 15px 16px;border:1px solid #3a2519;box-shadow:inset 1px 3px 11px #21140f8c,0 1px 0 #c9945d70;background:radial-gradient(ellipse at 55% 20%,#594133,#35271e);border-radius:2px}
.drawer-compartment>h3{font-size:12px!important;letter-spacing:1px!important;text-transform:uppercase;color:#d9bd94;font-weight:400;margin:0 0 23px!important;text-align:center}
.keepsake-evidence{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:20px 14px;margin:0;padding:0}.keepsake-evidence li{min-width:0}.evidence-object{border:0;background:none;display:block;width:100%;padding:0;color:#dfc39c;text-align:center}.evidence-paper{position:relative;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:9px;min-height:140px;padding:16px 8px 13px;color:#735332;background:linear-gradient(120deg,#ead6ae,#cbb07d);border:1px solid #f4dfac;box-shadow:2px 5px 7px #180d0866;transform:rotate(-4deg);transition:transform .22s ease,box-shadow .22s ease}.keepsake-evidence li:nth-child(even) .evidence-paper{transform:rotate(3deg)}.evidence-object:hover .evidence-paper,.evidence-object:focus-visible .evidence-paper{transform:rotate(0);box-shadow:2px 7px 12px #180d0880}
.evidence-tag{font-size:10px;font-weight:700;letter-spacing:.7px;line-height:1.5;max-width:13em}.evidence-glyph{font-size:28px;font-weight:400;line-height:1}.evidence-detail{font-size:10px;line-height:1.5;font-style:italic}.evidence-title{display:block;font-size:12px;margin-top:11px;line-height:1.4}
.evidence-ticket .evidence-paper{border:1px dashed #927148;border-radius:10px;outline:5px solid #d6bc89;outline-offset:-6px;background:linear-gradient(90deg,transparent 21%,#7c603118 21.5%,transparent 22%),#dcc499}.evidence-ticket .evidence-tag{text-transform:uppercase}.evidence-switch .evidence-paper{min-height:124px;margin:8px 7px;background:linear-gradient(140deg,#c5ac75,#9e7d4c);border:1px solid #d4bd8f;border-radius:5px;box-shadow:0 1px 2px #edd5a4 inset,2px 5px 7px #180d0866}.evidence-switch .evidence-glyph{height:42px;width:24px;background:linear-gradient(#e0c58b,#77562f);border:1px solid #6f502c;box-shadow:0 2px 3px #48301d;border-radius:3px;color:#71552f;font-size:25px;padding-top:4px}.evidence-plan .evidence-paper{background:linear-gradient(90deg,transparent 49%,#b7a07628 50%,transparent 51%),#e9dabb}.evidence-plan .evidence-glyph{font-size:39px;color:#8c5c36}.evidence-arrow .evidence-paper{background:linear-gradient(2deg,#aa8050,#d1af78);border-color:#b99357;clip-path:polygon(0 7%,75% 7%,100% 50%,75% 93%,0 93%);gap:6px;padding-right:19px}.evidence-arrow .evidence-glyph{font-size:30px}.evidence-flyer .evidence-paper{background:#f0dfb8;box-shadow:1px 1px 0 #bfa271,3px 7px 8px #180d0866}.evidence-flyer .evidence-tag{font-size:13px;letter-spacing:.2px;max-width:8em}.evidence-flyer .evidence-glyph{font:italic 26px Georgia;color:#a75136}
.drawer-empty{display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;color:#d7bd96;min-height:265px;padding:12px 8px;gap:10px}.drawer-empty-evidence{min-height:302px}.drawer-empty p{font:17px/1.5 Georgia;margin:8px 0 0}.drawer-empty-detail{font:12px/1.5 Georgia;color:#b59872;max-width:21em}.drawer-empty button{font-size:13px!important;color:#e4cba5}.empty-photograph{display:grid;place-items:center;position:relative;height:103px;width:89px;padding-bottom:13px;background:linear-gradient(#94805f26,#80664242);border:7px solid #c1a57938;border-bottom-width:20px;box-shadow:2px 6px 7px #1f140c30;transform:rotate(5deg);font:24px Georgia;color:#c2a47a66}.empty-ticket{padding:15px 12px;border:1px dashed #af956c65;color:#c9a67599;transform:rotate(-7deg);font:8px/1.6 Georgia;letter-spacing:1px}.empty-ticket b{display:block;font-size:25px;font-weight:400;padding-top:8px}
.keepsake-photo-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 13px;align-items:start}.keepsake-photo-grid li{min-width:0}.keepsake-photo{width:100%;background:#f2e3c9;border:1px solid #d6bd93;padding:5px 5px 7px;color:#725637;display:block;box-shadow:1px 4px 8px #1a0c0877;transform:rotate(-2deg);transition:transform .2s ease}.keepsake-photo-grid li:nth-child(even) .keepsake-photo{transform:rotate(2deg)}.keepsake-photo:hover,.keepsake-photo:focus-visible{transform:rotate(0)}.keepsake-photo img{display:block;width:100%;height:auto;aspect-ratio:8/9;object-fit:contain;background:#e0c9a2}.keepsake-photo>span{display:block;font-size:12px;line-height:1.3;margin-top:7px;overflow-wrap:anywhere}.drawer-storage-note{font:10px/1.5 Georgia;text-align:center;color:#ae9471;margin:22px 0 0}
.keepsake-detail{color:#e3cda9}.keepsake-detail-top{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:0 6px 15px}.keepsake-detail-top h3{font:22px/1.3 Georgia!important;margin:0!important;text-align:right;font-weight:400;letter-spacing:0!important}.keepsake-detail-top h3:focus{outline:none}.keepsake-large-photo{margin:0 auto;max-width:min(440px,55svh);background:#f5e4c6;padding:8px;box-shadow:0 6px 17px #21120988;transform:rotate(-.4deg)}.keepsake-large-photo img{display:block;width:100%;height:auto;aspect-ratio:8/9;object-fit:contain}.keepsake-detail-actions{display:flex;justify-content:center;align-items:center;gap:35px;margin:18px 0 6px}.cabinet-remove{font-size:12px!important;color:#ba9e7c}
.drawer-collection{margin:-4px 0 24px;padding:13px 10px 12px;border-top:1px solid #ad885d40;border-bottom:1px solid #ad885d40;text-align:center;color:#d5bb92}.collection-progress{font:11px/1.5 Georgia}.collection-stitches{display:flex;justify-content:center;gap:6px;margin-top:11px}.collection-stitches i{display:block;width:9px;height:5px;border:1px solid #b38c5455;border-radius:4px}.collection-stitches .is-collected{background:#d8b576;border-color:#e4c895;box-shadow:0 1px 1px #170d08}.collection-complete{display:flex;align-items:center;justify-content:center;gap:14px;text-align:left}.collection-complete strong{display:block;font:16px/1.35 Georgia;font-weight:400;color:#efdbb4}.collection-complete small{display:block;font:11px/1.5 Georgia;margin-top:4px;color:#bca07a}.collection-seal{display:grid;align-content:center;text-align:center;width:56px;height:56px;flex:none;border:1px solid #c7a163;outline:1px solid #ab844950;outline-offset:-5px;border-radius:50%;color:#e5c78e;font:25px/1 Georgia;transform:rotate(-8deg)}.collection-seal small{font:7px/1.4 Georgia;letter-spacing:1px;color:#cfac73;margin-top:3px}.drawer-collection>.cabinet-text-button{font-size:12px!important;color:#e6cfaa;margin-top:4px}
.drawer-medal{margin-top:26px;padding-top:21px;border-top:1px solid #ad885d40;text-align:center}.drawer-medal h3{font:11px/1.4 Georgia!important;text-transform:uppercase;letter-spacing:1px!important;color:#cfb38b;margin:0 0 14px!important}.medal-keepsake{position:relative;display:inline-flex;align-items:center;flex-direction:column;min-width:150px;background:none;border:0;padding:0 8px 5px;color:#d8bb90}.medal-ribbon{width:49px;height:57px;background:linear-gradient(90deg,#543044 0 10%,#a67a69 10% 15%,#70455b 15% 85%,#a67a69 85% 90%,#543044 90%);clip-path:polygon(0 0,100% 0,90% 100%,50% 77%,10% 100%);transform:rotate(7deg);box-shadow:0 4px 6px #110900}.medal-brass{position:relative;display:flex;align-items:center;justify-content:center;flex-direction:column;width:82px;height:82px;margin-top:-21px;border-radius:50%;background:linear-gradient(125deg,#ae8144,#e2c38a 45%,#bb914f);border:1px solid #e1c58c;box-shadow:inset 0 0 0 4px #b78c4a,inset 0 0 0 5px #d5b778,1px 4px 7px #1b0f0a99;color:#76502b;transform:rotate(-8deg);text-shadow:0 1px #edd39c66}.medal-brass small{font:6px Georgia;letter-spacing:.9px}.medal-brass b{font:35px/1.05 Georgia;font-weight:400}.medal-brass i{font:6px Georgia;letter-spacing:1px}.medal-keepsake strong{font:12px/1.5 Georgia;font-weight:400;margin-top:13px;color:#d6b98f}
@media(max-width:620px){dialog:has(.town-cabinet){width:calc(100vw - 16px);max-height:calc(100svh - 16px)}.letter-cabinet{padding:50px 7% 22px;min-height:530px}.letter-note{padding:23px 24px 28px;min-height:370px}.letter-note-top{margin-bottom:22px}.letter-message{font-size:19px}.letter-envelope{inset:120px 6% 68px;padding:17px;font-size:13px}.letter-envelope i{font-size:21px}.letter-footer{gap:9px;margin-top:33px;justify-content:flex-end}.letter-footer>span{font-size:11px}.letter-footer button{font-size:14px!important}.keepsake-cabinet{padding:42px 12px 16px}.drawer-heading{padding:0 25px 22px}.drawer-compartments{grid-template-columns:1fr;gap:13px;padding:8px}.drawer-compartment{padding:20px 17px}.drawer-compartment>h3{margin-bottom:20px!important}.keepsake-evidence{grid-template-columns:repeat(3,minmax(0,1fr));gap:17px 14px}.evidence-paper{min-height:128px;padding:13px 5px}.evidence-switch .evidence-paper{margin:3px 3px;min-height:121px}.evidence-tag{font-size:8px}.evidence-detail{font-size:9px}.evidence-title{font-size:11px}.evidence-flyer .evidence-tag{font-size:11px}.evidence-arrow .evidence-paper{padding-right:15px}.drawer-empty,.drawer-empty-evidence{min-height:225px}.keepsake-photo-grid{gap:21px 18px;grid-template-columns:repeat(3,minmax(0,1fr))}.keepsake-photo>span{font-size:11px}.keepsake-detail-top{gap:12px;margin:0 4px 18px}.keepsake-detail-top h3{font-size:20px!important}.keepsake-large-photo{max-width:min(100%,54svh)}.keepsake-detail-actions{gap:24px}.cabinet-status{padding:5px 7px 2px}}
@media(max-width:390px){.keepsake-evidence{grid-template-columns:repeat(2,minmax(0,1fr))}.keepsake-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.letter-note{padding:20px}.letter-message{font-size:18px}.letter-postmark{width:51px;height:51px}.letter-note-top>span:first-child{font-size:8px;letter-spacing:1.3px}.drawer-heading h2{font-size:28px!important}}
@media(prefers-reduced-motion:reduce){.town-cabinet *{transition:none!important;animation:none!important}}
