:root{--lav-50: #f8f3fb;--lav-100: #f0e7f6;--lav-200: #e2d4ef;--lav-300: #c8b4e6;--lav-400: #a98bd0;--lav-500: #8e6bb0;--lav-600: #74539a;--lav-700: #5a3d78;--plum-900: #2e1f3d;--pink-100: #fbe4ee;--pink-200: #f6c9da;--pink-400: #e98fb2;--rose-600: #b04a72;--cream: #fffaf3;--ivory: #fbf5ea;--paper: #f7eedd;--gold: #e8c77a;--gold-deep: #b8924a;--wood-900: #2f1d13;--wood-700: #4a2e1d;--wood-500: #6b4329;--ink: #3a2c33;--ink-soft: #6d5a66;--danger: #b0405a;--display: "Fraunces", "Cooper Black", Georgia, serif;--read: "Literata", Georgia, serif;--hand: "Caveat", "Segoe Print", cursive;--ui: "Literata", Georgia, serif;--radius: 14px;--shadow-soft: 0 1px 2px rgb(46 31 61 / .08), 0 8px 24px -8px rgb(46 31 61 / .18);--shadow-pop: 0 2px 4px rgb(46 31 61 / .1), 0 24px 48px -12px rgb(46 31 61 / .35);--focus: 0 0 0 3px var(--cream), 0 0 0 5px var(--lav-500);--ease: cubic-bezier(.22, 1, .36, 1);color-scheme:light}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;min-height:100%}body{font-family:var(--ui);color:var(--ink);background:var(--lav-50);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default}:focus-visible{outline:none;box-shadow:var(--focus)}img{display:block}kbd{font-family:var(--ui);font-size:.78em;padding:1px 6px;border-radius:6px;background:var(--cream);border:1px solid var(--lav-200);box-shadow:0 1px 0 var(--lav-200)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.fine{font-size:.8rem;color:var(--ink-soft)}.eyebrow{font-family:var(--hand);font-size:1.25rem;color:var(--lav-600);margin:0;line-height:1}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.spacer{flex:1}.app{position:relative;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;isolation:isolate}.wallpaper{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;background-color:var(--lav-50);background-image:radial-gradient(circle at 20% 0%,rgb(246 201 218 / .45),transparent 45%),radial-gradient(circle at 90% 20%,rgb(200 180 230 / .4),transparent 40%),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 120 120'%3E%3Cg fill='none' stroke='%23a98bd0' stroke-opacity='.22' stroke-width='1.2' stroke-linecap='round'%3E%3Cpath d='M30 44c0-8 0-14 0-20M30 32c-4-2-6-6-6-9M30 30c4-2 6-5 6-8'/%3E%3Ccircle cx='30' cy='20' r='3'/%3E%3Cpath d='M90 104c0-8 0-14 0-20M90 92c-4-2-6-6-6-9M90 90c4-2 6-5 6-8'/%3E%3Ccircle cx='90' cy='80' r='3'/%3E%3C/g%3E%3Cg fill='%23e98fb2' fill-opacity='.2'%3E%3Ccircle cx='90' cy='28' r='1.6'/%3E%3Ccircle cx='30' cy='88' r='1.6'/%3E%3C/g%3E%3C/svg%3E")}.site-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding:clamp(18px,4vw,40px) clamp(16px,5vw,64px) 8px;flex-wrap:wrap}.brand{min-width:0;flex:1 1 340px}.brand-title{font-family:Great Vibes,Pinyon Script,cursive;font-weight:400;font-size:clamp(2.6rem,7vw,4.8rem);line-height:1.05;letter-spacing:0;color:var(--lav-700);margin:0;padding:.08em 0 .02em;text-shadow:0 1px 0 rgb(255 255 255 / .7),0 6px 18px rgb(155 127 200 / .25)}.brand-title em{font-style:normal;color:#b3203f}.site-header{position:relative;z-index:30}.shelf-head{position:relative;align-self:stretch;width:100%}.quote-slot{position:absolute;z-index:2;pointer-events:none}.quote-slot.slot-0{right:clamp(16px,6vw,90px);top:92px}.quote-slot.slot-1{left:clamp(16px,5vw,70px);top:-20px}.quote-slot.slot-2{right:clamp(16px,5vw,70px);top:-20px}.quote-note{pointer-events:auto;position:relative;width:210px;padding:18px 14px 12px;border:0;text-align:left;font-family:var(--hand);color:#3d2b3a;transform:rotate(var(--tilt, -3deg));box-shadow:0 1px 1px #0000000f,0 12px 20px -10px #2e1f3d66;cursor:pointer;animation:quote-stick .6s var(--ease) both;display:flex;flex-direction:column;gap:4px}.quote-note:before{content:"";position:absolute;top:-9px;left:50%;width:64px;height:18px;transform:translate(-50%) rotate(-4deg);background:repeating-linear-gradient(90deg,#fff9 0,#fff9 6px,#e98fb259 6px,#e98fb259 12px);box-shadow:0 1px 2px #00000014}.quote-note-text{font-size:1.15rem;line-height:1.15}.paper-sticky-lilac{background:#e6dbf7}.paper-sticky-pink{background:#fbd6e4}.paper-sticky-cream{background:#fbf0cc}.paper-pinned{background:#fdfbf6;font-family:Courier New,ui-monospace,monospace;border:1px solid rgb(0 0 0 / .06)}.paper-pinned .quote-note-text{font-size:.92rem;line-height:1.35}.paper-pinned .quote-note-by{font-size:.78rem}.paper-pinned:before{width:14px;height:14px;top:-6px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fff 0,#fff 18%,#d6304f 30%,#a5163a);box-shadow:0 2px 2px #00000040;transform:translate(-50%)}.paper-torn{background:#f7c3d4;clip-path:polygon(0 6%,6% 0,14% 5%,24% 1%,33% 6%,45% 0,56% 5%,67% 1%,78% 6%,89% 0,100% 5%,98% 94%,90% 100%,80% 95%,69% 100%,58% 94%,46% 100%,34% 95%,22% 100%,11% 94%,2% 100%);padding-top:22px;padding-bottom:18px}.paper-torn:before{display:none}.quote-note-by{font-size:.95rem;color:var(--ink-soft);align-self:flex-end}.quote-note.leaving{animation:quote-peel .6s var(--ease) forwards}@keyframes quote-stick{0%{opacity:0;transform:translateY(-14px) rotate(calc(var(--tilt, -3deg) - 10deg)) scale(.9)}}@keyframes quote-peel{to{opacity:0;transform:translate(18px,26px) rotate(calc(var(--tilt, -3deg) + 14deg)) scale(.92)}}@media(max-width:1100px){.quote-slot.slot-0{display:none}}@media(max-width:900px){.quote-slot.slot-1,.quote-slot.slot-2{display:none}}.home{display:flex;flex-direction:column;min-height:0}.home-shelf{display:flex;flex-direction:column;min-width:0;min-height:0}.home-board{display:flex;flex-direction:column;gap:14px;min-width:0;min-height:0}@media(min-width:900px){.app{height:100vh;height:100dvh;min-height:0;overflow:hidden}.site-header{padding-top:clamp(12px,2.4vh,26px);padding-bottom:2px}.brand-title{font-size:clamp(2.1rem,4.4vw,3.4rem)}.slogan{margin-top:4px}main{min-height:0}.toolbar{padding-top:6px;padding-bottom:4px}.home{flex:1;display:grid;grid-template-columns:minmax(0,1fr) clamp(290px,25vw,380px);gap:clamp(14px,1.8vw,26px);padding:0 clamp(16px,3vw,44px) clamp(10px,1.6vh,18px)}.home-shelf .shelf-section{flex:1;min-height:0;display:flex;flex-direction:column;padding-top:2px}.home-shelf .shelf-head{margin-bottom:6px}.home-shelf .shelf-title{font-size:clamp(1.15rem,2.2vw,1.6rem);padding:4px 22px 6px}.home-shelf .shelf-flourish{margin-top:2px;font-size:1rem}.home-shelf .bookcase{flex:1;min-height:0;margin:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:var(--wood-500) transparent}.home-shelf .bookcase.fits{overflow:hidden}.home-shelf .shelf-caption{margin-top:8px;min-height:0;height:60px;flex:none;overflow:hidden;padding:6px 10px 6px 16px}.home-shelf .caption-hint{font-size:.8rem}.home-shelf .empty{flex:1;justify-content:center}.home-board{overflow:hidden}.home-board .continue-card,.home-board .continue-stack{margin:0;max-width:none;align-self:stretch}.home-board .pinboard{flex:1;min-height:0;margin:0}.home-board .board-items{overflow-y:auto}.site-footer{position:fixed;right:14px;bottom:4px;padding:0;z-index:3}.quote-slot.slot-1,.quote-slot.slot-2{top:-6px}.quote-slot.slot-1 .quote-note,.quote-slot.slot-2 .quote-note{width:180px;padding:14px 12px 10px}.quote-slot.slot-1 .quote-note-text,.quote-slot.slot-2 .quote-note-text{font-size:1rem}}@media(min-width:900px)and (max-width:1250px){.quote-slot.slot-1,.quote-slot.slot-2{display:none}}.pinboard{position:relative;margin:28px clamp(12px,4vw,48px) 0;padding:10px 12px 12px;display:flex;flex-direction:column;border-radius:18px;background:radial-gradient(circle at 1px 1px,rgb(90 61 120 / .12) 1px,transparent 1.5px) 0 0 / 9px 9px,linear-gradient(135deg,#f3e6ec,#ece0f2);box-shadow:inset 0 0 0 1px #c8b4e699,inset 0 10px 30px -18px #5a3d7866}.board-head{display:flex;align-items:center;justify-content:space-between;padding:2px 4px 8px}.board-title{font-family:var(--hand);font-size:1.35rem;color:#b3203f}.board-add-wrap{position:relative}.board-add{width:34px;height:34px;border-radius:50%;border:0;display:grid;place-items:center;background:#b3203f;color:#fde7ee;box-shadow:0 6px 14px -6px #b3203fb3;transition:transform .2s var(--ease)}.board-add:hover{transform:rotate(90deg) scale(1.06)}.frame-picker{width:270px;display:flex;flex-direction:column;gap:10px}.frame-picker .fine{margin:0}.frame-options{display:grid;grid-template-columns:1fr 1fr;gap:8px}.frame-option{border:1.5px solid var(--lav-200);border-radius:12px;background:var(--cream);padding:8px 6px 6px;display:flex;flex-direction:column;align-items:center;gap:6px;font-size:.78rem;color:var(--lav-700)}.frame-option.on{border-color:#b3203f;box-shadow:0 0 0 2px #b3203f33}.frame-sample{width:54px;height:46px;display:block}.frame-sample .photo-inner{display:block;width:100%;height:100%;background:linear-gradient(160deg,#f4dbe6,#d9cdee)}.board-items{flex:1;min-height:0;columns:2;column-gap:14px;padding:10px 6px 6px}.board-items>*{break-inside:avoid;margin:0 auto 18px;display:block}.board-items .quote-slot.on-board{display:block}.board-items .quote-note,.board-items .poster,.board-items .polaroid{width:100%}.board-items .poster{padding:16px 10px 12px}.board-items .poster-text{font-size:clamp(1.7rem,2.3vw,2.3rem)}.board-items .label{font-size:.92rem;text-align:center}.board-items .label-red{font-size:.72rem}.board-items .kiss,.board-items .cherries{margin:0 auto}.board-items .kiss-card,.board-items .cherry-sticker{width:max-content}.drop-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;border-radius:inherit;background:#b3203f1f;outline:2px dashed #b3203f;outline-offset:-8px;font-family:var(--hand);font-size:1.6rem;color:#b3203f;pointer-events:none}.board-photo{position:relative;transform:rotate(var(--tilt));transition:transform .3s var(--ease);width:100%;animation:quote-stick .5s var(--ease) both}.board-photo:hover{transform:rotate(0) scale(1.03);z-index:2}.photo-inner{display:block;overflow:hidden}.photo-inner img{width:100%;height:auto;display:block}.photo-loading{display:block;aspect-ratio:4 / 5;background:var(--lav-100)}.board-photo .pin{position:absolute;top:-9px;left:50%;width:20px;height:20px;transform:translate(-50%);z-index:2}.frame-polaroid{background:#fffdf8;padding:7px 7px 22px;box-shadow:0 1px 1px #0000000f,0 12px 20px -10px #2e1f3d73}.frame-gold{padding:7px;background:linear-gradient(135deg,#f8e6ab,#c99a45 35%,#f3d68c 55%,#b8862f);box-shadow:inset 0 0 0 2px #fff0c899,0 12px 20px -10px #2e1f3d80;border-radius:4px}.frame-gold .photo-inner{box-shadow:inset 0 0 0 2px #78501473}.frame-tape{padding:0;box-shadow:0 10px 18px -10px #2e1f3d73}.photo-tape{position:absolute;top:-8px;left:50%;width:56px;height:18px;transform:translate(-50%) rotate(-5deg);background:repeating-linear-gradient(90deg,#ffffffa6 0,#ffffffa6 6px,#e98fb266 6px,#e98fb266 12px);z-index:2}.frame-scallop{padding:8px;background:#fff;-webkit-mask:radial-gradient(circle at 6px 6px,#000 5.5px,transparent 6px) -6px -6px / 12px 12px round,linear-gradient(#000 0 0) 6px 6px / calc(100% - 12px) calc(100% - 12px) no-repeat;mask:radial-gradient(circle at 6px 6px,#000 5.5px,transparent 6px) -6px -6px / 12px 12px round,linear-gradient(#000 0 0) 6px 6px / calc(100% - 12px) calc(100% - 12px) no-repeat;filter:drop-shadow(0 8px 10px rgb(46 31 61 / .3))}.frame-sample.frame-polaroid{padding:3px 3px 9px}.frame-sample.frame-gold{padding:4px}.frame-sample.frame-scallop{padding:5px}.photo-remove{position:absolute;top:4px;right:4px;width:24px;height:24px;border-radius:50%;border:0;display:grid;place-items:center;background:#2e1f3db3;color:#fff;opacity:0;transition:opacity .2s;z-index:3}.board-photo:hover .photo-remove,.board-photo:focus-within .photo-remove{opacity:1}@media(hover:none){.photo-remove{opacity:.85}}.pinned-item{position:relative;transform:rotate(var(--tilt));transition:transform .35s var(--ease);cursor:pointer;box-shadow:0 1px 1px #0000000f,0 14px 22px -12px #2e1f3d73}.pinned-item:hover{transform:rotate(0) translateY(-4px) scale(1.02)}.pinned-item .pin{position:absolute;top:-9px;left:50%;width:20px;height:20px;transform:translate(-50%);z-index:2}.poster{background:#f7a8c4;padding:22px 26px 18px;width:210px}.poster-text{display:block;font-family:var(--display);font-variation-settings:"SOFT" 100,"opsz" 144;font-weight:900;font-size:2.6rem;line-height:.88;letter-spacing:-.03em;color:#b3203f;text-align:center}.poster-heart{display:block;text-align:center;color:#b3203f;font-size:1.6rem;margin-top:6px}.label{background:#fdfbf6;padding:10px 16px 8px;font-family:Courier New,ui-monospace,monospace;font-size:1.05rem;letter-spacing:.04em;color:#2a1f26;border:1px solid rgb(0 0 0 / .07)}.label-red{background:#b3203f;color:#fde7ee;font-size:.85rem;text-transform:uppercase;letter-spacing:.12em;align-self:center}.kiss-card{background:transparent;box-shadow:none}.kiss{width:110px;display:block;filter:drop-shadow(0 2px 2px rgb(120 20 50 / .25))}.polaroid{background:#fffdf8;padding:10px 10px 8px;width:150px;display:flex;flex-direction:column;align-items:center}.polaroid-photo{display:flex;align-items:flex-end;justify-content:center;width:100%;height:110px;background:linear-gradient(160deg,#f4dbe6,#e6dcf3);overflow:hidden}.polaroid-caption{font-family:var(--hand);font-size:1.1rem;color:#6d4a5f;margin-top:6px}.cherry-sticker{background:transparent;box-shadow:none}.cherries{width:64px;display:block;filter:drop-shadow(0 3px 3px rgb(120 20 50 / .3))}.quote-slot.on-board{position:relative;left:auto;right:auto;top:auto}@media(max-width:640px){.poster{width:170px;padding:18px 18px 14px}.poster-text{font-size:2.15rem}}.slogan{margin:8px 0 0;font-family:var(--display);font-variation-settings:"SOFT" 100;font-style:italic;font-weight:500;font-size:clamp(.98rem,2.2vw,1.15rem);color:#b3203f;animation:rise .6s var(--ease) both}.quote{margin:6px 0 0;font-family:var(--hand);font-size:clamp(1.15rem,2.4vw,1.45rem);color:var(--lav-600);min-height:1.6em;max-width:46ch;transition:opacity .45s var(--ease),transform .45s var(--ease)}.quote.fading{opacity:0;transform:translateY(4px)}.quote-by{font-size:.85em;color:var(--ink-soft);white-space:nowrap}.header-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.save-pill{display:inline-flex;align-items:center;gap:6px;font-size:.75rem;color:var(--ink-soft);padding:5px 10px;border-radius:999px;background:#fffaf3b3;border:1px solid var(--lav-200);white-space:nowrap}.save-pill .dot{width:7px;height:7px;border-radius:50%;background:#8fb59a}.save-pill.saving .dot{background:var(--gold);animation:pulse 1s infinite}.save-pill.error{color:var(--danger);border-color:#eab3c0}.save-pill.error .dot{background:var(--danger)}.save-pill.local-only{cursor:pointer;color:var(--lav-700, #4a3463);border-color:var(--gold, #e8c77a)}.save-pill.local-only .dot{background:var(--gold, #e8c77a)}@media(max-width:420px){.save-pill .pill-long{display:none}}@keyframes pulse{50%{opacity:.3}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;padding:10px 18px;background:var(--lav-700);color:var(--cream);font-weight:600;font-size:.95rem;box-shadow:0 1px #ffffff40 inset,0 6px 16px -6px #5a3d7899;transition:transform .15s var(--ease),background .15s}.btn:hover:not(:disabled){background:var(--lav-600);transform:translateY(-1px)}.btn:active:not(:disabled){transform:translateY(0)}.btn:disabled{opacity:.5}.btn-ghost{background:#fffaf3d9;color:var(--lav-700);box-shadow:inset 0 0 0 1.5px var(--lav-300)}.btn-ghost:hover:not(:disabled){background:var(--cream)}.btn-small{padding:6px 13px;font-size:.85rem}.btn-big{padding:13px 24px;font-size:1.05rem}.icon-btn{display:inline-grid;place-items:center;width:40px;height:40px;border:0;border-radius:50%;background:transparent;color:var(--lav-700);transition:background .15s}.icon-btn:hover{background:#c8b4e659}.icon-btn.small{width:30px;height:30px}.icon-btn.on{background:var(--lav-200)}.lock-btn{color:var(--lav-600);background:#fffaf3b3;border:1px solid var(--lav-200)}.lock-btn:hover{color:var(--rose-600)}.link-btn{border:0;background:none;padding:4px 0;color:var(--lav-600);text-decoration:underline;text-decoration-color:var(--lav-300);text-underline-offset:3px;font-size:.88rem;display:inline-flex;align-items:center;gap:4px}.link-btn.danger{color:var(--danger);text-decoration-color:#eab3c0}.chips{display:flex;gap:6px}.chips.wrap{flex-wrap:wrap}.chips.scroll{overflow-x:auto;scrollbar-width:none;padding:4px 2px}.chips.scroll.more-right{-webkit-mask-image:linear-gradient(90deg,#000 92%,transparent);mask-image:linear-gradient(90deg,#000 92%,transparent)}.chips.scroll.more-left{-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%);mask-image:linear-gradient(90deg,transparent,#000 8%)}.chips.scroll.more-left.more-right{-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}.chips.scroll::-webkit-scrollbar{display:none}.chip{border:1px solid var(--lav-200);background:#fffaf3cc;color:var(--lav-700);border-radius:999px;padding:5px 13px;font-size:.85rem;white-space:nowrap;display:inline-flex;align-items:center;gap:5px;transition:background .15s,border-color .15s}.chip:hover{border-color:var(--lav-400)}.chip.on{background:var(--lav-700);border-color:var(--lav-700);color:var(--cream)}.chip.fav{color:var(--rose-600)}.chip.fav.on{background:var(--rose-600);border-color:var(--rose-600);color:var(--cream)}.chip-add{border-style:dashed;color:var(--lav-600)}.category-dialog{width:min(440px,calc(100vw - 32px))}.category-new{display:flex;gap:8px;margin:4px 0 14px}.category-new input{flex:1;min-width:0;padding:10px 14px;border:1.5px solid var(--lav-300, #d9c8f0);border-radius:999px;background:var(--cream);font:inherit;outline:none}.category-new input:focus{border-color:var(--lav-500)}.category-list{list-style:none;margin:0 0 10px;padding:0;max-height:min(48dvh,380px);overflow-y:auto}.category-list li{display:flex;align-items:center;gap:10px;padding:6px 4px 6px 12px;border-bottom:1px dashed rgba(120,90,160,.2)}.category-name{flex:1}.category-count{font-size:.8rem;color:var(--lav-600)}.category-remove{width:36px;height:36px}.category-remove:hover{color:var(--rose-600)}.chip .sugg{font-size:.7rem;color:var(--gold-deep)}.chip.on .sugg{color:var(--gold)}.chip-btn{display:inline-flex;align-items:center;gap:6px;border:1.5px solid var(--pink-200);color:var(--rose-600);background:var(--cream);border-radius:999px;padding:6px 13px;font-size:.85rem}.chip-btn.on{background:var(--pink-100);border-color:var(--pink-400)}.segmented{display:inline-flex;background:var(--lav-100);border-radius:999px;padding:3px;gap:2px;flex-wrap:wrap}.segmented button{border:0;background:transparent;border-radius:999px;padding:6px 12px;font-size:.85rem;color:var(--lav-700);display:inline-flex;gap:5px;align-items:center}.segmented button.on{background:var(--cream);box-shadow:var(--shadow-soft);font-weight:600}.input{width:100%;border:1.5px solid var(--lav-200);background:var(--cream);border-radius:12px;padding:10px 14px;transition:border-color .15s}.input:focus{outline:none;border-color:var(--lav-500)}.input-small{padding:6px 10px;font-size:.85rem;max-width:180px}main{flex:1;display:flex;flex-direction:column;min-width:0}.toolbar{display:flex;align-items:center;gap:12px;padding:10px clamp(16px,5vw,64px) 6px;flex-wrap:wrap}.search{display:flex;align-items:center;gap:8px;padding:0 14px;height:38px;border-radius:999px;background:#fffaf3d9;border:1px solid var(--lav-200);color:var(--lav-600);flex:0 1 240px;min-width:160px}.search:focus-within{border-color:var(--lav-500);box-shadow:0 0 0 3px #a98bd040}.search input{border:0;background:transparent;outline:none;width:100%;color:var(--ink)}.toolbar .chips.scroll{flex:1 1 300px;min-width:0}.status-select select{height:36px;border-radius:999px;border:1px solid var(--lav-200);background:#fffaf3d9;padding:0 12px;color:var(--lav-700);font-size:.85rem}.continue-card{align-self:flex-start;margin:8px clamp(16px,5vw,64px) 0;display:flex;align-items:center;gap:14px;padding:10px 16px 10px 10px;border:0;border-radius:16px;background:var(--cream);box-shadow:var(--shadow-soft);text-align:left;color:var(--lav-700);max-width:min(420px,calc(100% - 32px));transition:transform .2s var(--ease),box-shadow .2s}.continue-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-pop)}.continue-stack{display:flex;flex-direction:column;gap:6px;align-self:flex-start;margin:8px clamp(16px,5vw,64px) 0}.continue-stack .continue-card{margin:0;align-self:stretch;width:100%}.continue-item{position:relative;display:flex}.continue-item>.continue-row{flex:1;min-width:0}.continue-hide{position:absolute;top:5px;right:5px;display:grid;place-items:center;width:22px;height:22px;padding:0;border:0;border-radius:50%;background:#785aa01a;color:var(--lav-600);cursor:pointer;opacity:0;transition:opacity .15s,background .15s}.continue-item:hover .continue-hide,.continue-hide:focus-visible{opacity:1}.continue-hide:hover{background:#c8234a1f;color:var(--rose-600, #b3203f)}@media(hover:none){.continue-hide{opacity:.8}}.continue-row{display:flex;align-items:center;gap:10px;padding:6px 12px 6px 8px;border:0;border-radius:12px;background:#fffaf3bf;color:var(--lav-700);text-align:left;cursor:pointer;box-shadow:0 1px 4px #2e1f3d14;transition:transform .2s var(--ease),background .2s}.continue-row:hover{transform:translateY(-1px);background:var(--cream)}.continue-row img,.continue-row .mini-cloth{width:26px;height:39px;object-fit:cover;border-radius:2px 4px 4px 2px;box-shadow:1px 2px 4px #2e1f3d33;flex:none}.continue-row-text{display:flex;flex-direction:column;min-width:0;flex:1}.continue-row-text strong{font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.continue-card img,.continue-card .mini-cloth{width:44px;height:66px;object-fit:cover;border-radius:3px 6px 6px 3px;box-shadow:2px 3px 8px #2e1f3d40;flex:none}.continue-text{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.continue-text strong{font-family:var(--display);font-variation-settings:"SOFT" 100;font-size:1.1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.progress-line{display:block;height:5px;border-radius:99px;background:var(--lav-100);overflow:hidden;width:100%}.progress-line span{display:block;height:100%;background:linear-gradient(90deg,var(--lav-400),var(--pink-400));border-radius:inherit;transition:width .4s var(--ease)}.progress-line.small{height:4px;max-width:200px}.empty{text-align:center;padding:24px 16px 40px;display:flex;flex-direction:column;align-items:center;gap:4px}.empty h2{font-family:var(--display);font-variation-settings:"SOFT" 100;font-weight:700;color:var(--lav-700);font-size:clamp(1.4rem,3.5vw,2rem);margin:10px 0 0}.empty p{color:var(--ink-soft);max-width:40ch;margin:4px 0 14px}.empty-shelf{width:min(420px,90vw);display:flex;flex-direction:column;align-items:center}.shelf-loading{padding:120px 16px;text-align:center;font-family:var(--hand);font-size:1.4rem;color:var(--lav-500)}.shelf-count{text-align:center;margin:4px 0 0}.state-box{border-radius:var(--radius);background:var(--lav-50);border:1px dashed var(--lav-300);padding:16px;display:flex;flex-direction:column;gap:10px;align-items:flex-start}.state-box p{margin:0}.state-box.error{background:#fdf1f3;border-color:#eab3c0}.state-box.warn{background:#fff7e3;border:1px solid #ecd6a0;flex-direction:row;align-items:center;flex-wrap:wrap;justify-content:space-between}.state-quiet{color:var(--ink-soft);font-style:italic;margin:18px 0}.site-footer{display:flex;justify-content:center;padding:28px 16px 22px}.xoxo{font-family:var(--hand);font-size:.78rem;color:var(--lav-400);letter-spacing:.04em;opacity:.85}.glitter-trail{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:300}.toasts{position:fixed;left:50%;bottom:max(18px,env(safe-area-inset-bottom));transform:translate(-50%);display:flex;flex-direction:column;gap:8px;z-index:200;width:min(460px,calc(100vw - 32px));pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;gap:10px;background:var(--plum-900);color:var(--cream);padding:10px 10px 10px 16px;border-radius:14px;box-shadow:var(--shadow-pop);font-size:.9rem;animation:toast-in .3s var(--ease)}.toast span{flex:1}.toast .icon-btn{color:var(--lav-200)}.toast-error{background:#6b2337}.toast-action{border:0;background:var(--gold);color:var(--plum-900);font-weight:700;border-radius:999px;padding:5px 14px;font-size:.85rem}@keyframes toast-in{0%{opacity:0;transform:translateY(10px)}}@media(max-width:640px){.add-btn span{display:none}.add-btn{padding:10px 12px}.save-pill{font-size:.7rem}.search{flex:1 1 100%}.status-select{flex:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}@media(min-width:900px){.header-actions .add-btn{display:none}}.shelf-section{padding-top:22px}.shelf-head{display:flex;flex-direction:column;align-items:center;margin:0 auto 10px;text-align:center}.shelf-picker{position:relative;z-index:8;display:flex;justify-content:center}.shelf-select{position:relative;cursor:pointer}.shelf-select:focus-visible{outline:none;box-shadow:0 0 0 4px #fffaf3b3,0 0 0 6px var(--lav-500),0 8px 18px -10px #5a3d7880}.shelf-caret{font-size:.9rem;color:var(--lav-500);font-style:normal;transition:transform .2s var(--ease)}.shelf-select.open .shelf-caret{transform:rotate(180deg)}.shelf-menu{position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);width:min(320px,calc(100vw - 32px));margin:0;padding:6px;list-style:none;background:radial-gradient(circle at 50% 0%,rgb(255 255 255 / .9),transparent 70%),linear-gradient(180deg,#fffaf3,#f6eadf);border:1.5px solid var(--gilt, #e6c47c);border-radius:20px;box-shadow:0 18px 40px -14px #2e1f3d80,0 0 0 4px #fffaf380;animation:shelf-menu-in .22s var(--ease) both}@keyframes shelf-menu-in{0%{opacity:0;transform:translate(-50%,-6px) scale(.97)}}.shelf-menu li{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:14px;cursor:pointer;color:var(--lav-700)}.shelf-menu li.hi{background:#9b7fc81f}.shelf-menu li.on{background:#9b7fc833}.shelf-opt-text{flex:1;display:flex;flex-direction:column;gap:1px;text-align:left}.shelf-opt-text strong{font-family:var(--display);font-variation-settings:"SOFT" 100;font-style:italic;font-weight:700;font-size:1.1rem}.shelf-opt-text span{font-family:var(--hand);font-size:1rem;color:var(--lav-600)}.shelf-title{display:inline-flex;align-items:center;gap:10px;margin:0;padding:6px 26px 8px;font-family:var(--display);font-variation-settings:"SOFT" 100,"opsz" 72;font-weight:750;font-style:italic;font-size:clamp(1.35rem,3.4vw,1.9rem);color:var(--lav-700);background:radial-gradient(circle at 50% 0%,rgb(255 255 255 / .9),transparent 70%),linear-gradient(180deg,#fffaf3,#f6eadf);border:1.5px solid var(--gilt, #e6c47c);border-radius:999px;box-shadow:0 0 0 4px #fffaf3b3,0 0 0 5px #c8b4e699,0 8px 18px -10px #5a3d7880}.title-sparkle{width:14px;height:14px;color:#e3b25c;animation:twinkle-soft 3.2s ease-in-out infinite}.title-sparkle:last-child{animation-delay:1.6s;color:var(--pink-400)}@keyframes twinkle-soft{50%{transform:scale(.6) rotate(45deg);opacity:.5}}.shelf-flourish{margin-top:6px;font-family:var(--hand);font-size:1.15rem;color:var(--lav-600)}.shelf-empty{flex:1 1 0;min-width:0;align-self:center;text-align:center;margin:0;padding:0 16px;font-family:var(--hand);font-size:1.35rem;color:#f2e4d0;opacity:.85;pointer-events:none;z-index:2}.fairy-lights{position:absolute;top:0;left:0;width:100%;height:46px;z-index:3;pointer-events:none;overflow:visible}.fairy-lights .bulb{filter:drop-shadow(0 0 4px rgb(255 226 150 / .95)) drop-shadow(0 0 10px rgb(255 214 120 / .6));animation:bulb-glow 3.5s ease-in-out infinite}@keyframes bulb-glow{50%{opacity:.55}}.shelf-lace{height:12px;margin:0 6px;background:radial-gradient(circle at 8px 0,#f7f0fb 6px,transparent 6.5px) 0 0 / 16px 12px repeat-x,radial-gradient(circle at 8px 0,rgb(200 180 230 / .9) 7.5px,transparent 8px) 0 0 / 16px 12px repeat-x;position:relative;z-index:2;filter:drop-shadow(0 2px 2px rgb(90 61 120 / .2))}.bookcase{position:relative;margin:0 clamp(6px,3vw,44px)}.shelf-row{position:relative}.shelf-row+.shelf-row .shelf-back{border-radius:0}.shelf-row+.shelf-row .shelf-back:before{display:none}.shelf-row+.shelf-row .shelf-books{padding-top:44px;min-height:calc(292px * var(--k) + 44px)}.shelf-books{display:flex;align-items:flex-end;gap:3px;padding:74px clamp(24px,4vw,56px) 0;min-height:calc(292px * var(--k) + 74px)}@media(max-width:640px){.shelf-books{padding-left:16px;padding-right:16px}}.shelf-back{position:relative;border-radius:14px 14px 0 0;border:12px solid var(--wood-500);border-bottom:0;background:repeating-linear-gradient(90deg,rgb(255 255 255 / .018) 0 2px,transparent 2px 9px,rgb(0 0 0 / .05) 9px 10px,transparent 10px 23px),linear-gradient(180deg,#2c1b11,#3d2618 45%,#34200f);box-shadow:inset 0 22px 34px -12px #000000a6,inset 0 -12px 22px -12px #0000008c,0 12px 40px -18px #2e1f3d80}.shelf-back:before{content:"";position:absolute;inset:-12px -12px auto;height:5px;border-radius:14px 14px 0 0;background:linear-gradient(90deg,var(--lav-400),var(--pink-400),var(--lav-400));opacity:.85}.shelf-scroll{--k: 1;display:flex;align-items:flex-end;gap:3px;overflow-x:auto;overflow-y:hidden;padding:74px clamp(24px,4vw,56px) 0;min-height:calc(292px * var(--k) + 74px);scrollbar-width:thin;scrollbar-color:var(--wood-500) transparent;overscroll-behavior-x:contain}.shelf-scroll::-webkit-scrollbar{height:8px}.shelf-scroll::-webkit-scrollbar-thumb{background:var(--wood-500);border-radius:8px}.shelf-plank{height:28px;border-radius:3px 3px 6px 6px;background:linear-gradient(180deg,rgb(255 255 255 / .16),transparent 30%,rgb(0 0 0 / .18)),repeating-linear-gradient(90deg,rgb(0 0 0 / .06) 0 1px,transparent 1px 40px,rgb(255 255 255 / .05) 40px 42px,transparent 42px 90px),linear-gradient(90deg,#6b4329,#7d5133 30%,#6a422a 60%,#7a4f31);box-shadow:inset 0 3px 0 var(--lav-300),0 14px 22px -10px #2e1f3d8c;position:relative;z-index:3}.shelf-plank.small{width:100%;height:16px}@property --spine{syntax: "<color>"; inherits: true; initial-value: #6e4f8f;}@property --ink{syntax: "<color>"; inherits: true; initial-value: #f3dc9f;}@property --gilt{syntax: "<color>"; inherits: true; initial-value: #e6c47c;}.book{position:relative;flex:none;width:calc(var(--w) * var(--k));height:calc(var(--h) * var(--k));z-index:1;transition:--spine .8s ease,--ink .8s ease,--gilt .8s ease}.book:not(.settling):hover,.book.is-active,.book:focus-within{z-index:6}.book-btn{display:block;position:relative;width:100%;height:100%;padding:0;border:0;background:none;border-radius:3px;-webkit-tap-highlight-color:transparent}.book-btn:focus-visible{box-shadow:none}.book-btn:focus-visible .spine{outline:3px solid var(--gold);outline-offset:2px}.book-3d{position:absolute;top:0;right:0;bottom:0;left:0;transform-style:preserve-3d;transform-origin:50% 100%;transform:perspective(1100px) translateZ(0);transition:transform .5s var(--ease)}.book:not(.settling):hover .book-3d,.book.is-active .book-3d{transform:perspective(1100px) translate3d(0,-20px,46px) rotateY(-44deg)}.book:after{content:"";position:absolute;left:-10%;right:-10%;bottom:-6px;height:10px;border-radius:50%;background:#00000073;filter:blur(4px);z-index:-1;transition:transform .5s var(--ease),opacity .5s}.book:not(.settling):hover:after,.book.is-active:after{transform:scaleX(1.6) translate(20%);opacity:.5}.face{position:absolute;top:0;height:100%;backface-visibility:hidden;-webkit-backface-visibility:hidden}.spine{left:0;width:100%;border-radius:3px 3px 2px 2px;display:flex;flex-direction:column;align-items:center;padding:12px 0 10px;color:var(--gold);background:linear-gradient(90deg,#00000052,#ffffff29 16%,#ffffff0d 38%,#0000000a 70%,#00000057),repeating-linear-gradient(0deg,rgb(255 255 255 / .04) 0 1px,transparent 1px 3px),repeating-linear-gradient(90deg,rgb(0 0 0 / .05) 0 1px,transparent 1px 2px),var(--spine);box-shadow:inset 0 0 0 1px #0003;overflow:hidden}.spine-orn{display:block;flex:none;width:100%;height:auto;overflow:visible;filter:drop-shadow(0 .5px 0 rgb(0 0 0 / .25))}.spine-orn.top{max-height:30px;margin-bottom:6px}.spine-orn.bottom{margin-top:auto;flex:0 1 auto;min-height:24px;max-height:32%}.spine-title{--troom: calc(var(--h) * var(--k) * .5);writing-mode:vertical-rl;font-family:var(--display);font-variation-settings:"SOFT" 100,"opsz" 24;font-weight:700;font-size:max(9px,min(calc(18px * var(--k)),calc(var(--w) * var(--k) * .36),calc(var(--troom) / (var(--tchars, 10) * .68))));line-height:1.05;letter-spacing:.02em;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:none;max-height:calc(var(--troom) + 6px)}.spine-title.two{white-space:normal;text-wrap:balance;line-height:1.02;font-size:max(9px,min(calc(16px * var(--k)),calc((var(--w) * var(--k) - 10px) / 2.2),calc(var(--troom) / (var(--tchars, 10) * .68))));max-width:calc(var(--w) * var(--k) - 6px)}.spine.dark .spine-title{text-shadow:0 1px 0 rgb(0 0 0 / .45)}.spine.light .spine-title{text-shadow:0 1px 0 rgb(255 255 255 / .35)}.v4 .spine-title{background:#8a6f86;background:color-mix(in srgb,var(--spine) 82%,#3a2433);color:var(--ink);border:1px solid var(--gilt);outline:1px solid rgb(255 255 255 / .25);outline-offset:-3px;padding:8px 3px;border-radius:2px}.spine-author{--room: calc(var(--h) * var(--k) * .2);writing-mode:vertical-rl;font-size:clamp(6.5px,calc(var(--room) / (var(--chars, 6) * .82)),calc(9.5px*max(1,var(--k))));letter-spacing:.1em;text-transform:uppercase;margin-top:6px;color:var(--ink);opacity:.8;max-height:calc(var(--room) + 4px);overflow:hidden;white-space:nowrap;flex:none}.cover{left:100%;width:calc(var(--d) * var(--k));transform-origin:0 50%;transform:rotateY(90deg);border-radius:0 4px 4px 0;overflow:hidden;background:var(--spine);box-shadow:inset 4px 0 8px #00000040}.cover img{width:100%;height:100%;object-fit:cover}.cover:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,rgb(0 0 0 / .25),transparent 12%,rgb(255 255 255 / .08) 60%,rgb(0 0 0 / .1))}.cover-fallback{display:grid;place-items:center;height:100%;padding:12px;text-align:center;font-family:var(--display);font-variation-settings:"SOFT" 100;font-weight:700;color:var(--gold);border:2px solid rgb(232 199 122 / .6);outline:1px solid rgb(232 199 122 / .4);outline-offset:-8px}.fav-flower{position:absolute;top:-34px;left:50%;transform:translate(-50%) rotate(-10deg);z-index:2;pointer-events:none;filter:drop-shadow(0 2px 2px rgb(0 0 0 / .3));transition:transform .5s var(--ease),opacity .3s}.book:not(.settling):hover .fav-flower,.book.is-active .fav-flower{transform:translate(-30%,-20px) rotate(-16deg)}.ribbon{position:absolute;bottom:-18px;left:28%;width:7px;height:30px;background:linear-gradient(90deg,#d26f98,var(--pink-400) 50%,#d26f98);clip-path:polygon(0 0,100% 0,100% 100%,50% 82%,0 100%);z-index:4;pointer-events:none;transition:opacity .3s}.book:not(.settling):hover .ribbon,.book.is-active .ribbon{opacity:0}.add-slot-wrap{flex:none;margin-left:10px;width:calc(58px * var(--k));height:calc(250px * var(--k))}.add-slot{all:unset;box-sizing:border-box;cursor:pointer;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:calc(14px * var(--k));padding-top:calc(18px * var(--k));border:2px dashed rgb(232 199 122 / .55);border-bottom:0;border-radius:6px 6px 2px 2px;background:linear-gradient(180deg,#fffaf314,#fffaf308);color:#f3dc9f;transition:background .2s var(--ease),border-color .2s var(--ease),transform .25s var(--ease)}.add-slot:hover,.add-slot:focus-visible{background:linear-gradient(180deg,#fffaf32e,#fffaf30f);border-color:#e8c77af2;transform:translateY(-6px)}.add-slot:active{transform:translateY(-2px) scale(.98)}.add-slot-plus{display:grid;place-items:center;width:calc(36px * var(--k));height:calc(36px * var(--k));min-width:26px;min-height:26px;border-radius:50%;background:#e8c77a33;box-shadow:inset 0 0 0 1px #e8c77a99}.add-slot-label{writing-mode:vertical-rl;font-family:var(--display);font-weight:700;font-size:clamp(11px,calc(15px * var(--k)),15px);letter-spacing:.06em;white-space:nowrap;opacity:.9}.decor-stack{flex:none;display:flex;flex-direction:column-reverse;align-items:flex-start;margin-left:auto;padding-right:12px}.decor-stack>span:not(.decor-vase){display:block;height:19px;border-radius:2px 3px 3px 2px;background:linear-gradient(180deg,rgb(255 255 255 / .18),transparent 40%,rgb(0 0 0 / .2)),linear-gradient(90deg,var(--c) 0 90%,#efe3cb 90%,#e4d5b9);box-shadow:0 2px 3px #00000059,inset 0 0 0 1px #00000026;border-left:4px solid rgb(232 199 122 / .75)}.decor-stack>span:nth-child(2){margin-left:6px}.decor-vase{display:flex;align-items:flex-end;margin:0 0 -2px 26px;height:64px;gap:0}.decor-vase svg{margin:0 -8px}.decor-top{display:flex;align-items:flex-end}.heart-plush{all:unset;cursor:pointer;display:block;width:76px;height:82px;margin:0 0 -3px 4px;transform-origin:50% 100%;transform:rotate(4deg);filter:drop-shadow(0 3px 2px rgb(0 0 0 / .3));transition:transform .25s ease}.heart-plush svg{width:100%;height:100%;display:block}.heart-plush:hover{transform:rotate(-2deg) scale(1.05)}.heart-plush[data-boop]{animation:plush-boop .6s cubic-bezier(.3,1.6,.5,1)}@keyframes plush-boop{0%{transform:rotate(4deg) scale(1)}30%{transform:rotate(-8deg) scale(1.12,.9)}60%{transform:rotate(6deg) scale(.96,1.06)}to{transform:rotate(4deg) scale(1)}}.shelf-arrow{position:absolute;top:50%;z-index:8;width:42px;height:42px;border-radius:50%;border:0;background:#fffaf3eb;color:var(--lav-700);box-shadow:var(--shadow-soft);display:grid;place-items:center;transition:opacity .2s,transform .2s}.shelf-arrow.prev{left:2px}.shelf-arrow.next{right:2px}.shelf-arrow:disabled{opacity:0;pointer-events:none}.shelf-arrow:hover{transform:scale(1.06)}.shelf-caption{margin:18px auto 0;width:min(760px,calc(100% - 32px));min-height:62px;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px 10px 18px;background:#fffaf3d1;border:1px solid var(--lav-200);border-radius:18px;box-shadow:var(--shadow-soft);flex-wrap:wrap}.caption-text{display:flex;flex-direction:column;min-width:0;flex:1 1 260px}.caption-text strong{font-family:var(--display);font-variation-settings:"SOFT" 100;font-size:1.15rem;color:var(--lav-700)}.caption-text>span:not(.caption-meta){color:var(--ink-soft);font-size:.9rem}.caption-meta{font-size:.78rem;color:var(--ink-soft)}.caption-actions{display:flex;gap:8px;align-items:center}.caption-hint{margin:0 auto;color:var(--ink-soft);font-size:.85rem;text-align:center}@media(max-width:640px){.shelf-scroll{--k: .8;padding-top:62px;padding-left:20px}.shelf-back{border-width:8px}.shelf-arrow{display:none}.caption-hint kbd,.caption-hint{font-size:.78rem}}.hint-touch{display:none}@media(hover:none){.hint-keys{display:none}.hint-touch{display:inline}}@media(prefers-reduced-motion:reduce){.book:not(.settling):hover .book-3d,.book.is-active .book-3d{transform:perspective(1100px) translate3d(0,-14px,30px) rotateY(-40deg)}}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#2e1f3d73;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;padding:16px;animation:fade-in .2s ease}.scrim.light{background:#2e1f3d40}.scrim.closing{opacity:0;transition:opacity .5s var(--ease) .06s;pointer-events:none}.scrim.closing .dialog{transform:translateY(10px) scale(.985);transition:transform .5s var(--ease)}.dialog.detail-dialog{animation:fade-in .35s ease both;height:min(880px,calc(100dvh - 32px))}.detail-body>*{animation:rise .7s var(--ease) both}.detail-body>:nth-child(1){animation-delay:.12s}.detail-body>:nth-child(2){animation-delay:.18s}.detail-body>:nth-child(3){animation-delay:.24s}.detail-body>:nth-child(4){animation-delay:.3s}.detail-body>:nth-child(5){animation-delay:.36s}.detail-body>:nth-child(n+6){animation-delay:.42s}.cover-ghost{contain:layout paint}.detail-nav{position:fixed;top:50%;z-index:2;display:grid;place-items:center;width:52px;height:52px;margin-top:-26px;border:0;border-radius:50%;background:#fffaf3eb;color:var(--lav-700);box-shadow:0 6px 18px -6px #2e1f3d99;cursor:pointer;animation:fade-in .3s var(--ease) .25s both;transition:transform .15s var(--ease),background .15s}.detail-nav:hover{background:var(--cream);transform:scale(1.06)}.detail-nav:active{transform:scale(.94)}.detail-nav.prev{left:max(12px,calc(50% - 456px))}.detail-nav.next{right:max(12px,calc(50% - 456px))}.detail{touch-action:pan-y}.detail.slide-next{animation:detail-from-right .38s var(--ease) both}.detail.slide-prev{animation:detail-from-left .38s var(--ease) both}.detail.slide-next .detail-body>*,.detail.slide-prev .detail-body>*{animation:none}@keyframes detail-from-right{0%{opacity:0;transform:translate(36px)}}@keyframes detail-from-left{0%{opacity:0;transform:translate(-36px)}}@media(max-width:900px){.detail-nav{top:auto;bottom:max(16px,env(safe-area-inset-bottom));margin-top:0;width:46px;height:46px}.detail-nav.prev{left:14px}.detail-nav.next{right:14px}.detail-dialog{padding-bottom:84px}}.cover-ghost img{box-shadow:10px 18px 34px -6px #2e1f3d73}@media(hover:none),(max-width:760px){.scrim{-webkit-backdrop-filter:none;backdrop-filter:none;background:#2e1f3d8c}.scrim.light{background:#2e1f3d52}.cover-ghost img{box-shadow:4px 8px 0 -2px #2e1f3d40}.detail-body>*{animation-duration:.5s}}.dialog-open .fairy-lights,.dialog-open .fairy-lights *{animation-play-state:paused}@keyframes fade-in{0%{opacity:0}}.dialog{position:relative;width:min(760px,100%);max-height:calc(100dvh - 32px);overflow:auto;background:radial-gradient(circle at 100% 0%,rgb(246 201 218 / .35),transparent 40%),var(--cream);border-radius:22px;box-shadow:var(--shadow-pop);padding:clamp(20px,4vw,34px);animation:rise .32s var(--ease)}.dialog:focus-visible{box-shadow:var(--shadow-pop)}@keyframes rise{0%{opacity:0;transform:translateY(14px) scale(.98)}}.dialog-close{position:absolute;top:12px;right:12px;z-index:5}.dialog-head h2{font-family:var(--display);font-variation-settings:"SOFT" 100;font-weight:800;font-size:clamp(1.6rem,4vw,2.2rem);color:var(--lav-700);margin:2px 0 14px}.dialog-actions{display:flex;justify-content:flex-end;margin-top:18px}.field{display:flex;flex-direction:column;gap:6px;border:0;padding:0;margin:0 0 14px;min-width:0}.field>span,.field>legend{font-size:.82rem;font-weight:600;color:var(--lav-700);padding:0;margin-bottom:6px}.inline-add{display:flex;gap:6px;margin-top:8px}.file-slot{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;border:1.5px dashed var(--lav-300);border-radius:14px;padding:10px 14px;margin-bottom:16px;background:#f0e7f680;font-size:.92rem;transition:background .15s,border-color .15s}.file-slot.over{background:var(--lav-100);border-color:var(--lav-500)}.file-slot.has-file{border-style:solid;background:#f1f7ef;border-color:#b9d6b3}.file-chip{display:inline-flex;align-items:center;gap:6px;font-size:.85rem;word-break:break-all}.file-error{width:100%;margin:4px 0 0;color:var(--danger);font-size:.85rem}.search-row{display:flex;gap:8px}.results,.editions{list-style:none;padding:0;margin:12px 0;display:flex;flex-direction:column;gap:6px}.result,.edition{width:100%;display:flex;align-items:center;gap:14px;text-align:left;border:1px solid transparent;background:#ffffff8c;border-radius:12px;padding:8px;transition:background .15s,border-color .15s}.result:hover,.edition:hover{border-color:var(--lav-300);background:#fff}.result.skeleton{height:78px;background:linear-gradient(90deg,var(--lav-100),var(--lav-50),var(--lav-100));background-size:200% 100%;animation:shimmer 1.2s linear infinite}@keyframes shimmer{to{background-position:-200% 0}}.result-cover{flex:none;width:42px;height:62px;border-radius:2px 5px 5px 2px;overflow:hidden;background:var(--lav-100);box-shadow:1px 2px 6px #2e1f3d33}.edition .result-cover{width:48px;height:72px}.result-cover img{width:100%;height:100%;object-fit:cover}.no-cover{display:block;width:100%;height:100%;background:repeating-linear-gradient(135deg,var(--lav-100) 0 6px,var(--lav-200) 6px 7px)}.result-body,.edition>span:last-child{display:flex;flex-direction:column;gap:2px;min-width:0}.result-body strong{font-weight:600}.result-body>span{font-size:.85rem;color:var(--ink-soft)}.badges{display:flex;gap:4px;flex-wrap:wrap;margin-top:3px}.badge{font-size:.7rem;padding:2px 8px;border-radius:999px;background:var(--lav-100);color:var(--lav-700)}.badge.soft{background:transparent;border:1px solid var(--lav-200)}.badge.free{background:#e7f3e6;color:#3f6b45}.free-section{margin:14px 0 6px;padding:12px;border-radius:16px;background:#f3f9f1;border:1px dashed #b9d6b3}.free-section h3{font-family:var(--display);font-variation-settings:"SOFT" 100;font-size:1.15rem;color:var(--lav-700);margin:0}.free-item{display:flex;align-items:center;gap:14px;padding:8px;border-radius:12px;background:#ffffff8c}.free-item .result-body{flex:1}.free-item .btn{flex:none}.batch-list{list-style:none;margin:12px 0;padding:0;display:flex;flex-direction:column;gap:6px;max-height:50vh;overflow:auto}.batch-item{display:flex;gap:12px;align-items:flex-start;padding:10px 12px;border-radius:12px;background:#ffffff8c}.batch-icon{flex:none;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--lav-100);color:var(--lav-700);font-weight:700}.batch-item.added .batch-icon,.batch-item.attached .batch-icon{background:#e7f3e6;color:#3f6b45}.batch-item.failed .batch-icon{background:#fdf1f3;color:var(--danger)}.batch-main{display:flex;flex-direction:column;min-width:0}.batch-main strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge.link{display:inline-flex;align-items:center;gap:4px;margin:4px 0 0 64px;background:#eef6ec;color:#3f6b45;text-decoration:none}.confirm-grid{display:grid;grid-template-columns:180px 1fr;gap:24px;margin-top:10px}.confirm-cover{margin:0;display:flex;flex-direction:column;gap:6px;align-items:flex-start}.confirm-cover img,.confirm-cover .cloth-cover{width:180px;aspect-ratio:2 / 3;object-fit:cover;border-radius:3px 8px 8px 3px;box-shadow:4px 8px 20px #2e1f3d4d}.cloth-cover{display:grid;place-items:center;padding:16px;text-align:center;background:repeating-linear-gradient(0deg,rgb(255 255 255 / .04) 0 1px,transparent 1px 3px),var(--lav-600);color:var(--gold);font-family:var(--display);font-variation-settings:"SOFT" 100;font-weight:700;font-size:1.1rem;outline:1.5px solid rgb(232 199 122 / .6);outline-offset:-10px}.detail{display:grid;grid-template-columns:minmax(160px,240px) 1fr;gap:clamp(18px,4vw,36px)}.detail-cover{margin:0;display:flex;flex-direction:column;align-items:flex-start;gap:8px}.cover-3d{position:relative;width:100%;perspective:900px}.cover-3d .cover-large{position:absolute;inset:0 auto auto 0;opacity:0;transition:opacity .25s ease,transform .6s var(--ease)}.cover-3d .cover-large.in{opacity:1}.cover-3d img,.cover-3d .cloth-cover{width:100%;aspect-ratio:2 / 3;object-fit:cover;border-radius:3px 10px 10px 3px;transform:rotateY(-14deg) rotateX(2deg);transform-origin:left center;box-shadow:inset 6px 0 10px #0003,10px 18px 34px -6px #2e1f3d73;transition:transform .6s var(--ease)}.cover-3d:hover img{transform:rotateY(-6deg)}.detail-flower{position:absolute;top:-26px;right:18px;transform:rotate(12deg);filter:drop-shadow(0 2px 3px rgb(0 0 0 / .25))}.detail-title{font-family:var(--display);font-variation-settings:"SOFT" 100,"opsz" 96;font-weight:800;font-size:clamp(1.7rem,4.5vw,2.6rem);line-height:1;color:var(--lav-700);margin:0 36px 6px 0}.detail-author{font-style:italic;color:var(--ink-soft);margin:0 0 18px;display:flex;align-items:center;gap:4px;flex-wrap:wrap}.edit-meta{display:flex;flex-direction:column;gap:8px;margin:0 36px 18px 0;align-items:flex-start}.about-book{margin:0 0 16px}.about-book h3{font-family:var(--hand);font-weight:700;font-size:1.25rem;color:var(--lav-600);margin:0 0 4px}.about-text{margin:0 0 4px;font-size:.95rem;line-height:1.6;color:var(--ink);white-space:pre-line;display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden}.about-text.open{display:block}.about-loading{height:11.4em;margin:0;border-radius:10px;color:var(--ink-soft);font-style:italic;padding:6px 0;background:linear-gradient(90deg,var(--lav-100),var(--lav-50),var(--lav-100));background-size:200% 100%;animation:shimmer 1.2s linear infinite}.detail-read{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:16px;border-radius:16px;background:#f0e7f699;margin-bottom:16px}.detail-read .progress-line{max-width:260px}.detail-read .fine,.no-file p{margin:0}.annot-summary{margin:-6px 0 14px}.detail-body>.row{margin-bottom:16px}.detail-footer{border-top:1px solid var(--lav-200);padding-top:12px;margin-top:4px}.menu-wrap{position:relative}.menu{position:absolute;right:0;top:calc(100% + 6px);z-index:50;width:250px;background:var(--cream);border-radius:14px;box-shadow:var(--shadow-pop);padding:6px;display:flex;flex-direction:column}.menu button{text-align:left;border:0;background:none;padding:10px 12px;border-radius:10px;color:var(--lav-700)}.menu button:hover,.menu button:focus-visible{background:var(--lav-100)}.menu-note{margin:4px 12px 8px}.menu .menu-sound{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px dashed rgb(120 90 160 / .2);border-radius:10px 10px 0 0;margin-bottom:2px}.sound-panel{width:260px;gap:4px;padding:8px}.sound-panel .menu-sound{border-bottom:0;border-radius:10px}.sound-panel .menu-sound>span:first-child{display:flex;flex-direction:column;gap:1px}.volume-row{display:flex;align-items:center;gap:8px;padding:6px 12px 4px;color:var(--lav-600)}.volume-row input{flex:1;accent-color:var(--lav-600)}.volume-row.disabled{opacity:.4}.sound-test{align-self:flex-start;margin:0 12px 4px;font-size:.82rem}.icon-btn.muted{color:#a596b4}@media(max-width:640px){.sound-wrap{position:static}}.toggle{position:relative;width:38px;height:22px;border-radius:999px;background:#785aa040;transition:background .2s;flex:none}.toggle>span{position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #00000040;transition:transform .2s var(--ease)}.toggle.on{background:var(--lav-600)}.toggle.on>span{transform:translate(16px)}@media(max-width:640px){.header-actions{position:relative}.menu-wrap{position:static}.menu{left:0;right:auto;width:min(300px,calc(100vw - 32px))}}@media(max-width:640px){.dialog{padding:22px 16px;border-radius:20px}.detail,.confirm-grid{grid-template-columns:1fr}.detail-cover,.confirm-cover{align-items:center}.cover-3d{width:160px}.confirm-cover img,.confirm-cover .cloth-cover{width:140px}.scrim{padding:8px}}.search-modes{margin:8px 0 4px}.open-section{margin:14px 0 10px;padding:12px;border-radius:16px;background:#f6f2fb}.open-head h3,.section-label{margin:0 0 6px;font-family:var(--display);font-size:1rem;color:var(--lav-700)}.section-label{margin-top:14px}.source-status{list-style:none;display:flex;flex-wrap:wrap;gap:4px 12px;margin:0 0 10px;padding:0;font-size:.74rem;color:var(--lav-600)}.source-status .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--gold);margin-right:3px}.source-status .src-loading .dot{animation:pulse 1s infinite}.source-status .src-ok .dot{background:#7fb48a}.source-status .src-unavailable{color:#9a7a8a}.source-status .src-unavailable .dot{background:#d9a3b4}.src-why{font-style:italic}.open-results,.open-editions{list-style:none;margin:0;padding:0;display:grid;gap:8px}.open-editions{margin:6px 0 0 18px}.open-group{padding:10px;border-radius:14px;background:var(--cream);box-shadow:0 1px 4px #2e1f3d14}.open-card{display:flex;gap:12px;align-items:flex-start}.open-card.compact .result-cover{width:34px;height:50px}.open-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.open-body strong{line-height:1.25}.open-note{margin-top:3px}.open-actions{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none}.open-actions .btn:disabled{opacity:.4;cursor:not-allowed}.link-btn.small{font-size:.78rem;display:inline-flex;align-items:center;gap:3px}.editions-toggle{margin:6px 0 0 54px;font-size:.8rem}.badge.access-full{background:#e3f2e2;color:#2f6b3a;font-weight:600}.badge.access-preview{background:#fdf1dc;color:#8a5a12}.badge.access-borrow,.badge.access-restricted{background:#f9e3ea;color:#9a3354}.badge.access-metadata{background:#eee9f3;color:#6b5a7d}@media(max-width:560px){.open-card{flex-wrap:wrap}.open-actions{flex-direction:row;flex-wrap:wrap;align-items:center;width:100%;padding-left:54px}}.fetch-flow{display:grid;gap:14px}.fetch-book{display:flex;gap:14px;align-items:center}.result-cover.big{width:74px;height:108px}.fetch-book p{margin:2px 0}.fetch-progress .bar{height:10px;border-radius:999px;background:var(--lav-100);overflow:hidden}.fetch-progress .bar span{display:block;height:100%;background:linear-gradient(90deg,var(--lav-500, #9b7fc8),#e79ab8);border-radius:inherit;transition:width .2s linear}.fetch-progress .bar.indeterminate span{width:35%!important;animation:bar-slide 1.1s ease-in-out infinite}@keyframes bar-slide{0%{transform:translate(-100%)}to{transform:translate(300%)}}.upload-zone{display:grid;justify-items:center;gap:10px;padding:22px 16px;text-align:center;border:2px dashed var(--lav-300, #d9c8f0);border-radius:18px;background:#faf7fd;transition:background .15s,border-color .15s}.upload-zone.over{background:var(--lav-100);border-color:var(--lav-500, #9b7fc8)}.upload-big{font-size:1.05rem;padding:12px 22px}.confirm-upload .mismatch{color:#9a3354;font-size:.85rem}.diary-scene{position:fixed;top:0;right:0;bottom:0;left:0;z-index:150;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:max(20px,env(safe-area-inset-top)) 16px max(20px,env(safe-area-inset-bottom));background:radial-gradient(circle at 30% 20%,rgb(246 201 218 / .9),transparent 50%),radial-gradient(circle at 80% 80%,rgb(200 180 230 / .9),transparent 55%),var(--lav-100);overflow:hidden;touch-action:none}.diary-scene.phase-gone{opacity:0;transition:opacity .65s var(--ease) .08s;pointer-events:none}.phase-gone .diary{transform:translate(calc(var(--dw) * .5)) scale(1.22);transition:transform .7s var(--ease)}@media(max-width:700px){.phase-gone .diary{transform:scale(1.22)}}.diary-sparkles span{position:absolute;width:6px;height:6px;background:#fff;clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%);animation:twinkle 2.8s ease-in-out infinite;opacity:.8}@keyframes twinkle{50%{transform:scale(1.8) rotate(45deg);opacity:.25}}.diary-butterfly{position:absolute;width:46px;color:var(--lav-400);animation:flutter 6s ease-in-out infinite}.diary-butterfly.b1{top:12%;left:10%}.diary-butterfly.b2{bottom:14%;right:12%;width:34px;color:var(--pink-400);animation-delay:-2s}@keyframes flutter{25%{transform:translate(10px,-14px) rotate(8deg) scaleX(.85)}50%{transform:translate(-6px,-24px) rotate(-6deg)}75%{transform:translate(-12px,-8px) rotate(4deg) scaleX(.9)}}.diary{--dw: min(450px, 80vw, 64dvh);position:relative;width:var(--dw);aspect-ratio:3 / 4;flex:none;transition:width .6s var(--ease),transform .6s var(--ease)}.phase-pin .diary{--dw: min(270px, 58vw, 32dvh)}.phase-open .diary,.phase-turning .diary{transform:translate(calc(var(--dw) * .5))}@media(max-width:700px){.phase-open .diary,.phase-turning .diary{transform:none}}.diary-under,.diary-page,.diary-cover{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:6px 18px 18px 6px}.diary-under{background:repeating-linear-gradient(180deg,transparent 0 27px,rgb(169 139 208 / .22) 27px 28px),var(--ivory);box-shadow:var(--shadow-pop)}.diary-under-flower{position:absolute;left:50%;top:40%;transform:translate(-50%,-50%) rotate(-12deg);opacity:.8}.diary-page{transform-origin:left center;transform-style:preserve-3d;transform:perspective(1600px) rotateY(0);will-change:transform;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.diary-page:active{cursor:grabbing}.diary-page-front,.diary-page-back{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;backface-visibility:hidden;-webkit-backface-visibility:hidden}.diary-page-front{background:linear-gradient(90deg,rgb(0 0 0 / .07),transparent 9%),repeating-linear-gradient(180deg,transparent 0 27px,rgb(169 139 208 / .25) 27px 28px),var(--ivory);box-shadow:inset 10px 0 18px -8px #00000026;display:flex;flex-direction:column;justify-content:center;padding:26px 24px 26px 26px;overflow:hidden}.diary-page-back{transform:rotateY(180deg);background:repeating-linear-gradient(180deg,transparent 0 27px,rgb(169 139 208 / .18) 27px 28px),#f5ecdd}.diary-hello{font-family:var(--hand);font-size:clamp(1.6rem,6vw,2rem);color:var(--rose-600);margin:0 0 6px}.diary-quote{font-family:var(--display);font-variation-settings:"SOFT" 100;font-style:italic;font-size:clamp(1.05rem,4.2vw,1.25rem);line-height:1.25;color:var(--lav-700);margin:0}.diary-by{font-family:var(--hand);font-size:1.15rem;color:var(--ink-soft);margin:6px 0 0}.swipe-hint{display:flex;align-items:center;gap:10px;margin-top:22px;font-family:var(--hand);font-size:1.2rem;color:var(--lav-500)}.swipe-hand{width:30px;height:18px;border-radius:99px;background:linear-gradient(90deg,transparent,rgb(169 139 208 / .6));position:relative;animation:swipe-nudge 2.2s var(--ease) infinite}.swipe-hand:after{content:"";position:absolute;right:-2px;top:3px;width:12px;height:12px;border-radius:50%;background:var(--lav-500);box-shadow:0 0 0 4px #a98bd040}@keyframes swipe-nudge{0%,20%{transform:translate(14px);opacity:0}40%{opacity:1}80%,to{transform:translate(-16px);opacity:0}}.diary-turn{position:absolute;right:16px;bottom:56px;width:40px;height:40px;border-radius:50%;border:0;background:#c8b4e659;color:var(--lav-700);display:grid;place-items:center;transition:background .2s}.diary-turn:hover{background:#c8b4e699}.diary-pressed{position:absolute;left:22px;bottom:12px;transform:rotate(-14deg);opacity:.9}.page-curl{position:absolute;right:0;bottom:0;width:46px;height:46px;border-radius:0 0 18px;background:linear-gradient(315deg,var(--lav-50) 0 45%,#e9dcc6 50%,var(--ivory) 70%);box-shadow:-3px -3px 8px #00000014;animation:curl 2.6s ease-in-out infinite;transform-origin:100% 100%}@keyframes curl{50%{transform:scale(1.25)}}.diary-cover{transform-origin:left center;transform-style:preserve-3d;transform:perspective(1800px) rotateY(0);transition:transform 1.15s cubic-bezier(.6,.05,.25,1);box-shadow:inset 14px 0 18px -10px #00000059,var(--shadow-pop);overflow:visible}.diary-art{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border-radius:6px 18px 18px 6px;backface-visibility:hidden}.diary-cover:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background-image:radial-gradient(circle,rgb(255 255 255 / .9) .6px,transparent 1.2px),radial-gradient(circle,rgb(255 236 180 / .8) .5px,transparent 1px);background-size:23px 19px,31px 27px;background-position:0 0,11px 7px;opacity:.5;pointer-events:none;backface-visibility:hidden}.phase-open .diary-cover,.phase-turning .diary-cover,.phase-gone .diary-cover{transform:perspective(1800px) rotateY(-172deg);pointer-events:none}.diary-cover-back{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:18px 6px 6px 18px;transform:rotateY(180deg);backface-visibility:hidden;-webkit-backface-visibility:hidden;background:radial-gradient(circle at 12px 12px,#e7a9c6 3px,transparent 3.6px) 0 0 / 34px 34px,radial-gradient(circle at 29px 29px,#b29ad6 2.6px,transparent 3.2px) 0 0 / 34px 34px,radial-gradient(circle at 29px 12px,rgb(147 168 117 / .6) 1.6px,transparent 2px) 0 0 / 34px 34px,#f4e9f6;box-shadow:inset -12px 0 18px -10px #0003;display:grid;place-items:center}.bookplate{background:var(--ivory);border:1.5px solid #d9b46a;outline:1px solid #d9b46a;outline-offset:3px;border-radius:10px;padding:14px 22px;text-align:center;box-shadow:0 6px 14px -8px #5a3d7880}.bookplate span{display:block;font-family:var(--hand);color:var(--lav-600);font-size:1rem}.bookplate strong{font-family:"Pinyon Script",var(--hand);font-weight:400;font-size:1.9rem;color:var(--lav-700)}.diary-cover-title{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center;backface-visibility:hidden;pointer-events:none}.diary-kicker{font-family:var(--hand);color:#6a3f8a;font-size:clamp(.85rem,3vw,1.05rem);margin:0}.diary-name{font-family:"Great Vibes","Pinyon Script",var(--hand);font-weight:400;font-size:calc(var(--dw) * .105);color:#fbe9b3;text-shadow:0 1px 0 #b8892f,0 2px 2px rgb(90 50 120 / .45),0 0 14px rgb(255 236 180 / .45);margin:0;line-height:1.1}.diary-ribbon{position:absolute;bottom:-26px;left:30%;width:12px;height:40px;background:linear-gradient(90deg,#5d3f8a,#7d5aae 50%,#5d3f8a);clip-path:polygon(0 0,100% 0,100% 100%,50% 80%,0 100%);backface-visibility:hidden}.diary-strap{position:absolute;right:-8px;top:50%;transform:translateY(-50%);width:70px;height:46px;border-radius:10px 4px 4px 10px;background:linear-gradient(180deg,#b480d6,#8e5cb8);box-shadow:0 3px 8px #0000004d,inset 0 0 0 1.5px #e8c77ab3;display:grid;place-items:center;backface-visibility:hidden}.lock-bubble{position:absolute;bottom:calc(100% + 14px);right:-6px;padding:8px 14px 9px;border-radius:16px;background:#fffaf3;border:1.5px solid #e6c47c;box-shadow:0 8px 20px -8px #2e1f3d8c;font-family:var(--hand);font-size:clamp(1rem,2.4vw,1.25rem);line-height:1.1;color:var(--lav-700);white-space:nowrap;pointer-events:none;transform-origin:calc(100% - 30px) calc(100% + 10px);animation:bubble-pop .5s cubic-bezier(.3,1.6,.5,1) .9s both,bubble-bob 2.4s ease-in-out 1.4s infinite}.lock-bubble:after{content:"";position:absolute;top:100%;right:26px;width:12px;height:12px;margin-top:-6px;background:#fffaf3;border-right:1.5px solid #e6c47c;border-bottom:1.5px solid #e6c47c;transform:rotate(45deg)}@keyframes bubble-pop{0%{opacity:0;transform:scale(.4) translateY(10px)}}@keyframes bubble-bob{50%{transform:translateY(-5px)}}@media(prefers-reduced-motion:reduce){.lock-bubble{animation:none}}.diary-lock{width:52px;height:56px;border:0;background:none;padding:0;border-radius:12px;animation:lock-nudge 2.4s ease-in-out infinite}.diary-lock:disabled{cursor:default;animation:none}.diary-lock svg{width:100%;height:100%;filter:drop-shadow(0 2px 2px rgb(0 0 0 / .35))}.diary-lock .shackle{transition:transform .5s var(--ease)}.phase-unlocking .diary-lock .shackle,.phase-open .diary-lock .shackle{transform:translateY(-7px)}.phase-unlocking .diary-lock{animation:lock-pop .6s var(--ease)}@keyframes lock-pop{40%{transform:scale(1.18) rotate(-6deg)}}@keyframes lock-nudge{0%,80%,to{transform:rotate(0)}85%{transform:rotate(-8deg)}90%{transform:rotate(8deg)}95%{transform:rotate(-4deg)}}.diary-below{position:relative;width:min(380px,100%);min-height:2em;display:flex;justify-content:center}.diary-hint{font-family:var(--hand);font-size:1.3rem;color:var(--lav-700);margin:0;animation:rise .6s var(--ease) both .4s}.pin-panel{width:100%;animation:rise .55s var(--ease) both}.pin-card{text-align:center;background:#fffaf3e0;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:22px;padding:16px 16px 14px;box-shadow:var(--shadow-soft)}.pin-card .field{text-align:left}.pin-note{background:var(--lav-100);border-radius:12px;padding:8px 12px;font-size:.9rem;margin:0 0 12px}.pinpad{display:flex;flex-direction:column;align-items:center}.pin-label{font-family:var(--hand);font-size:1.4rem;color:var(--lav-600);margin:0 0 10px}.pin-dots{display:flex;gap:12px}.pin-dots span{width:15px;height:15px;border-radius:50%;border:2px solid var(--lav-400);transition:background .15s,transform .15s}.pin-dots span.filled{background:radial-gradient(circle at 35% 35%,#fff 0 15%,var(--pink-400) 45%,var(--lav-500));border-color:var(--lav-500);transform:scale(1.12)}.pin-dots.shake{animation:pin-shake .42s}@keyframes pin-shake{20%,60%{transform:translate(-8px)}40%,80%{transform:translate(8px)}}.pin-error{min-height:1.3em;margin:6px 0 4px;color:var(--danger);font-size:.86rem}.pin-keys{display:grid;grid-template-columns:repeat(3,60px);gap:8px 14px}.pin-keys button{height:52px;border-radius:50%;border:1.5px solid var(--lav-200);background:radial-gradient(circle at 50% 20%,rgb(255 255 255 / .95),transparent 70%),var(--cream);font-family:var(--display);font-variation-settings:"SOFT" 100;font-size:1.35rem;font-weight:650;color:var(--lav-700);box-shadow:0 4px 10px -6px #5a3d7880;transition:transform .1s,background .15s;display:grid;place-items:center;touch-action:manipulation}.pin-keys button:hover:not(:disabled){background:var(--lav-100)}.pin-keys button:active:not(:disabled){transform:scale(.92)}.pin-forgot{display:flex;flex-direction:column;gap:12px;align-items:center}.pin-forgot p{margin:0}.pin-links{margin-top:10px;display:flex;flex-wrap:wrap;justify-content:center;gap:2px 14px}.link-btn.quiet{color:var(--ink-soft);font-size:.8rem}.pin-dialog{width:min(380px,100%)}@media(max-height:700px){.pin-keys button{height:44px}.pin-keys{grid-template-columns:repeat(3,54px)}}.app>.site-header,.app>main,.app>.site-footer{position:relative;z-index:1}.app>.site-header{z-index:3}.butterflies{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0}.diary-scene .butterflies.behind{position:absolute}.diary-scene .diary,.diary-scene .diary-below{z-index:1}.butterfly{position:absolute;left:0;top:0;padding:0;border:0;background:none;pointer-events:auto;cursor:pointer;will-change:transform;filter:drop-shadow(0 3px 4px rgb(90 61 120 / .25));-webkit-tap-highlight-color:transparent;touch-action:manipulation}.butterfly svg{width:100%;height:100%;overflow:visible}.butterfly .wing{transform-box:fill-box;animation:flap var(--flap, .28s) ease-in-out infinite alternate}.butterfly .wing.left{transform-origin:right center}.butterfly .wing.right{transform-origin:left center}@keyframes flap{to{transform:scaleX(.25)}}.butterfly.startled .wing{animation-duration:.09s}.butterfly.startled svg{animation:startle .6s var(--ease)}@keyframes startle{30%{transform:scale(1.35) rotate(-12deg)}}.flowerbed{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:2}.flower{position:absolute;padding:0;border:0;background:none;pointer-events:auto;cursor:pointer;transform-origin:50% 100%;transform:rotate(var(--tilt));animation:sway var(--sway, 4s) ease-in-out infinite alternate;-webkit-tap-highlight-color:transparent;touch-action:manipulation;filter:drop-shadow(0 2px 3px rgb(90 61 120 / .2))}.flower svg{display:block}@keyframes sway{0%{transform:rotate(calc(var(--tilt) - 5deg))}to{transform:rotate(calc(var(--tilt) + 5deg))}}.flower.popped svg{animation:bloom-pop .55s var(--ease);transform-origin:50% 100%}@keyframes bloom-pop{35%{transform:scale(1.25)}65%{transform:scale(.95)}}.petal{position:fixed;width:9px;height:12px;border-radius:60% 60% 60% 0;z-index:310;pointer-events:none;margin:-6px 0 0 -5px}@media(max-width:700px){.flowerbed .flower:nth-child(4n+2){display:none}}@media(prefers-reduced-motion:reduce){.diary-cover,.diary{transition:none}.flower,.butterfly .wing{animation:none}}@media(max-width:700px),(max-height:760px){.diary-scene.phase-pin{justify-content:flex-start;overflow-y:auto;-webkit-overflow-scrolling:touch;gap:12px;padding-bottom:calc(env(safe-area-inset-bottom) + 96px)}.phase-pin .diary{--dw: min(200px, 46vw, 24dvh)}.phase-pin .pin-card{padding:12px 12px 10px}.phase-pin .pin-label{font-size:1.25rem;margin-bottom:6px}.phase-pin .pin-keys{grid-template-columns:repeat(3,56px);gap:6px 14px}.phase-pin .pin-keys button{height:46px}.phase-pin .diary-below{position:relative;z-index:3}.phase-pin .diary-strap{transform:translateY(-50%) scale(.68);transform-origin:right center}}.reader{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;grid-template-rows:auto 1fr auto;grid-template-columns:minmax(0,1fr);background:radial-gradient(ellipse at 50% 40%,transparent 40%,rgb(90 61 120 / .12)),#ece4ef;color:var(--ink);overflow:hidden}.reader-loading{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-family:var(--hand);font-size:1.5rem;color:var(--lav-600);background:#ece4ef}.reader-loading.inline{position:absolute;background:transparent;z-index:1;pointer-events:none}.reader-missing{place-items:center;grid-template-rows:1fr;padding:16px}.reader-bar{display:flex;align-items:center;gap:8px;padding:max(8px,env(safe-area-inset-top)) 12px 8px;z-index:20;transition:opacity .35s var(--ease),transform .35s var(--ease)}.chrome-off .reader-bar{opacity:0;transform:translateY(-6px)}.chrome-off .reader-bar:focus-within,.chrome-off .reader-bar:hover{opacity:1;transform:none}.reader-title{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;text-align:center}@media(min-width:641px){.reader-bar{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,auto) minmax(0,1fr)}.reader-bar>.icon-btn{justify-self:start}.reader-title{max-width:34vw}.reader-tools{justify-self:end}}.reader-title strong{font-family:var(--display);font-variation-settings:"SOFT" 100;font-weight:700;color:var(--lav-700);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.reader-tools{display:flex;gap:4px}.tool-btn{display:inline-flex;flex-direction:column;align-items:center;gap:2px;min-width:68px;padding:6px 8px 5px;border:0;border-radius:14px;background:#fffaf3bf;color:var(--lav-700);font-size:.72rem;font-weight:600;box-shadow:0 1px #fff9 inset,0 3px 10px -6px #5a3d7880;transition:background .15s,transform .15s}.tool-btn:hover{background:var(--cream);transform:translateY(-1px)}.tool-btn.on{background:var(--lav-700);color:var(--cream)}@media(max-width:640px){.tool-btn{min-width:52px;padding:5px 4px 4px;font-size:.64rem}.reader-title strong{font-size:.9rem}}.sticky-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;pointer-events:none}.sticky-layer.placing{pointer-events:auto;cursor:copy;background:#c8b4e61f;outline:2px dashed var(--lav-400);outline-offset:-6px}.placing-hint{position:absolute;left:50%;top:14px;transform:translate(-50%);margin:0;padding:6px 14px;border-radius:999px;background:var(--plum-900);color:var(--cream);font-size:.85rem;white-space:nowrap;animation:rise .3s var(--ease) both}.page-sticky{position:absolute;width:40px;height:40px;padding:0;border:0;pointer-events:auto;display:grid;place-items:center;transform:rotate(var(--tilt, -4deg));box-shadow:0 1px 1px #00000014,0 6px 12px -6px #2e1f3d73;cursor:grab;touch-action:none;animation:note-stick .35s var(--ease)}.page-sticky:before{content:"";position:absolute;top:-6px;left:50%;width:22px;height:10px;transform:translate(-50%) rotate(-4deg);background:#fff9}.page-sticky:active{cursor:grabbing}.page-sticky-dot{width:8px;height:8px;border-radius:50%;background:#5a3d7866}.page-sticky-preview{position:absolute;left:46px;top:-4px;width:200px;padding:10px 12px;font-family:var(--hand);font-size:1.1rem;line-height:1.15;text-align:left;color:#3d2b3a;background:inherit;box-shadow:0 8px 18px -8px #2e1f3d73;opacity:0;transform:translateY(4px) rotate(2deg);pointer-events:none;transition:opacity .2s,transform .2s var(--ease);white-space:pre-wrap;z-index:2}.page-sticky:hover .page-sticky-preview,.page-sticky:focus-visible .page-sticky-preview{opacity:1;transform:none}@keyframes note-stick{0%{transform:scale(1.4) rotate(12deg);opacity:0}}.pop-wrap{position:relative}.popover{position:absolute;right:0;top:calc(100% + 8px);z-index:40;background:var(--cream);border-radius:16px;box-shadow:var(--shadow-pop);padding:12px;animation:rise .2s var(--ease)}.flower-picker{display:flex;gap:4px}.flower-picker button{border:0;background:none;border-radius:12px;padding:6px 8px;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:.72rem;color:var(--lav-700);width:86px}.flower-picker button:hover,.flower-picker button.on{background:var(--lav-100)}.type-panel{width:270px;display:flex;flex-direction:column;gap:10px}.type-panel input[type=range]{accent-color:var(--lav-600);width:100%}.type-panel .row{justify-content:space-between}.zoom-val{font-weight:600;color:var(--lav-700)}.type-panel .fine{margin:0}.font-serif{font-family:Literata,serif}.font-classic{font-family:Georgia,serif}.font-sans{font-family:system-ui,sans-serif}.reader-body{position:relative;min-height:0;display:grid;grid-template-columns:56px minmax(0,1fr) auto 56px;grid-template-areas:"prev stage notes next";align-items:stretch;padding:4px 0 10px}.reader-stage{grid-area:stage;position:relative;min-height:0;min-width:0}.turn{align-self:center;border:0;background:transparent;color:var(--lav-600);width:46px;height:46px;margin:0 auto;border-radius:50%;display:grid;place-items:center;transition:background .2s,opacity .3s}.turn.prev{grid-area:prev}.turn.next{grid-area:next}.turn:hover:not(:disabled){background:#fffaf3b3}.turn:disabled{opacity:.2}.chrome-off .turn:not(:focus-visible){opacity:.25}.paper{background-color:var(--paper);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .45 0 0 0 0 .35 0 0 0 0 .25 0 0 0 .07 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"),radial-gradient(ellipse at 50% 50%,transparent 60%,rgb(160 120 80 / .08))}.epub-paper{position:relative;height:100%;max-width:700px;margin:0 auto;border-radius:3px 10px 10px 3px;padding:clamp(24px,5vh,52px) clamp(20px,5vw,56px);box-shadow:inset 12px 0 18px -14px #5a3c1e4d,0 1px 2px #2e1f3d1a,0 18px 40px -16px #2e1f3d59}.epub-host{width:100%;height:100%}.epub-curl{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;pointer-events:none;border-radius:inherit;overflow:hidden}.epub-curl-flat{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;border-radius:inherit}.epub-curl-shade,.epub-curl-cast,.epub-curl-flap{position:absolute;top:0;bottom:0}.epub-curl-flap{box-shadow:0 0 18px #3c28461f}.epub-host svg{mix-blend-mode:multiply}.epub-hl,.epub-hl-note{cursor:pointer}.epub-hl-note rect{stroke:var(--lav-600);stroke-width:0}.pdf-stage{height:100%;overflow:auto;display:flex;padding:16px;touch-action:pan-x pan-y pinch-zoom}.pdf-page-wrap{position:relative;margin:auto;flex:none}.pdf-page{position:relative;background:#fff;box-shadow:0 0 0 10px var(--paper),0 0 0 11px #a0785026,0 20px 44px -14px #2e1f3d66;border-radius:1px}.pdf-page canvas{display:block}.hl-layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.pdf-hl{position:absolute;background:var(--hl);mix-blend-mode:multiply;border-radius:3px;opacity:.78;overflow:hidden}.pdf-hl.has-note{box-shadow:inset 0 -2px 0 var(--lav-600)}.glitter:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(circle,rgb(255 255 255 / .95) .7px,transparent 1.3px),radial-gradient(circle,rgb(255 248 214 / .9) .5px,transparent 1px);background-size:17px 11px,23px 9px;background-position:0 1px,8px 4px;mix-blend-mode:screen;animation:sparkle-in 1.4s ease-out}@keyframes sparkle-in{0%{opacity:0;background-position:-20px 1px,30px 4px}}.page-bookmark{position:absolute;top:0;right:0;width:54px;height:54px;padding:0;border:0;background:none;z-index:7;cursor:pointer;-webkit-tap-highlight-color:transparent}.dog-ear{position:absolute;top:0;right:0;width:26px;height:26px;background:linear-gradient(225deg,var(--lav-50) 0 48%,#e7dccb 50%,#f6efe2 72%);box-shadow:-2px 2px 5px #0000001f;border-bottom-left-radius:4px;transition:width .25s var(--ease),height .25s var(--ease)}.page-bookmark:hover .dog-ear,.page-bookmark:focus-visible .dog-ear{width:38px;height:38px}.page-bookmark.on{width:60px;height:40px;overflow:visible}.flower-bookmark{position:absolute;top:-22px;right:30px;transform:rotate(7deg);filter:drop-shadow(0 3px 3px rgb(46 31 61 / .3));animation:drop-in .5s var(--ease);transition:transform .2s}.page-bookmark.on:hover .flower-bookmark{transform:rotate(0) translateY(-3px)}.pdf-page-wrap{perspective:2000px}.flip-sheet{position:absolute;top:0;left:0;display:none;z-index:6;pointer-events:none}.pdf-page{will-change:transform}.pdf-stage{touch-action:pan-y pinch-zoom;cursor:grab}.pdf-stage:active{cursor:grabbing}.pdf-stage .textLayer{cursor:text}.textLayer.turning,.textLayer.turning span{user-select:none;-webkit-user-select:none}.pdf-stage.pannable{touch-action:pan-x pan-y pinch-zoom;cursor:auto}.epub-paper{touch-action:pan-y pinch-zoom;cursor:grab}.epub-host{will-change:transform,opacity}@keyframes drop-in{0%{transform:translateY(-16px) rotate(-4deg);opacity:0}}.scan-note{position:absolute;left:50%;bottom:18px;transform:translate(-50%);width:min(420px,calc(100% - 32px));background:#fffaf3f2;border-radius:12px;box-shadow:var(--shadow-soft);padding:8px 14px;font-size:.82rem;margin:0;text-align:center}.page-turn{animation:page-in .28s var(--ease)}@keyframes page-in{0%{opacity:.4;transform:translate(6px)}}.reader-foot{padding:0 clamp(16px,8vw,120px) max(10px,env(safe-area-inset-bottom))}.reader-foot .progress-line{height:3px;background:#c8b4e680}.margin-notes{grid-area:notes;width:210px;padding:8px 4px 8px 12px;display:flex;flex-direction:column;gap:16px;overflow:auto}.sticky{position:relative;border:0;text-align:left;padding:20px 14px 14px;font-family:var(--hand);font-size:1.15rem;line-height:1.15;color:#3d2b3a;transform:rotate(var(--tilt, -2deg));box-shadow:0 1px 1px #00000014,0 10px 16px -8px #2e1f3d59;display:flex;flex-direction:column;gap:6px;transition:transform .2s var(--ease);flex:none}.sticky:hover{transform:rotate(0) translateY(-2px)}.sticky:before{content:"";position:absolute;top:-8px;left:50%;width:58px;height:18px;transform:translate(-50%) rotate(-3deg);background:#ffffff8c;box-shadow:0 1px 2px #00000014}.sticky-lilac{background:#e6dbf7}.sticky-pink{background:#fbd6e4}.sticky-cream{background:#fbf0cc}.sticky-sticker{position:absolute;top:-12px;right:-8px;transform:rotate(10deg)}.sticky-sticker.big{top:-18px;right:-12px}.sticky-quote{font-family:var(--read);font-size:.72rem;font-style:italic;color:var(--ink-soft)}.sticky-text{display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden;white-space:pre-wrap}.floating-bar{position:fixed;z-index:60;display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:999px;background:var(--plum-900);color:var(--cream);box-shadow:var(--shadow-pop);animation:fade-in .15s ease}.floating-bar.above{transform:translate(-50%,-100%)}.floating-bar.below{transform:translate(-50%)}.swatch{width:28px;height:28px;border-radius:50%;border:2px solid rgb(255 255 255 / .85);background-image:radial-gradient(circle,#fff .8px,transparent 1.4px);background-size:7px 7px;flex:none}.swatch.on{outline:2px solid var(--gold);outline-offset:2px}.bar-btn{border:0;background:#ffffff1a;color:var(--cream);border-radius:999px;padding:6px 12px;font-size:.82rem;display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.bar-btn:hover{background:#fff3}.notes-panel{position:fixed;right:0;top:0;bottom:0;width:min(380px,100vw);z-index:45;background:var(--cream);box-shadow:var(--shadow-pop);display:flex;flex-direction:column;padding:16px;gap:12px;animation:slide-in .3s var(--ease)}@keyframes slide-in{0%{transform:translate(30px);opacity:0}}.notes-panel header{display:flex;align-items:center;justify-content:space-between}.notes-panel h2{font-family:var(--display);font-variation-settings:"SOFT" 100;font-size:1.3rem;color:var(--lav-700);margin:0}.notes-list{list-style:none;margin:0;padding:0;overflow:auto;display:flex;flex-direction:column;gap:6px}.note-item{display:flex;align-items:flex-start;gap:4px;border-radius:12px;background:#f0e7f673}.note-go{flex:1;min-width:0;display:flex;gap:10px;border:0;background:none;text-align:left;padding:10px;border-radius:12px}.note-go:hover{background:var(--lav-100)}.note-icon{flex:none;width:22px;display:flex;justify-content:center;padding-top:2px}.mini-swatch{width:16px;height:16px;border-radius:4px}.mini-sticky{width:16px;height:16px;transform:rotate(-6deg);box-shadow:0 2px 3px #00000026}.note-main{display:flex;flex-direction:column;gap:3px;min-width:0}.note-quote{font-style:italic;font-size:.88rem;color:var(--ink)}.note-text{font-family:var(--hand);font-size:1.15rem;color:var(--lav-700);white-space:pre-wrap}.note-actions{display:flex;padding:6px 4px 0 0}.notes-empty{text-align:center;color:var(--ink-soft);padding:30px 12px}.note-editor{position:relative;width:min(360px,100%);padding:26px 20px 16px;box-shadow:var(--shadow-pop);transform:rotate(-1deg)}.note-editor.pop-in{animation:note-pop .32s var(--ease)}@keyframes note-pop{0%{transform:rotate(-6deg) scale(.9);opacity:0}}.note-editor:before{content:"";position:absolute;top:-10px;left:50%;width:80px;height:22px;transform:translate(-50%) rotate(-2deg);background:#ffffff8c}.note-editor .note-quote{margin:0 0 8px;font-size:.82rem;color:var(--ink-soft)}.note-editor textarea{width:100%;border:0;resize:vertical;background:repeating-linear-gradient(180deg,transparent 0 29px,rgb(90 61 120 / .15) 29px 30px);font-family:var(--hand);font-size:1.45rem;line-height:30px;color:#3d2b3a;outline:none;min-height:150px}.note-options{display:flex;flex-direction:column;gap:10px;margin:10px 0 12px}.note-color{width:26px;height:26px;border-radius:6px;border:2px solid rgb(255 255 255 / .9);box-shadow:0 1px 3px #0003}.note-color.on,.sticker-btn.on{outline:2px solid var(--lav-600);outline-offset:2px}.stickers{gap:4px}.sticker-btn{width:34px;height:34px;border-radius:10px;border:0;background:#ffffff80;display:grid;place-items:center;color:var(--ink-soft)}.note-buttons{display:flex;align-items:center;gap:8px}@media(max-width:900px){.reader-body{grid-template-columns:0 minmax(0,1fr) 0;grid-template-rows:minmax(0,1fr) auto;grid-template-areas:"prev stage next" ". notes .";padding:0 8px 6px}.turn{display:none}.margin-notes{width:auto;flex-direction:row;overflow-x:auto;overflow-y:visible;padding:14px 4px 6px;gap:12px}.sticky{width:150px;max-height:92px;font-size:1rem;padding:14px 10px 8px}.sticky .sticky-quote{display:none}.sticky-text{-webkit-line-clamp:3}.epub-paper{padding:22px 18px;border-radius:3px 8px 8px 3px}.pdf-stage{padding:12px 6px}.notes-panel{top:auto;height:min(75dvh,600px);width:100%;border-radius:20px 20px 0 0;animation-name:sheet-in}.flower-bookmark{right:18px}}@keyframes sheet-in{0%{transform:translateY(30px);opacity:0}}.tool-btn{position:relative}.pen-dot{position:absolute;top:6px;right:10px;width:10px;height:10px;border-radius:50%;box-shadow:0 0 0 2px #fff}.pen-panel{display:grid;gap:10px;width:230px}.pen-swatches{gap:8px;flex-wrap:wrap}.pen-panel .swatch{width:34px;height:34px}.eraser-btn{justify-content:center;color:var(--lav-700, #4a3463);font-weight:600;border:1.5px dashed var(--lav-500, #9b7fc8);border-radius:999px;padding:8px 12px}.eraser-btn.on{background:var(--lav-100, #f1eafb)}.reader.erasing .pdf-stage,.reader.erasing .epub-host{cursor:cell}.reader.erasing .pdf-hl{outline:1.5px dashed rgb(200 35 74 / .6);outline-offset:1px}.tools-fab,.foot-label{display:none}@media(max-width:640px){.reader{grid-template-rows:minmax(0,1fr) auto;background:#fff}.reader-bar{position:absolute;inset:0 0 auto 0;padding:max(10px,env(safe-area-inset-top)) 10px 0;pointer-events:none;justify-content:space-between}.chrome-off .reader-bar{transform:none}.reader-bar>*{pointer-events:auto}.reader-bar>.icon-btn{width:40px;height:40px;background:#fffaf3e6;box-shadow:0 2px 10px -3px #2e1f3d73}.reader-title{display:none}.tools-fab{display:grid;place-items:center;position:fixed;right:12px;bottom:max(22px,calc(env(safe-area-inset-bottom) + 14px));width:52px;height:52px;border:0;border-radius:50%;background:var(--lav-700);color:var(--cream);box-shadow:0 6px 18px -4px #2e1f3d99;z-index:30;transition:transform .2s var(--ease)}.tools-fab:active{transform:scale(.94)}.tools-fab.busy:after{content:"";position:absolute;top:6px;right:6px;width:10px;height:10px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 2px var(--lav-700)}.reader-tools{position:fixed;right:12px;bottom:max(86px,calc(env(safe-area-inset-bottom) + 78px));flex-direction:column;align-items:flex-end;gap:8px;z-index:30;pointer-events:none;opacity:0;transform:translateY(12px);transition:opacity .2s var(--ease),transform .2s var(--ease)}.tools-open .reader-tools{pointer-events:auto;opacity:1;transform:none}.reader-tools .tool-btn{flex-direction:row;gap:8px;min-width:0;padding:9px 16px 9px 12px;border-radius:999px;font-size:.85rem;background:var(--cream);box-shadow:0 4px 14px -4px #2e1f3d73}.reader-tools .tool-btn.on{background:var(--lav-700)}.reader-tools .pen-dot{top:4px;right:6px}.reader-tools .popover{position:fixed;left:12px;right:12px;top:auto;bottom:max(12px,env(safe-area-inset-bottom));width:auto;max-height:60dvh;overflow:auto;z-index:35}.reader-body,.pdf-stage{padding:0}.pdf-page{box-shadow:none}.reader-foot{position:absolute;left:0;right:0;bottom:0;padding:0 0 env(safe-area-inset-bottom);pointer-events:none}.foot-label{display:block;padding:0 0 6px 14px;font-size:.72rem;color:var(--lav-600);opacity:.8}}.reader.penning .pdf-stage{touch-action:none}.reader.penning .textLayer{-webkit-touch-callout:none}.pdf-page .textLayer ::selection{background:#b496e666;background:color-mix(in srgb,var(--sel, #b39ddb) 50%,transparent)}.pdf-page .textLayer br::selection{background:transparent}.floating-bar .save-hl{background:var(--lav-600, #7e64b3);color:#fff;border-radius:999px;padding-inline:12px}.floating-bar .icon-only{padding-inline:8px}@media(max-width:640px){.floating-bar{max-width:calc(100vw - 16px);gap:4px;padding:5px 6px}.floating-bar .swatch{width:26px;height:26px}.floating-bar .bar-btn{padding-inline:10px}}.page-jump-btn{border:0;background:none;padding:2px 6px;border-radius:999px;font:inherit;font-size:.78rem;color:var(--lav-600);cursor:pointer;text-decoration:underline dotted rgb(120 90 160 / .5);text-underline-offset:3px;display:inline-flex;align-items:center;gap:2px}.page-jump-btn:hover,.page-jump-btn:focus-visible{background:#9b7fc824}.reader-foot .foot-label.page-jump-btn{pointer-events:auto;margin:0 0 4px 8px}.goto-page{width:min(320px,calc(100vw - 32px));padding:18px 18px 12px;border-radius:20px;background:var(--cream);border:1.5px solid var(--gold, #e6c47c);box-shadow:var(--shadow-pop);text-align:center;animation:rise .25s var(--ease) both}.goto-title{margin:0 0 10px;font-family:var(--hand);font-size:1.4rem;color:var(--lav-700)}.goto-row{display:flex;align-items:center;justify-content:center;gap:8px}.goto-row .input{width:92px;text-align:center;font-size:1.1rem}.goto-cancel{margin-top:8px;font-size:.85rem}.goto-place{width:min(380px,calc(100vw - 32px));max-height:calc(100dvh - 48px);display:flex;flex-direction:column}.goto-sub{margin:6px 0;font-size:.78rem;color:var(--lav-600);text-align:left}.goto-chapters{list-style:none;margin:0 0 6px;padding:4px;max-height:min(46dvh,340px);overflow-y:auto;border-radius:14px;background:#9b7fc812;text-align:left}.goto-chapters button{width:100%;border:0;background:none;text-align:left;padding:8px 12px;border-radius:10px;font:inherit;font-size:.92rem;color:var(--lav-700);cursor:pointer}.goto-chapters button:hover,.goto-chapters button:focus-visible{background:#9b7fc82e}html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-property:overflow;transition-duration:1ms;transition-behavior:allow-discrete}
