:root{--desk-1:#2c2723;--desk-2:#121010;--cloth:#1a1a1a;--cloth-dark:#0b0b0b;--foil:#cdb27a;--paper:#f5f0e6;--paper-edge:#e9e1d2;--ink:#2a2622;--ink-soft:#7d746a;--serif:"Ovo", Georgia, serif;--sans:"Outfit", system-ui, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--sans);color:var(--ink);background:var(--desk-2);-webkit-font-smoothing:antialiased;overflow:hidden}.desk{background:radial-gradient(ellipse at 50% 40%, var(--desk-1) 0%, var(--desk-2) 75%);justify-content:center;align-items:center;height:100%;display:flex}.book-stage{flex-direction:column;align-items:center;gap:18px;animation:.5s ease-out book-in;display:flex}@keyframes book-in{0%{opacity:0}}.book-wrap{filter:drop-shadow(0 30px 40px #0000008c);transition:transform .6s;position:relative}.open-hint{z-index:50;letter-spacing:.12em;color:#ffffffb3;white-space:nowrap;pointer-events:none;margin:0;font-size:12px;transition:transform .35s cubic-bezier(.2,.7,.3,1),color .35s;animation:2.4s ease-in-out infinite hint;position:absolute}.book-wrap--closed:has(.cover--front:hover) .open-hint{opacity:1;color:#fff;animation:none;transform:translate(6px)}@keyframes hint{0%,to{opacity:.35}50%{opacity:.95}}.book-wrap--single:after{content:"";z-index:100;pointer-events:none;background:linear-gradient(90deg,#0a0908f2 0%,#0a0908bf 45%,#0a090800 100%);width:8px;position:absolute;top:0;bottom:0;left:0}.book{clip-path:inset(1px);overflow:hidden}.page{-webkit-user-select:none;user-select:none;overflow:hidden}.page img{pointer-events:none}.paper{background:radial-gradient(ellipse at 50% 45%, var(--paper) 60%, var(--paper-edge) 100%)}.paper:after{content:"";z-index:2;pointer-events:none;position:absolute;inset:0}.paper--left:after{background:linear-gradient(270deg,#0000002e 0%,#0000000d 4%,#0000 12%)}.paper--right:after{background:linear-gradient(90deg,#0000002e 0%,#0000000d 4%,#0000 12%)}.paper--left.has-bleed:after{background:linear-gradient(270deg,#00000080 0%,#0000002e 2.5%,#ffffff0f 4%,#0000 9%)}.paper--right.has-bleed:after{background:linear-gradient(90deg,#00000080 0%,#0000002e 2.5%,#ffffff0f 4%,#0000 9%)}.paper--single:after{background:linear-gradient(90deg,#0000001a 0%,#0000 6%)}.cover{color:#ffffffeb;background-color:#161616;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.05 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"),linear-gradient(125deg,#ffffff0d 0%,#fff0 45%,#00000026 100%)}.cover:before{content:"";pointer-events:none;background:#ffffff0f;width:1px;position:absolute;top:0;bottom:0;box-shadow:1px 0 #00000059}.cover--front:before{left:4%}.cover--back:before{right:4%}.cover__content{flex-direction:column;justify-content:space-between;padding:11% 10% 12% 13%;display:flex;position:absolute;inset:0}.cover__content--portrait{justify-content:flex-start;padding:10% 10% 11% 12%}.cover__portrait{aspect-ratio:4/5;background:#ffffff0a;width:100%;margin:0;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff12}.cover__portrait img{object-fit:cover;object-position:50% 30%;width:100%;height:100%;display:block}.cover__name{margin-top:auto}.cover--front .cover__title{text-transform:lowercase}.cover--front .cover__subtitle{letter-spacing:.3em;text-transform:lowercase;opacity:.6;margin-top:.7em}.cover__content--back{justify-content:flex-end;align-items:center;padding:12%}.cover__author{font-family:var(--sans);letter-spacing:.02em;text-transform:lowercase;opacity:.85;margin:0;font-size:clamp(13px,2vmin,18px);font-weight:500}.cover__title{font-family:var(--sans);letter-spacing:-.03em;margin:0;font-size:clamp(34px,8vmin,78px);font-weight:200;line-height:.95}.cover__subtitle{font-family:var(--sans);letter-spacing:.02em;opacity:.6;margin:.9em 0 0;font-size:clamp(11px,1.7vmin,15px);font-weight:300}.cover__small{font-family:var(--sans);letter-spacing:.04em;text-transform:lowercase;opacity:.55;margin:0;font-size:clamp(10px,1.4vmin,13px);font-weight:400}.title-page{text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:12%;display:flex;position:absolute;inset:0}.title-page__author{letter-spacing:.04em;text-transform:lowercase;color:var(--ink-soft);margin:0 0 8px;font-size:clamp(11px,1.7vmin,14px)}.title-page__title{font-family:var(--serif);margin:0;font-size:clamp(28px,6vmin,52px);font-weight:400}.title-page__subtitle{font-family:var(--serif);color:var(--ink-soft);margin:6px 0 0;font-size:clamp(13px,2vmin,18px);font-style:italic}.title-page__count{letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);margin:0;font-size:clamp(9px,1.3vmin,12px);position:absolute;bottom:8%}.title-page__rule{background:var(--ink-soft);opacity:.5;width:32px;height:1px;margin-bottom:18px}.title-page--end .title-page__author{margin-top:14px}.paper.has-bleed{background:#1a1816}.bleed{background:#1a1816;margin:0;position:absolute;inset:0}.bleed img{object-fit:cover;width:100%;height:100%;display:block}.print{flex-direction:column;justify-content:center;margin:0;padding:8% 5% 9%;display:flex;position:absolute;inset:0}.print__frame{justify-content:center;min-height:0;display:flex}.print__frame img{object-fit:contain;max-width:100%;max-height:100%;display:block;box-shadow:0 1px 2px #0000002e,0 4px 12px #0000001f}.caption{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.caption__album{font-family:var(--serif);white-space:nowrap;text-overflow:ellipsis;font-size:clamp(13px,2.1vmin,18px);overflow:hidden}.print .caption{color:var(--ink);padding:0 8% 12%;position:absolute;bottom:0;left:0;right:0}.bleed .caption{color:#fff;text-shadow:0 1px 3px #0006;background:linear-gradient(#0000 0%,#00000040 55%,#0000008c 100%);padding:18% 8% 12%;position:absolute;bottom:0;left:0;right:0}.page-number{color:var(--ink-soft);font-size:clamp(8px,1.2vmin,11px);position:absolute;bottom:2.5%}.bleed .page-number{color:#ffffffb3}.paper--left .page-number{left:8%}.paper--right .page-number,.paper--single .page-number{right:8%}.picker{z-index:200;position:fixed;top:14px;left:14px}.picker__button{color:#fff9;height:36px;font:inherit;letter-spacing:.08em;font-variant-numeric:tabular-nums;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:18px;align-items:center;gap:6px;padding:0 12px;font-size:12px;transition:background .2s,border-color .2s,color .2s;display:inline-flex}.picker__button:hover,.picker__button[aria-expanded=true]{color:#ffffffe6;background:#ffffff0f;border-color:#ffffff2e}.picker__button svg{transition:transform .2s}.picker__button[aria-expanded=true] svg{transform:rotate(180deg)}.picker__panel{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#181614f0;border:1px solid #ffffff1f;border-radius:10px;width:min(300px,100vw - 28px);max-height:min(70vh,480px);padding:10px;position:absolute;top:calc(100% + 8px);left:0;overflow-y:auto;box-shadow:0 10px 30px #00000080}.picker__grid{grid-template-columns:repeat(6,1fr);gap:4px;display:grid}.picker__page{color:#ffffffbf;height:32px;font:inherit;font-variant-numeric:tabular-nums;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;padding:0;font-size:12px;transition:background .15s,color .15s}.picker__page--cover{letter-spacing:.12em;text-transform:uppercase;grid-column:1/-1;font-size:11px}.picker__page:hover{color:#fff;background:#ffffff1a}.picker__page.is-current{border-color:var(--foil);color:var(--foil)}.settings{z-index:200;position:fixed;top:14px;right:14px}.settings__button{color:#fff9;cursor:pointer;background:#ffffff0a;border:1px solid #ffffff2e;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;transition:background .2s,color .2s,transform .4s;display:flex}.settings__button:hover,.settings__button[aria-expanded=true]{color:#ffffffe6;background:#ffffff1f}.settings__button[aria-expanded=true]{transform:rotate(45deg)}.settings__panel{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#181614eb;border:1px solid #ffffff1f;border-radius:10px;min-width:190px;padding:10px 14px;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 10px 30px #00000080}.settings__row{letter-spacing:.04em;color:#ffffffd9;cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:16px;font-size:13px;display:flex}.switch{appearance:none;cursor:pointer;background:#ffffff2e;border-radius:10px;width:34px;height:20px;margin:0;transition:background .2s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:14px;height:14px;transition:transform .2s;position:absolute;top:3px;left:3px}.switch:checked{background:var(--foil)}.switch:checked:after{transform:translate(14px)}.switch:focus-visible{outline:2px solid var(--foil);outline-offset:2px}.loading{letter-spacing:.12em;color:#ffffff73;opacity:0;margin:0;font-size:11px;animation:.4s ease-out .3s forwards loading-in}@keyframes loading-in{to{opacity:1}}.message{color:#ffffffd9;text-align:center;padding:24px}.message__detail{opacity:.6;font-size:12px}
