@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&family=Libre+Caslon+Text:ital,wght@0,400;0,700;1,400&display=swap');
:root{color-scheme:dark;font-family:'DM Sans',sans-serif;color:#efe9db;background:#242921;--paper:#efe9db;--muted:#b9b5a5;--panel:rgba(30,35,29,.95);--line:rgba(232,222,201,.19);--accent:#d8c49b}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,input,a{ -webkit-tap-highlight-color:transparent}button,.button{font:inherit;color:inherit;border:1px solid var(--line);background:rgba(30,35,29,.82);border-radius:5px;padding:11px 15px;cursor:pointer;text-decoration:none}button:hover,.button:hover{background:#45503e;border-color:#9b9e87}button:focus-visible,a:focus-visible,input:focus-visible,canvas:focus-visible{outline:2px solid var(--accent);outline-offset:4px}button:disabled{opacity:.45;cursor:wait}.primary{background:var(--paper);color:#292d25;border-color:var(--paper);font-weight:600}.primary:hover{color:var(--paper)}kbd{font:inherit;font-size:11px;opacity:.55;border:1px solid currentColor;padding:1px 5px;border-radius:3px;margin-left:15px}#room{position:fixed;inset:0;width:100%;height:100%;touch-action:none}.topbar{position:fixed;top:0;left:0;right:0;display:flex;align-items:center;gap:24px;padding:28px 36px;background:linear-gradient(#162019b8,transparent);pointer-events:none}.topbar>*{pointer-events:auto}.wordmark{font-family:'Libre Caslon Text',Georgia,serif;text-decoration:none;color:var(--paper);font-size:23px;white-space:nowrap}.wordmark em{font-weight:400}#collection-count{color:#e4dfd0a6;font-size:12px;letter-spacing:.02em}.topbar .primary{margin-left:auto}#loading{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(ellipse at 45% 75%,#3d493c,#1d251f 75%);z-index:8;transition:opacity .65s}#loading[hidden]{display:none}.eyebrow{text-transform:uppercase;font-size:10px;letter-spacing:.16em;color:var(--accent)}h1,h2{font-family:'Libre Caslon Text',Georgia,serif;font-weight:400}h1{font-size:clamp(45px,6vw,76px);line-height:1.17;letter-spacing:-.035em;margin:22px 0;text-align:center}#loading p{font-size:13px;color:var(--muted)}progress{height:2px;width:220px;border:0;margin:14px 0 24px;accent-color:var(--accent)}progress::-webkit-progress-bar{background:#6b716142}progress::-webkit-progress-value{background:var(--accent)}.places{position:fixed;bottom:76px;left:50%;transform:translateX(-50%);display:flex;padding:5px;gap:2px;border:1px solid var(--line);border-radius:7px;background:#20281fd6;backdrop-filter:blur(16px);white-space:nowrap}.places button{border:0;background:transparent;font-size:12px;padding:10px 14px}.places button:hover{background:#ffffff14}.controls{position:fixed;left:0;right:0;bottom:0;display:flex;align-items:center;gap:10px;padding:14px 30px;color:#d8d7c8b8;background:linear-gradient(transparent,#122018ab);font-size:11px}.controls>span{flex:1}.controls button{font-size:11px;padding:8px 12px;border-color:#ddd2b429}#hint{position:fixed;bottom:139px;left:50%;transform:translateX(-50%);max-width:80vw;padding:9px 15px;background:#20251dd9;border-radius:4px;font-size:12px;text-align:center;pointer-events:none}#hint:empty{display:none}#crosshair{position:fixed;top:50%;left:50%;font-size:25px;text-shadow:0 0 3px #000;pointer-events:none;transform:translate(-50%,-50%)}dialog{color:var(--paper);background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:28px;box-shadow:0 24px 80px #0006;backdrop-filter:blur(24px);max-height:calc(100dvh - 60px);overflow:auto}dialog::backdrop{background:#0d150da8;backdrop-filter:blur(5px)}h2{font-size:27px;line-height:1.3;letter-spacing:-.02em;margin:10px 0 16px}.dialog-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:24px}.close{padding:2px 8px;font-size:26px;line-height:1;border:0;background:transparent;color:var(--muted)}#search-dialog{width:min(690px,calc(100vw - 30px));height:min(760px,calc(100dvh - 60px))}.search-label{position:absolute;clip:rect(0,0,0,0);width:1px;height:1px;overflow:hidden}input{width:100%;background:#ffffff08;border:1px solid var(--line);border-radius:5px;padding:15px;color:var(--paper);font:inherit;font-size:15px;margin:5px 0 14px}.filters{display:flex;gap:6px;flex-wrap:wrap}.filters button{font-size:12px;padding:8px 11px;background:transparent}.filters button[aria-pressed=true]{color:#272d23;background:var(--accent);border-color:var(--accent)}#result-count{font-size:12px;color:var(--muted);padding-bottom:13px;border-bottom:1px solid var(--line)}#results{display:flex;flex-direction:column}.result{display:flex;align-items:center;text-align:left;gap:15px;border:0;border-radius:0;border-bottom:1px solid var(--line);background:transparent;padding:13px 2px}.result:hover{background:#ffffff07}.result img,.mini-cover{width:38px;height:57px;object-fit:cover;flex-shrink:0;box-shadow:2px 3px 6px #0005}.mini-cover{display:grid;place-content:center;border:1px solid #dfc39260;font-family:Georgia,serif;color:#e1d7b5;font-size:16px;background:#414a36}.result-title{display:block;font-family:'Libre Caslon Text',Georgia,serif;font-size:14px;line-height:1.5}.result-author{display:block;color:var(--muted);font-size:11px;line-height:1.6}.result-shelf{margin-left:auto;color:var(--muted);font-size:10px;white-space:nowrap}#book-dialog{position:fixed;inset:100px 30px auto auto;margin:0;width:350px;max-height:calc(100dvh - 210px);font-size:13px}#book-dialog .close{position:absolute;right:16px;top:13px}#book-title{padding-right:8px;font-size:24px}#book-author{color:var(--muted);margin:-8px 0 20px}#book-cover{float:right;margin:0 0 15px 18px}#book-cover img{width:85px;max-height:135px;object-fit:contain;box-shadow:4px 4px 12px #0006}#book-cover .missing-cover{font-size:10px;width:75px;color:var(--muted);line-height:1.5;border:1px solid var(--line);padding:12px}#book-rating{color:var(--accent);letter-spacing:.07em}dl{line-height:1.7}dt{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}dd{margin:0 0 8px}#book-tags{clear:both;color:var(--muted);font-size:11px;line-height:1.8}#book-review{line-height:1.8;white-space:pre-wrap}#book-location{clear:both;border-top:1px solid var(--line);padding-top:18px;color:var(--muted);font-size:11px}.book-actions{display:flex;flex-direction:column;gap:8px;text-align:center}.book-actions button,.book-actions a{font-size:12px}.muted{color:var(--muted);font-size:11px;line-height:1.7}#help-dialog{width:min(560px,calc(100vw - 30px));font-size:13px;line-height:1.8}.help-list{display:grid;grid-template-columns:110px 1fr;gap:8px}.help-list dd{margin:0}.touchpad{display:none;position:fixed;left:20px;bottom:150px;grid-template-columns:repeat(3,42px);gap:5px}.touchpad button{padding:10px;touch-action:none;background:#1b281cba}.touchpad button:first-child{grid-column:2}.touchpad button:nth-child(2){grid-column:1}@media(pointer:coarse){.touchpad{display:grid}#walk,kbd,#movement-help{display:none}.controls{justify-content:flex-end}.places{bottom:70px}.controls button{font-size:12px}}@media(max-width:700px){.topbar{padding:20px 17px;gap:12px}.wordmark{font-size:19px}#collection-count{display:none}.topbar .primary{font-size:12px;padding:10px 12px}.places{width:calc(100% - 28px);overflow-x:auto;justify-content:space-between;bottom:63px}.places button{font-size:10px;padding:11px 9px}.controls{padding:12px 16px}.controls>span{font-size:9px}.controls button{padding:8px;font-size:10px}#book-dialog{inset:auto 12px 12px 12px;width:auto;max-height:42dvh;padding:20px 24px;z-index:5}#book-title{font-size:21px}body.inspecting .places,body.inspecting .controls,body.inspecting .touchpad,body.inspecting #hint{display:none}dialog{padding:23px 20px;max-height:calc(100dvh - 30px)}#search-dialog{height:calc(100dvh - 30px)}.result-shelf{font-size:9px}.result-title{font-size:12px}.filters button{font-size:11px;padding:8px}h2{font-size:24px}.help-list{grid-template-columns:88px 1fr}#hint{bottom:129px;font-size:11px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* Room mechanisms remain separate from the place shortcuts. */
.room-actions{position:fixed;right:1.5rem;bottom:8rem;z-index:8;background:#252b24ed;border:1px solid #a89e7866;border-radius:.5rem;padding:.6rem;color:#eee6d2;min-width:10rem}
.room-actions summary{cursor:pointer;font-size:.875rem;padding:.15rem .3rem}
.room-actions button{display:block;width:100%;margin-top:.5rem;text-align:left;font-size:.875rem}
.art-credits{font-size:.875rem;line-height:1.6}.places{max-width:calc(100vw - 2rem);overflow-x:auto;justify-content:flex-start}
@media(max-width:700px){.room-actions{right:.75rem;bottom:9rem;min-width:0;max-width:13rem}.room-actions button{min-height:2.75rem}.places{white-space:nowrap}.places button{flex-shrink:0}}

/* Readable controls and unobstructed book inspection at compact widths. */
body.inspecting .room-actions{display:none}
.places button,.controls button,.topbar .primary,.filters button,.book-actions button,.book-actions a{font-size:.875rem;min-height:2.75rem}
.controls>span,#hint,#collection-count,#result-count,.result-author,.result-shelf,.muted,#book-tags,#book-location,kbd,dt,.eyebrow{font-size:.75rem}
input,#book-dialog,#help-dialog,.result-title,#loading p{font-size:1rem}
.result>span:not(.mini-cover){min-width:0}.result-title{overflow-wrap:anywhere}.result-shelf{white-space:normal;max-width:5.5rem;flex-shrink:0}
#book-cover .missing-cover{font-size:.75rem}
@media(max-width:700px){.controls>span{display:none}.controls{justify-content:flex-end}.places button{font-size:.875rem}.result{gap:.7rem}.result-shelf{font-size:.75rem}.filters button{font-size:.875rem}#hint{font-size:.875rem;max-width:calc(100vw - 2rem)}.room-actions{bottom:9rem}}

/* Four clear destinations fit in one row, including compact screens. */
.places{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:min(430px,calc(100vw - 2rem));overflow:visible}
.places button{min-width:0;padding-inline:4px}
@media(max-width:700px){.places button{font-size:clamp(.75rem,3.3vw,.875rem)}}

#book-description{clear:both;font-size:.9375rem;line-height:1.7}#book-description h3{font:400 1.2rem Georgia,serif;margin:1.1rem 0 .65rem}#book-description p{margin:0 0 .8rem}#book-description details{font-size:.75rem;color:var(--muted)}#book-description details a{display:block;margin-top:.5rem;color:inherit}#book-description summary{cursor:pointer}

.book-view-controls{position:fixed;bottom:30px;left:calc((100vw - 410px)/2);transform:translateX(-50%);display:flex;gap:8px;z-index:10;white-space:nowrap}.book-view-controls[hidden]{display:none}.book-view-controls button{font-size:.875rem;min-height:44px;background:#20281ff0}body.inspecting .places,body.inspecting .controls{display:none}body.book-enlarged #book-dialog{display:none}body.book-enlarged .book-view-controls{left:50%}@media(max-width:700px){.book-view-controls,body.book-enlarged .book-view-controls{top:76px;bottom:auto;left:50%;gap:5px}.book-view-controls button{padding:9px;font-size:.8rem}}
