:root{--paper:#fbf6ef;--paper-2:#f4ede1;--paper-3:#e8ddce;--ink:#283048;--ink-soft:#5c637a;--ink-faint:#9499a8;--honey:#f3bb49;--honey-deep:#e68d1a;--coral:#eb785c;--coral-deep:#d05239;--sage:#7cab8e;--sky:#91aed4;--night:#2a3351;--font-sans:"Google Sans", "Google Sans Text", Roboto, system-ui, -apple-system, "Segoe UI", sans-serif;--font-story:"Google Sans", "Google Sans Text", Roboto, system-ui, sans-serif;--radius-sm:10px;--radius:16px;--radius-lg:26px;--shadow-soft:0 1px 2px #4233240f, 0 8px 24px #42332414;--shadow-lift:0 2px 4px #42332414, 0 18px 48px #42332429;--shadow-book:0 30px 60px -20px #402d1c73, 0 12px 24px -12px #402d1c59;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-flip:cubic-bezier(.645, .045, .355, 1);--grain:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.35  0 0 0 0 0.27  0 0 0 0 0.18  0 0 0 0.09 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font-sans);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;overflow:hidden}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0}:focus-visible{outline-offset:2px;outline:3px solid #f3bb49b3}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.app{isolation:isolate;flex-direction:column;height:100%;display:flex;position:relative}.app:before{content:"";z-index:-2;transition:filter .8s var(--ease-out), opacity .8s var(--ease-out);background:linear-gradient(#fbf6ef00 55%,#fbf6ef99),url(/backdrop.jpg) bottom/cover no-repeat;position:fixed;inset:0}.app.is-reading:before{filter:blur(6px)saturate(.9);opacity:.55}.app:after{content:"";z-index:-1;background-image:var(--grain);pointer-events:none;mix-blend-mode:multiply;position:fixed;inset:0}.topbar{flex:none;justify-content:space-between;align-items:center;padding:18px clamp(16px,3vw,36px);display:flex}.brand{letter-spacing:-.01em;color:var(--ink);align-items:center;gap:10px;font-size:1.05rem;font-weight:700;display:flex}.brand-mark{background:var(--night);width:34px;height:34px;box-shadow:var(--shadow-soft);border-radius:11px;place-items:center;display:grid}.topbar-actions{gap:8px;display:flex}.icon-btn{width:44px;height:44px;color:var(--ink);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:var(--shadow-soft);transition:transform .2s var(--ease-out), background .2s, box-shadow .2s;background:#fdfbf7b3;border-radius:14px;place-items:center;display:grid}.icon-btn:hover{box-shadow:var(--shadow-lift);background:#fefdfb;transform:translateY(-1px)}.icon-btn:active{transform:translateY(0)scale(.97)}.icon-btn[aria-pressed=true]{background:var(--night);color:var(--paper)}.main{flex:auto;min-height:0;position:relative}.btn{letter-spacing:.005em;height:48px;transition:transform .2s var(--ease-out), box-shadow .2s, background .2s, opacity .2s;white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;gap:10px;padding:0 22px;font-weight:500;display:inline-flex}.btn:active{transform:scale(.97)}.btn-primary{background:linear-gradient(180deg, #364063, var(--night));color:#fcf9f3;box-shadow:inset 0 1px #ffffff26,0 10px 24px -8px #1f28478c}.btn-primary:hover{transform:translateY(-1px);box-shadow:inset 0 1px #ffffff26,0 16px 30px -10px #1f284799}.btn-primary:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn-honey{background:linear-gradient(180deg, #f8cb62, var(--honey-deep));color:#412710;box-shadow:inset 0 1px #fff6,0 12px 26px -10px #b8711499}.btn-honey:hover{transform:translateY(-1px)}.btn-ghost{color:var(--ink);box-shadow:var(--shadow-soft);background:#fefdfbbf}.btn-ghost:hover{background:#fff}.btn-sm{height:36px;padding:0 14px;font-size:.9rem}.composer{text-align:center;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:0 20px 12vh;display:flex}.composer h1{letter-spacing:-.025em;max-width:16ch;animation:rise .9s var(--ease-out) both;margin:0 0 12px;font-size:clamp(1.9rem,4.2vw,3.1rem);font-weight:700;line-height:1.12}.composer .lede{color:var(--ink-soft);max-width:44ch;animation:rise .9s 80ms var(--ease-out) both;margin:0 0 30px;font-size:clamp(1rem,1.5vw,1.15rem);line-height:1.55}.prompt-card{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:var(--radius-lg);width:min(680px,100%);box-shadow:var(--shadow-lift);text-align:left;animation:rise .9s .16s var(--ease-out) both;transition:box-shadow .3s var(--ease-out), transform .3s var(--ease-out);background:#fefdfbdb;padding:10px}.prompt-card:focus-within{transform:translateY(-2px);box-shadow:0 2px 4px #42332414,0 26px 60px #47331f33}.prompt-card textarea{resize:none;background:0 0;border:0;outline:none;width:100%;min-height:112px;max-height:40vh;padding:16px 18px 8px;font-size:1.12rem;line-height:1.55}.prompt-card textarea::placeholder{color:var(--ink-faint)}.prompt-footer{justify-content:space-between;align-items:center;gap:12px;padding:6px 6px 6px 12px;display:flex}.settings-summary{color:var(--ink-soft);text-align:left;border-radius:999px;align-items:center;gap:8px;min-width:0;padding:8px 12px;font-size:.88rem;transition:background .2s,color .2s;display:inline-flex}.settings-summary span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.settings-summary:hover{background:var(--paper-2);color:var(--ink)}.examples{max-width:680px;animation:rise .9s .24s var(--ease-out) both;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:22px;display:flex}.example{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--ink-soft);transition:background .2s, color .2s, transform .2s var(--ease-out);background:#fefdfb99;border-radius:999px;padding:8px 14px;font-size:.9rem}.example:hover{color:var(--ink);background:#fffffff2;transform:translateY(-1px)}.banner{border-radius:var(--radius);color:#7a3629;max-width:640px;box-shadow:var(--shadow-soft);background:#fdf0ed;margin:0 auto 18px;padding:12px 16px;font-size:.92rem;line-height:1.45}.banner code{background:#f5dcd6;border-radius:6px;padding:1px 6px;font-family:ui-monospace,Roboto Mono,monospace;font-size:.86em}.loading-scene{text-align:center;place-items:center;height:100%;padding:20px 20px 10vh;display:grid}.loading-inner{flex-direction:column;align-items:center;gap:22px;max-width:520px;display:flex}.magic-book{perspective:800px;width:200px;height:130px;position:relative}.magic-book .mb-page{background:linear-gradient(90deg, var(--paper-2), #fefdfb);width:50%;height:100%;box-shadow:var(--shadow-soft);border-radius:4px 12px 12px 4px;position:absolute;top:0}.magic-book .mb-left{background:linear-gradient(270deg, var(--paper-2), #fefdfb);border-radius:12px 4px 4px 12px;left:0}.magic-book .mb-right{left:50%}.magic-book .mb-flip{transform-origin:0;animation:mbflip 2.4s var(--ease-flip) infinite;background:linear-gradient(90deg,#f7f1e8,#fefdfb);left:50%}.magic-book .mb-line{background:var(--paper-3);border-radius:3px;height:5px;position:absolute;left:16%;right:16%}.spark{background:var(--honey);width:8px;height:8px;box-shadow:0 0 12px var(--honey);opacity:0;border-radius:50%;animation:3.2s ease-in-out infinite float;position:absolute}.loading-title{letter-spacing:-.02em;min-height:1.3em;margin:0;font-size:clamp(1.4rem,3vw,2rem);font-weight:700}.loading-message{color:var(--ink-soft);min-height:1.6em;animation:fadeSwap .6s var(--ease-out);margin:0;font-size:1.05rem}.steps{text-align:left;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:var(--radius);box-shadow:var(--shadow-soft);background:#fefdfbbf;gap:10px;min-width:300px;margin:6px 0 0;padding:14px 18px;list-style:none;display:grid}.steps li{color:var(--ink-faint);align-items:center;gap:12px;font-size:.95rem;transition:color .3s;display:flex}.steps li.active{color:var(--ink);font-weight:500}.steps li.done{color:var(--ink-soft)}.step-dot{background:var(--paper-3);color:#fff;border-radius:50%;flex:none;place-items:center;width:20px;height:20px;transition:background .3s;display:grid}.steps li.active .step-dot{background:var(--honey);animation:1.4s ease-in-out infinite pulse}.steps li.done .step-dot{background:var(--sage)}.error-card{border-radius:var(--radius-lg);max-width:480px;box-shadow:var(--shadow-lift);text-align:center;background:#fefdfbeb;padding:28px}.error-card h2{letter-spacing:-.02em;margin:0 0 8px}.error-card p{color:var(--ink-soft);word-break:break-word;margin:0 0 20px;line-height:1.5}.error-card .row{justify-content:center;gap:10px;display:flex}.reader{flex-direction:column;justify-content:center;align-items:center;gap:18px;height:100%;padding:0 16px 20px;display:flex}.toast{z-index:50;border-radius:var(--radius);color:#2b503d;max-width:min(560px,92vw);box-shadow:var(--shadow-lift);animation:drop .6s var(--ease-out) both;background:#edf7f1f5;align-items:flex-start;gap:10px;padding:10px 12px 10px 16px;font-size:.9rem;line-height:1.4;display:flex;position:absolute;top:6px;left:50%;transform:translate(-50%)}.toast button{width:26px;height:26px;color:inherit;border-radius:8px;flex:none;place-items:center;display:grid}.toast button:hover{background:#d7eade}.book-stage{touch-action:none;-webkit-user-select:none;user-select:none;place-items:center;display:grid;position:relative}.book{perspective:2800px;transition:transform .9s var(--ease-flip);position:relative}.book-shadow{filter:blur(6px);height:36px;transition:left .9s var(--ease-flip), right .9s var(--ease-flip);pointer-events:none;background:radial-gradient(#47321f59,#0000 70%);position:absolute;bottom:-18px;left:4%;right:4%}.leaf{transform-origin:0;width:50%;height:100%;transform-style:preserve-3d;transition:transform .95s var(--ease-flip);will-change:transform;position:absolute;top:0;left:50%}.leaf.dragging{transition:none}.face{backface-visibility:hidden;transition:visibility 0s linear var(--face-delay);background:#fcf9f3;position:absolute;inset:0;overflow:hidden}.face.front{box-shadow:var(--shadow-book);border-radius:4px 14px 14px 4px}.face.back{visibility:hidden;box-shadow:var(--shadow-book);border-radius:14px 4px 4px 14px;transform:rotateY(180deg)}.leaf.is-flipped>.face.front{visibility:hidden}.leaf.is-flipped>.face.back{visibility:visible}.leaf.dragging>.face{transition:none}.face:before{content:"";background-image:var(--grain);opacity:.7;pointer-events:none;z-index:3;mix-blend-mode:multiply;position:absolute;inset:0}.face.front:after,.face.back:after{content:"";pointer-events:none;z-index:4;position:absolute;inset:0}.face.front:after{background:linear-gradient(90deg,#36251747,#3625170f 6%,#0000 14%),linear-gradient(90deg,#0000 calc(100% - 3px),#fff6)}.face.back:after{background:linear-gradient(270deg,#36251747,#3625170f 6%,#0000 14%)}.face .curl{z-index:5;pointer-events:none;opacity:0;position:absolute;inset:0}.face.front .curl{background:linear-gradient(90deg,#0000 30%,#21191259)}.face.back .curl{background:linear-gradient(270deg,#0000 30%,#ffffff59)}.leaf.turning .face .curl{animation:curl .95s var(--ease-flip)}.leaf.dragging .face .curl{opacity:var(--curl,0)}.art{object-fit:cover;width:100%;height:100%;animation:develop 1.2s var(--ease-out);position:absolute;inset:0}.painting{background-color:#f9f4ec;background-image:radial-gradient(circle at 30% 30%,#faecd1,#0000 55%),radial-gradient(circle at 70% 65%,#d9e4f2,#0000 55%),radial-gradient(circle at 40% 80%,#d7eade,#0000 50%),none;background-position:0 0,0 0,0 0,0 0;background-repeat:repeat,repeat,repeat,repeat;background-size:200% 200%;background-attachment:scroll,scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box,border-box;place-items:center;animation:6s ease-in-out infinite alternate wash;display:grid;position:absolute;inset:0}.painting-label{color:var(--ink-soft);font-size:calc(var(--pw) * .036);flex-direction:column;align-items:center;gap:12px;margin-bottom:30%;display:flex}.brush{animation:1.6s ease-in-out infinite brush}.art-fallback{color:var(--ink-soft);font-size:calc(var(--pw) * .034);text-align:center;background:radial-gradient(circle at 50% 38%,#fceac5,#0000 45%),linear-gradient(#e2eaf3,#f7f2e8);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding-bottom:30%;display:flex;position:absolute;inset:0}.text-band{z-index:6;border-radius:calc(var(--pw) * .035);-webkit-backdrop-filter:blur(8px);font-family:var(--font-story);font-size:var(--story-size);color:var(--ink);letter-spacing:.002em;transition:box-shadow .5s var(--ease-out), transform .5s var(--ease-out), background .5s;background:#fdfbf6e6;padding:.9em 1.1em;font-weight:500;line-height:1.42;position:absolute;bottom:4.5%;left:5%;right:5%;box-shadow:0 6px 20px #47321f24}.text-band.reading{background:#fffbf0f5;animation:2.2s ease-in-out infinite halo;transform:translateY(-2px)}.emph{color:var(--coral);letter-spacing:.01em;font-style:normal;font-weight:700;display:inline-block;transform:rotate(-2deg)scale(1.06)}.text-band .band-tools{justify-content:flex-end;margin-top:.4em;display:flex}.page-num{z-index:6;font-size:calc(var(--pw) * .03);color:#fdfbf7;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#242b4259;border-radius:999px;padding:.25em .7em;font-weight:500;position:absolute;top:3.5%}.face.front .page-num{right:5%}.face.back .page-num{left:5%}.mini-btn{font-size:max(12px, calc(var(--pw) * .026));background:var(--night);color:var(--paper);z-index:7;transition:transform .2s var(--ease-out), opacity .2s;border-radius:999px;align-items:center;gap:6px;padding:.45em .9em;font-weight:500;display:inline-flex;position:relative}.mini-btn:hover{transform:translateY(-1px)}.mini-btn.subtle{color:var(--ink);background:#e0e3eb}.cover-title-fallback{z-index:6;text-align:center;font-size:calc(var(--pw) * .085);letter-spacing:-.02em;color:var(--ink);text-shadow:0 2px #fdfbf6;font-weight:700;line-height:1.08;position:absolute;top:9%;left:8%;right:8%}.cover-retry{z-index:7;justify-content:center;display:flex;position:absolute;bottom:6%;left:0;right:0}.title-page,.end-page,.endpaper,.back-cover{text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:12%;display:flex;position:absolute;inset:0}.title-page h2{font-size:calc(var(--pw) * .075);letter-spacing:-.02em;margin:0 0 .5em;line-height:1.12}.title-page .dedication{font-size:calc(var(--pw) * .042);color:var(--ink-soft);margin:0 0 2.2em;font-style:italic;line-height:1.45}.title-page .credits{font-size:calc(var(--pw) * .028);color:var(--ink-faint);line-height:1.7}.ornament{width:36%;height:auto;color:var(--honey-deep);opacity:.8;margin:0 0 1.4em}.end-page h2{font-size:calc(var(--pw) * .12);letter-spacing:-.03em;margin:0 0 .25em;font-weight:700}.end-page .ending{font-size:var(--story-size);color:var(--ink-soft);margin:0 0 1.4em;line-height:1.5}.end-page .moral{font-size:calc(var(--pw) * .036);border-radius:calc(var(--pw) * .03);color:#634221;background:#fcedcf;margin:0 0 1.8em;padding:.9em 1.2em;line-height:1.45}.end-page .end-actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.endpaper{background:radial-gradient(circle at 20% 20%,#fadb9e80 0 2px,#0000 3px) 0 0/38px 38px,radial-gradient(circle at 70% 60%,#9fbbdf73 0 2px,#0000 3px) 0 0/52px 52px,#f6f0e4}.back-cover{background:linear-gradient(160deg, #364063, var(--night));color:#f7efde;font-size:calc(var(--pw) * .034);gap:12px}.back-cover .brand-line{opacity:.75;font-size:calc(var(--pw) * .028)}.controls{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow-lift);background:#fefdfbd1;border-radius:999px;align-items:center;gap:10px;padding:8px;display:flex}.controls .icon-btn{box-shadow:none;background:0 0;border-radius:999px}.controls .icon-btn:hover{background:var(--paper-2);box-shadow:none}.controls .icon-btn:disabled{opacity:.3;cursor:default;transform:none}.page-indicator{color:var(--ink-soft);text-align:center;font-variant-numeric:tabular-nums;min-width:108px;font-size:.88rem}.read-btn{min-width:160px}.eq{align-items:flex-end;gap:2px;height:14px;display:inline-flex}.eq i{background:currentColor;border-radius:2px;width:3px;animation:.9s ease-in-out infinite eq}.eq i:nth-child(2){animation-delay:.15s}.eq i:nth-child(3){animation-delay:.3s}.progress-chip{color:var(--ink-soft);align-items:center;gap:8px;padding:0 10px;font-size:.82rem;display:inline-flex}.progress-chip .mini-spinner{border:2px solid var(--paper-3);border-top-color:var(--honey-deep);border-radius:50%;width:12px;height:12px;animation:.9s linear infinite spin}.scrim{z-index:80;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:fadeIn .3s var(--ease-out);background:#1b203247;position:fixed;inset:0}.drawer{z-index:90;border-radius:var(--radius-lg);width:min(440px,100vw - 24px);animation:slideIn .45s var(--ease-out);background:#fcf9f3;flex-direction:column;display:flex;position:fixed;top:12px;bottom:12px;right:12px;overflow:hidden;box-shadow:0 30px 80px #1b20324d}.drawer:before{content:"";background-image:var(--grain);pointer-events:none;mix-blend-mode:multiply;opacity:.6;position:absolute;inset:0}.drawer-head{justify-content:space-between;align-items:center;padding:20px 20px 12px 24px;display:flex;position:relative}.drawer-head h2{letter-spacing:-.015em;margin:0;font-size:1.25rem}.drawer-head .icon-btn{box-shadow:none;background:0 0}.drawer-head .icon-btn:hover{background:var(--paper-2)}.drawer-body{scrollbar-width:thin;flex:auto;padding:4px 24px 24px;position:relative;overflow-y:auto}.drawer-foot{border-top:1px solid var(--paper-3);justify-content:space-between;align-items:center;padding:14px 24px 20px;display:flex;position:relative}.section{border-bottom:1px solid #ebe2d5;padding:18px 0}.section:last-child{border-bottom:0}.section h3{text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint);margin:0 0 14px;font-size:.78rem;font-weight:700}.field{margin-bottom:16px}.field:last-child{margin-bottom:0}.field-label{justify-content:space-between;align-items:baseline;margin-bottom:8px;font-size:.95rem;font-weight:500;display:flex}.field-label .value{color:var(--coral-deep);font-variant-numeric:tabular-nums;font-weight:700}.hint{color:var(--ink-faint);margin-top:6px;font-size:.82rem;line-height:1.4}.text-input{border:1px solid var(--paper-3);background:#fefdfb;border-radius:12px;outline:none;width:100%;height:44px;padding:0 14px;transition:border-color .2s,box-shadow .2s}.text-input:focus{border-color:var(--honey-deep);box-shadow:0 0 0 4px #f3bb4933}textarea.text-input{resize:vertical;height:auto;min-height:72px;padding:10px 14px;line-height:1.45}input[type=range]{--pct:50%;appearance:none;cursor:pointer;background:0 0;width:100%;height:28px}input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--coral) 0 var(--pct), var(--paper-2) var(--pct) 100%);border-radius:99px;height:6px;box-shadow:inset 0 1px 2px #85664726}input[type=range]::-moz-range-track{background:var(--paper-2);border-radius:99px;height:6px}input[type=range]::-moz-range-progress{background:var(--coral);border-radius:99px;height:6px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:3px solid var(--coral);background:#fefdfb;border-radius:50%;width:20px;height:20px;margin-top:-7px;transition:transform .15s;box-shadow:0 2px 6px #a3472940}input[type=range]::-moz-range-thumb{border:3px solid var(--coral);background:#fefdfb;border-radius:50%;width:14px;height:14px}input[type=range]:active::-webkit-slider-thumb{transform:scale(1.15)}.segmented{background:var(--paper-2);border-radius:14px;gap:4px;padding:4px;display:flex}.segmented button{height:36px;color:var(--ink-soft);border-radius:10px;flex:1 1 0;font-size:.9rem;font-weight:500;transition:background .2s,color .2s,box-shadow .2s}.segmented button[aria-pressed=true]{color:var(--ink);box-shadow:var(--shadow-soft);background:#fefdfb}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{background:var(--paper-2);height:36px;color:var(--ink-soft);transition:background .2s, color .2s, transform .2s var(--ease-out);border-radius:999px;padding:0 14px;font-size:.9rem}.chip:hover{color:var(--ink);transform:translateY(-1px)}.chip[aria-pressed=true]{background:var(--night);color:var(--paper)}.style-grid{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.style-card{background:var(--paper-2);text-align:left;color:var(--ink-soft);transition:background .2s, color .2s, box-shadow .2s, transform .2s var(--ease-out);border-radius:14px;align-items:center;gap:10px;padding:10px;font-size:.9rem;font-weight:500;display:flex}.style-card:hover{color:var(--ink);transform:translateY(-1px)}.style-card[aria-pressed=true]{color:var(--ink);box-shadow:var(--shadow-soft), inset 0 0 0 2px var(--night);background:#fefdfb}.swatch{border-radius:9px;flex:none;width:30px;height:30px;box-shadow:inset 0 0 0 1px #0000000f}.voice-list{scrollbar-width:thin;gap:6px;max-height:270px;padding-right:4px;display:grid;overflow-y:auto}.voice-row{background:var(--paper-2);cursor:pointer;border-radius:12px;align-items:center;gap:10px;padding:8px 8px 8px 12px;transition:background .2s,box-shadow .2s;display:flex}.voice-row:hover{background:#f0e6d5}.voice-row[aria-selected=true]{box-shadow:var(--shadow-soft), inset 0 0 0 2px var(--night);background:#fefdfb}.voice-row .v-name{font-weight:500}.voice-row .v-desc{color:var(--ink-faint);font-size:.86rem}.voice-row .v-default{color:var(--coral-deep);text-transform:uppercase;letter-spacing:.06em;margin-left:4px;font-size:.72rem;font-weight:700}.voice-row .play{width:34px;height:34px;color:var(--ink);box-shadow:var(--shadow-soft);background:#fefdfb;border-radius:50%;place-items:center;margin-left:auto;display:grid}.voice-row .play:hover{background:#fff}.shelf-list{grid-template-columns:repeat(2,1fr);gap:14px;display:grid}.shelf-item{text-align:left;transition:transform .25s var(--ease-out);background:0 0;border-radius:14px;padding:0;position:relative}.shelf-item:hover{transform:translateY(-3px)}.shelf-cover{aspect-ratio:3/4;width:100%;box-shadow:var(--shadow-book);background:linear-gradient(160deg,#d4dfed,#f5ebd6);border-radius:4px 12px 12px 4px;position:relative;overflow:hidden}.shelf-cover img{object-fit:cover;width:100%;height:100%;display:block}.shelf-cover:after{content:"";background:linear-gradient(90deg,#36251740,#0000 10%);position:absolute;inset:0}.shelf-title{-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:10px 2px 2px;font-size:.92rem;font-weight:500;line-height:1.3;display:-webkit-box;overflow:hidden}.shelf-meta{color:var(--ink-faint);margin:0 2px;font-size:.78rem}.shelf-delete{width:30px;height:30px;color:var(--ink-soft);opacity:0;z-index:2;background:#fefdfbe6;border-radius:10px;place-items:center;transition:opacity .2s;display:grid;position:absolute;top:8px;right:8px}.shelf-item:hover .shelf-delete,.shelf-delete:focus-visible{opacity:1}.empty{text-align:center;color:var(--ink-faint);padding:40px 10px;line-height:1.5}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes fadeIn{0%{opacity:0}}@keyframes fadeSwap{0%{opacity:0;transform:translateY(6px)}}@keyframes slideIn{0%{opacity:0;transform:translate(30px)}}@keyframes drop{0%{opacity:0;transform:translate(-50%,-12px)}}@keyframes mbflip{0%,15%{transform:rotateY(0)}65%,to{transform:rotateY(-180deg)}}@keyframes float{0%{opacity:0;transform:translateY(10px)scale(.6)}30%{opacity:1}to{opacity:0;transform:translateY(-70px)scale(1)}}@keyframes pulse{50%{transform:scale(1.15)}}@keyframes develop{0%{opacity:0;filter:blur(10px)saturate(.6);transform:scale(1.03)}}@keyframes wash{to{background-position:100% 100%}}@keyframes brush{50%{transform:rotate(-12deg)translateY(-4px)}}@keyframes halo{0%,to{box-shadow:0 6px 20px #47321f24,0 0 #fbc85159}50%{box-shadow:0 8px 26px #47321f29,0 0 26px 6px #fbc85173}}@keyframes curl{0%,to{opacity:0}50%{opacity:1}}@keyframes eq{0%,to{height:4px}50%{height:14px}}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){*,:before,:after{animation-duration:.01ms!important;animation-iteration-count:1!important}.leaf,.book{transition-duration:.2s!important}}@media (width<=640px){.prompt-footer{flex-direction:column;align-items:stretch}.settings-summary{justify-content:center}.page-indicator{display:none}.read-btn{min-width:0}}html{overscroll-behavior:none}.app{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.topbar-actions{flex-wrap:wrap;justify-content:flex-end}.device-note{text-align:center;color:var(--ink-soft);padding:8px 20px 14px;font-size:12px}.app:not(.is-reading) .main{overflow-y:auto}.composer{height:auto;min-height:100%;padding:28px 20px 48px}.eyebrow{text-transform:uppercase;letter-spacing:.15em;color:var(--ink-soft);font-size:12px;font-weight:700}.setup-dialog{color:var(--ink);background:var(--paper);border:1px solid var(--paper-3);box-shadow:var(--shadow-lift);border-radius:24px;width:min(600px,100vw - 32px);max-height:calc(100dvh - 40px);padding:0}.setup-dialog::backdrop{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#1e243780}.setup-dialog .drawer-head{background:var(--paper);z-index:1;position:sticky;top:0}.setup-body{padding:0 26px 26px;line-height:1.6}.setup-body a{color:var(--ink);text-underline-offset:3px}.setup-steps{padding-left:24px}.setup-steps li{margin-bottom:14px;padding-left:4px}.setup-actions{flex-wrap:wrap;gap:8px;margin:20px 0 8px;display:flex}.check-label{align-items:center;gap:10px;display:flex}.check-label input{width:20px;height:20px;accent-color:var(--night)}.error-toast{color:#7a3629;z-index:60;background:#fdf0ed}.toddler-mode .topbar{visibility:hidden;pointer-events:none}.toddler-mode{overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.parent-exit{top:calc(14px + env(safe-area-inset-top));right:calc(14px + env(safe-area-inset-right));z-index:50;touch-action:none;-webkit-user-select:none;user-select:none;position:fixed}@media (width<=650px){.topbar{align-items:flex-start;gap:8px;padding:12px}.topbar-actions{gap:2px;max-width:70%}.topbar-actions .btn-sm{min-height:44px;padding:9px 7px;font-size:12px}.topbar-actions .icon-btn{width:44px;height:44px}.brand{margin-top:7px}.setup-body{padding:0 20px 20px}.device-note{font-size:11px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}.face{transition-delay:0s}}
