body.page-wiki{overflow:hidden}.reader{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;height:calc(100dvh - 72px);width:100%}.reader__bar{display:flex;align-items:center;gap:clamp(12px,2vw,22px);padding:10px clamp(14px,3vw,28px);border-bottom:1px solid var(--border);background:var(--surface)}.reader__back{display:inline-flex;align-items:center;gap:7px;flex-shrink:0;min-height:40px;padding-inline-end:4px;color:var(--foreground-muted);font-family:var(--font-label);font-size:13px;white-space:nowrap}.reader__back:hover{color:var(--gold)}.reader__back svg{width:17px;height:17px}.reader__title{flex:1 1 auto;min-width:0;margin:0;color:var(--foreground);font-family:var(--font-heading);font-size:clamp(17px,2.2vw,22px);font-weight:600;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reader__tools{display:flex;align-items:center;gap:14px;flex-shrink:0}.reader__out{display:inline-flex;align-items:center;min-height:40px;padding:8px 14px;border:1px solid var(--border-strong);border-radius:var(--radius-s);color:var(--foreground-muted);font-family:var(--font-label);font-size:12px;white-space:nowrap}.reader__out:hover{border-color:var(--gold);color:var(--gold)}.reader__stage{position:relative;display:grid;min-height:0}.reader__stage>*{grid-area:1 / 1;min-height:0}.reader__frame{width:100%;height:100%;border:0;background:var(--background);opacity:0;transition:opacity .45s ease}.reader__stage[data-state=ready] .reader__frame{opacity:1}.reader__noscript{margin:0;padding:28px clamp(14px,3vw,28px);color:var(--foreground-muted)}.reader__credit{margin:0;padding:9px clamp(14px,3vw,28px);border-top:1px solid var(--border);background:var(--surface);color:var(--muted);font-size:11.5px}.reader__credit a{color:var(--foreground-muted);text-decoration:underline;text-underline-offset:2px}.reader__credit a:hover{color:var(--gold)}.reader__loader{z-index:1;display:grid;grid-template-columns:minmax(0,1fr);align-content:center;justify-items:center;padding:28px 20px 56px;overflow:hidden;background:radial-gradient(55% 45% at 50% 40%,color-mix(in srgb,var(--gold) 9%,transparent),transparent 72%),var(--background);text-align:center;transition:opacity .4s ease,visibility 0s linear 0s}.reader__stage[data-state=ready] .reader__loader{opacity:0;visibility:hidden;transition:opacity .4s ease,visibility 0s linear .4s}.reader__eyebrow{margin:0 0 8px;color:var(--gold);font-family:var(--font-label);font-size:11px;font-weight:600;letter-spacing:.18em;text-transform:uppercase}.reader__name{margin:0;max-width:min(24ch,100%);overflow-wrap:anywhere;color:var(--foreground);font-family:var(--font-heading);font-size:clamp(24px,3.4vw,34px);font-weight:600;line-height:1.15;letter-spacing:-.01em;text-wrap:balance}.reader__line{margin:12px 0 0;max-width:46ch;color:var(--foreground-muted);font-size:14px;line-height:1.55}.reader__progress{position:relative;width:180px;height:2px;margin-top:18px;overflow:hidden;border-radius:2px;background:color-mix(in srgb,var(--foreground) 10%,transparent)}.reader__progress:after{content:"";position:absolute;inset-block:0;left:0;width:45%;background:linear-gradient(90deg,transparent,var(--gold),transparent);animation:reader-sweep 1.4s ease-in-out infinite}@keyframes reader-sweep{0%{transform:translate(-100%)}to{transform:translate(225%)}}.reader__actions{justify-content:center;margin-top:22px}.reader__stage:not([data-state=loading]) .reader__progress{display:none}.book-wrap{position:relative;display:grid;justify-items:center;margin-bottom:30px}.book{--paper: #f3ecdc;--ink: rgb(72 58 36 / .2);--spine-shade: rgb(60 44 24 / .2);--turn: 2.4s;position:relative;width:204px;height:138px;perspective:1000px;animation:book-float 3.6s ease-in-out infinite}.book:before{content:"";position:absolute;inset:-7px -10px -10px;border-radius:7px;background:linear-gradient(170deg,#5b452a,#3a2c1b);box-shadow:inset 0 0 0 1px #d0b38b80,inset 0 0 0 4px #0000001f,0 14px 26px -10px #00000080}.book__stack,.book__face{position:absolute;inset-block:0;width:50%}.book__stack--left,.book__face--back{padding:17px 12px 17px 17px;border-radius:5px 1px 1px 5px;background:linear-gradient(to left,var(--spine-shade),transparent 26%) border-box,repeating-linear-gradient(to bottom,var(--ink) 0 1.5px,transparent 1.5px 9px) content-box,linear-gradient(var(--paper),var(--paper)) border-box}.book__stack--right,.book__face--front{padding:17px 17px 17px 12px;border-radius:1px 5px 5px 1px;background:linear-gradient(to right,var(--spine-shade),transparent 26%) border-box,repeating-linear-gradient(to bottom,var(--ink) 0 1.5px,transparent 1.5px 9px) content-box,linear-gradient(var(--paper),var(--paper)) border-box}.book__stack--left{left:0;box-shadow:-1px 1px #e0d6c0,-2px 2px #d2c6ab,-3px 3px #c3b596}.book__stack--right{right:0;box-shadow:1px 1px #e0d6c0,2px 2px #d2c6ab,3px 3px #c3b596}.book__page{position:absolute;inset-block:0;left:50%;width:50%;transform-origin:left center;transform-style:preserve-3d;transform:rotateY(-32deg);animation:book-turn var(--turn) cubic-bezier(.5,.06,.32,1) infinite}.book__face{inset-inline-start:0;width:100%;backface-visibility:hidden;-webkit-backface-visibility:hidden}.book__face--back{transform:rotateY(180deg)}.book__face:after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(to right,#281c0c57,#281c0c1a);opacity:0;animation:book-shade var(--turn) cubic-bezier(.5,.06,.32,1) infinite}.book__shadow{width:180px;height:16px;margin-top:16px;border-radius:50%;background:radial-gradient(closest-side,rgb(0 0 0 / .34),transparent);animation:book-shadow 3.6s ease-in-out infinite}@keyframes book-turn{0%,14%{transform:rotateY(0)}62%,to{transform:rotateY(-180deg)}}@keyframes book-shade{0%,14%{opacity:0}38%{opacity:1}62%,to{opacity:0}}@keyframes book-float{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes book-shadow{0%,to{transform:scaleX(1);opacity:1}50%{transform:scaleX(.86);opacity:.7}}.reader__stage:not([data-state=loading]) .book,.reader__stage:not([data-state=loading]) .book__page,.reader__stage:not([data-state=loading]) .book__face:after,.reader__stage:not([data-state=loading]) .book__shadow{animation:none}.reader__stage:is([data-state=error],[data-state=missing],[data-state=empty]) .book-wrap{opacity:.55;filter:saturate(.6)}@media(prefers-reduced-motion:reduce){.book,.book__page,.book__face:after,.book__shadow,.reader__progress:after{animation:none}.reader__progress{display:none}}@media(max-width:560px){.reader__out{padding:8px 10px}.reader__bar{gap:10px}.book{width:156px;height:106px}.book__shadow{width:136px}}
