:root{--ink:#493c27;--paper:#fffaf0;--line:#d5c6a7}*{box-sizing:border-box}body{color:var(--ink);background:#b8ad98 url(/art/wood-tile.webp);margin:0;font:14px Georgia,serif}a{color:inherit;text-decoration:none}.book-scene{background:0 0;min-height:100vh;padding:20px clamp(12px,4vw,64px) 32px}.book-controls{color:#f8efda;text-shadow:0 1px 3px #322719;justify-content:space-between;gap:12px;max-width:1240px;margin:0 auto 12px;display:flex}.book-object{max-width:1240px;min-height:min(76vh,900px);margin:auto;transition:transform .24s,opacity .2s;animation:.24s both open}.book-object.grid{max-width:1100px}.book-object.grid.chapter-index{width:min(96vw,2200px);max-width:none}.book-object.grid.chapter-index .index-page{min-width:0}.book-object.grid.chapter-index .chapter-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr))}.book-paper,.index-page{background:#fffaf0 url(/art/parchment-tile.webp);border:1px solid #d1c2a4;min-height:min(76vh,900px);padding:clamp(20px,4vw,58px);position:relative;box-shadow:0 16px 40px #382b1835}.cover{aspect-ratio:2/3;color:#e7d8ad;background:#193b34;border:7px double #b89d62;flex-direction:column;justify-content:flex-end;align-items:center;gap:22px;width:min(100%,680px);min-height:700px;margin:auto;padding:12% 10%;display:flex;overflow:hidden}.cover-bg,.cover-window{object-fit:contain;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.cover-window{background:url(/art/cover-window@1024.webp) 50%/contain no-repeat}.cover-title,.open-book{text-align:center;text-shadow:0 2px 8px #241807;position:relative}.cover-title{margin:auto}.cover-title h1{margin:0;font:clamp(42px,8vw,80px) Georgia,serif}.cover-title p{letter-spacing:.12em;text-transform:uppercase;font-style:italic}.open-book{border:1px solid #c2ad72;padding:13px 22px;font-size:17px}.open-book span{padding-left:14px}.index-page{border-radius:5px 12px 12px 5px}.index-page h1{align-items:center;gap:14px;margin:8px 0 26px;font:clamp(30px,4vw,42px) Georgia,serif;display:flex}.eyebrow{color:#8a795a;letter-spacing:.13em;font:700 10px Arial,sans-serif}.section-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.section-grid a{border:1px solid var(--line);background:#fffaf0b8;align-items:center;gap:14px;padding:14px;display:flex}.section-grid a>img{object-fit:contain;width:52px;height:52px}.section-grid a span{flex:1;gap:5px;display:grid}.section-grid small{color:#897a5e}.section-grid a>b{color:#876d3d;font-size:20px}.chapter-icon{object-fit:contain;width:52px;height:52px}.chapter-grid{grid-template-columns:repeat(auto-fill,minmax(165px,1fr));gap:12px;display:grid}.chapter-grid a{border:1px solid var(--line);background:#fffaf0b8;gap:8px;padding:10px;display:grid}.chapter-grid .record-art{width:100%;height:145px;margin:0}.chapter-grid strong{font-size:14px}.book-spread{grid-template-columns:1fr 1fr;gap:0;min-height:min(76vh,900px);margin:auto;display:grid;box-shadow:0 16px 40px #382b1835}.spread-page{border:1px solid var(--line);background:#fffaf0 url(/art/parchment-tile.webp);min-width:0;padding:clamp(18px,3vw,38px);box-shadow:inset -8px 0 14px #77613b0a}.spread-page:first-child{border-radius:6px 0 0 6px}.spread-page:last-child{border-radius:0 6px 6px 0;box-shadow:inset 8px 0 14px #77613b0a}.spread-page h1{overflow-wrap:anywhere;margin:14px 0;font:clamp(28px,4vw,40px) Georgia,serif}.spread-page h1:after{content:"";background:url(/art/divider.webp) 50%/contain no-repeat;width:min(100%,400px);height:22px;margin-top:6px;display:block}.record-art{object-fit:contain;width:min(100%,340px);height:250px;margin:16px auto;display:block}.art-placeholder{color:#9b8b69;background:radial-gradient(#e8dfca,#d9cfb9);border:1px solid #d8c9aa;place-items:center;display:grid}.art-placeholder span{opacity:.6;font-size:74px}.taxonomy{flex-wrap:wrap;gap:6px;margin:12px 0;display:flex}.badge{color:#64543a;background:#e7e0ce;border-radius:3px;padding:4px 8px;font:11px Arial,sans-serif}.book-field{margin:16px 0}.book-field h3,.spread-page h2{color:#756447;letter-spacing:.08em;text-transform:uppercase;margin:8px 0;font:700 11px Arial,sans-serif}.book-field p,.book-field li{font:14px/1.65 Georgia,serif}.book-list{padding-left:20px}.book-list li{margin:6px 0}.book-dl{margin:0}.book-dl div{border-top:1px solid #e7ddc8;grid-template-columns:minmax(100px,.8fr) 1.2fr;gap:10px;padding:8px 0;display:grid}.book-dl dt{color:#7b6d52;font:700 11px Arial,sans-serif}.book-dl dd{margin:0}.stat-block{background:#f5eddb;border:8px solid #d3c197;margin:16px 0;padding:14px}.stat-block>div{border-top:1px solid #e1d6c0;justify-content:space-between;gap:16px;padding:8px 0;display:flex}.stat-block span{align-items:center;gap:8px;display:flex}.stat-block img{object-fit:contain;width:24px;height:24px}.page-controls{justify-content:center;gap:14px;padding-top:14px;display:flex}.page-controls a{color:#564b36;background:#f8f1e1;border:1px solid #baaa87;border-radius:4px;padding:9px 15px}.page-controls a:focus-visible,.section-grid a:focus-visible,.chapter-grid a:focus-visible,.open-book:focus-visible{outline-offset:3px;outline:3px solid #9b7937}@keyframes open{0%{opacity:.65;transform:scale(.98)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@media (max-width:700px){.section-grid{grid-template-columns:1fr}.book-spread{grid-template-columns:1fr;gap:10px}.spread-page:first-child,.spread-page:last-child{border-radius:5px}.cover{min-height:580px}}.book-scene>header:not(.book-controls){color:#f4e7bf;background:#182f29;justify-content:space-between;align-items:center;gap:12px;margin:-20px calc(-1*clamp(12px,4vw,64px)) 16px;padding:8px clamp(12px,4vw,64px);font:12px Arial,sans-serif;display:flex}.book-scene>header:not(.book-controls) button{color:inherit;cursor:pointer;background:0 0;border:1px solid #b89d62;padding:5px 9px}.auth-scene{place-items:center;min-height:100vh;padding:24px 16px;display:grid}.auth-page{background:var(--paper) url(/art/parchment-tile.webp) repeat;border:1px solid #d1c2a4;border-radius:9px;width:min(100%,520px);padding:clamp(24px,6vw,48px);box-shadow:0 18px 48px #21170e70}.auth-heading h1{text-align:center;margin:0;font:clamp(32px,8vw,46px) Georgia,serif}.auth-heading>p{text-align:center;color:#7a6848;letter-spacing:.07em;margin:6px 0 14px;font:italic 16px Georgia,serif}.auth-divider{background:url(/art/divider.webp) 50%/contain no-repeat;width:min(100%,290px);height:24px;margin:0 auto 26px;display:block}.auth-form{gap:16px;display:grid}.auth-form label{letter-spacing:.025em;gap:7px;font:700 13px Arial,sans-serif;display:grid}.auth-form input{width:100%;min-height:44px;color:var(--ink);background:#fffaf0d9;border:1px solid #9c8964;border-radius:3px;padding:10px 12px;font:16px Georgia,serif;box-shadow:inset 0 1px 3px #493c271c}.auth-form input:focus{border-color:#765d2f;outline:3px solid #a98c4e70}.auth-submit{color:#fff5db;cursor:pointer;background:#24473c;border:1px solid #304e43;border-radius:4px;width:100%;min-height:48px;padding:12px 16px;font:700 14px Arial,sans-serif}.auth-submit:hover{background:#19392f}.auth-error{color:#762d25;background:#f1e1d5;border-left:3px solid #9a3f32;margin:0;padding:10px 12px;font:14px/1.5 Georgia,serif}.character-page{width:min(100%,680px)}.character-page .auth-heading h1{font-size:clamp(30px,7vw,42px)}.character-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.character-row{width:100%;min-height:68px;color:var(--ink);text-align:left;cursor:pointer;background:#fffaf0c9;border:1px solid #caba98;border-radius:4px;justify-content:space-between;align-items:center;gap:14px;padding:14px 16px;display:flex}.character-row:hover{background:#f5ecd8;border-color:#8b7448}.character-row span{font:700 18px Georgia,serif}.character-row small{color:#776648;flex:none;font:13px Arial,sans-serif}.character-row:focus-visible,.auth-submit:focus-visible,.logout-link:focus-visible{outline-offset:3px;outline:3px solid #9b7937}.logout-form{text-align:center;margin-top:24px}.logout-link{color:#756447;cursor:pointer;background:0 0;border:0;padding:6px 10px;font:14px Georgia,serif;text-decoration:underline}@media (max-width:420px){.auth-scene{padding:16px 12px}.auth-page{padding:24px 20px}.character-row{min-height:62px;padding:12px}.character-row span{font-size:16px}}
