:root{--ink-950:#12100d;--ink-900:#191512;--ink-800:#221d18;--ink-700:#2e2721;--ink-600:#3d342b;--paper:#ece3d3;--paper-dim:#b8ab94;--paper-faint:#857a66;--gold:#c9a35c;--gold-bright:#e0bd75;--error:#d98a7c;--ok:#9dbb8f;--serif:"Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;--sans:"Gill Sans", "Gill Sans MT", Seravek, Calibri, "Trebuchet MS", sans-serif;--radius:10px;--shadow:0 18px 40px #00000073}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:radial-gradient(1200px 600px at 85% -10%, #c9a35c14, transparent 60%), radial-gradient(900px 500px at -10% 110%, #c9a35c0d, transparent 55%), var(--ink-900);color:var(--paper);font-family:var(--serif);-webkit-font-smoothing:antialiased;font-size:17px;line-height:1.55}a{color:var(--gold-bright)}.wordmark{font-family:var(--serif);letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin:0;font-size:1.05rem}.wordmark--link{text-decoration:none}.wordmark-sub{color:var(--paper-faint);letter-spacing:.18em;font-size:.8em}.app-shell{flex-direction:column;min-height:100vh;display:flex}.app-header{border-bottom:1px solid var(--ink-600);justify-content:space-between;align-items:center;gap:1rem;padding:1.1rem clamp(1rem,4vw,3rem);display:flex}.app-nav{align-items:center;gap:1rem;display:flex}.nav-link{font-family:var(--sans);letter-spacing:.08em;text-transform:uppercase;font-size:.85rem;text-decoration:none}.nav-user{color:var(--paper-dim);font-style:italic}.button{font-family:var(--sans);letter-spacing:.06em;border:1px solid var(--ink-600);color:var(--paper);cursor:pointer;background:0 0;border-radius:999px;padding:.55rem 1.3rem;font-size:.9rem;text-decoration:none;transition:border-color .2s,background .2s,transform .15s;display:inline-block}.button:hover{border-color:var(--gold)}.button--primary{background:var(--gold);border-color:var(--gold);color:var(--ink-950);font-weight:600}.button--primary:hover{background:var(--gold-bright);transform:translateY(-1px)}.button--primary:disabled{opacity:.6;cursor:default;transform:none}.button--ghost{color:var(--paper-dim);border-color:#0000}.button--ghost:hover{color:var(--paper);border-color:var(--ink-600)}.field{flex-direction:column;gap:.35rem;display:flex}.field-label{font-family:var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--paper-faint);font-size:.75rem}.field-input{font:inherit;color:var(--paper);background:var(--ink-950);border:1px solid var(--ink-600);border-radius:var(--radius);padding:.7rem .9rem}.field-input:focus{border-color:var(--gold);outline:none;box-shadow:0 0 0 3px #c9a35c26}.form-message{border-radius:var(--radius);font-family:var(--sans);padding:.6rem .9rem;font-size:.9rem}.form-message--error{color:var(--error);border:1px solid #d98a7c66}.form-message-text{margin:0}.form-message--error .button{margin-top:.7rem}.form-message--notice{color:var(--ok);border:1px solid #9dbb8f66}.auth-scene{place-items:center;min-height:100vh;padding:2rem 1rem;display:grid}.auth-card{background:var(--ink-800);border:1px solid var(--ink-600);width:min(26rem,100%);box-shadow:var(--shadow);border-radius:16px;padding:2.4rem 2.2rem;animation:.5s both rise}.auth-title{margin:1.2rem 0 .3rem;font-size:1.9rem;font-weight:500}.auth-subtitle{color:var(--paper-dim);margin:0 0 1.4rem}.auth-form{flex-direction:column;gap:1rem;display:flex}.auth-footer{border-top:1px solid var(--ink-600);color:var(--paper-dim);margin-top:1.6rem;padding-top:1.2rem;font-size:.95rem}.library,.player,.admin{width:min(64rem,100%);margin:0 auto;padding:2rem clamp(1rem,4vw,3rem) 4rem}.section-title{letter-spacing:.05em;color:var(--paper-dim);border-bottom:1px solid var(--ink-600);margin:2.2rem 0 1.4rem;padding-bottom:.5rem;font-size:1.15rem;font-weight:500}.empty-state{color:var(--paper-dim);max-width:34rem;font-style:italic}.book-grid{grid-template-columns:repeat(auto-fill,minmax(10.5rem,1fr));gap:2rem 1.6rem;display:grid}.book-card{color:var(--paper);flex-direction:column;gap:.6rem;text-decoration:none;animation:.5s both rise;display:flex}.book-card:hover .cover{transform:translateY(-4px);box-shadow:0 22px 40px #0000008c}.book-card-title{font-size:1.02rem;line-height:1.3}.book-card-meta{font-family:var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--paper-faint);font-size:.75rem}.cover{aspect-ratio:2/3;width:100%;box-shadow:var(--shadow);border-radius:6px 12px 12px 6px;transition:transform .25s,box-shadow .25s;position:relative;overflow:hidden}.cover--image{object-fit:cover;display:block}.cover--generated{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.7rem;padding:1.2rem;display:flex}.cover--generated:before{content:"";background:#00000059;width:2px;position:absolute;inset:0 0 0 6px}.cover-rule{background:var(--gold);opacity:.8;width:2.4rem;height:1px}.cover-title{color:var(--paper);font-size:1.05rem;line-height:1.25}.cover-author{font-family:var(--sans);letter-spacing:.16em;text-transform:uppercase;color:#ece3d3a6;font-size:.62rem}.continue-card{background:var(--ink-800);border:1px solid var(--ink-600);color:var(--paper);border-radius:16px;grid-template-columns:9rem 1fr;align-items:center;gap:1.8rem;margin-top:1.5rem;padding:1.6rem;text-decoration:none;animation:.5s both rise;display:grid}.continue-copy{flex-direction:column;align-items:flex-start;gap:.4rem;display:flex}.continue-label{font-family:var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--gold);font-size:.72rem}.continue-title{font-size:1.6rem;line-height:1.2}.continue-meta{color:var(--paper-dim);font-family:var(--sans);font-size:.85rem}.continue-button{margin-top:.6rem}.back-link{font-family:var(--sans);letter-spacing:.08em;color:var(--paper-dim);font-size:.85rem;text-decoration:none}.back-link:hover{color:var(--paper)}.player-layout{grid-template-columns:minmax(0,22rem) minmax(0,1fr);gap:3rem;margin-top:1.6rem;display:grid}.player-stage{text-align:center;flex-direction:column;align-items:center;display:flex}.player-stage .cover{max-width:16rem}.player-title{margin:1.4rem 0 .2rem;font-size:1.7rem;font-weight:500}.player-chapter{color:var(--paper-dim);margin:0 0 1.4rem;font-style:italic}.controls{flex-direction:column;gap:1.1rem;width:100%;display:flex}.scrubber{align-items:center;gap:.7rem;display:flex}.time{font-family:var(--sans);color:var(--paper-faint);font-variant-numeric:tabular-nums;min-width:3.2rem;font-size:.78rem}.scrubber input[type=range]{appearance:none;background:linear-gradient(to right, var(--gold) var(--progress,0%), var(--ink-600) var(--progress,0%));cursor:pointer;border-radius:2px;flex:1;height:4px}.scrubber input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--gold-bright);border:none;border-radius:50%;width:14px;height:14px;box-shadow:0 2px 6px #00000080}.scrubber input[type=range]::-moz-range-thumb{background:var(--gold-bright);border:none;border-radius:50%;width:14px;height:14px}.transport{justify-content:center;align-items:center;gap:1.4rem;display:flex}.play-button{background:var(--gold);width:4.2rem;height:4.2rem;color:var(--ink-950);cursor:pointer;border:none;border-radius:50%;font-size:1.25rem;transition:transform .15s,background .2s;box-shadow:0 10px 25px #c9a35c40}.play-button:hover{background:var(--gold-bright);transform:scale(1.05)}.rates{justify-content:center;gap:.4rem;display:flex}.rate{font-family:var(--sans);color:var(--paper-faint);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:999px;padding:.25rem .7rem;font-size:.75rem}.rate--active{color:var(--gold);border-color:var(--gold)}.chapter-list ol{flex-direction:column;gap:.3rem;margin:0;padding:0;list-style:none;display:flex}.chapter{border-radius:var(--radius);width:100%;color:var(--paper-dim);font:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;align-items:center;gap:.9rem;padding:.65rem .9rem;transition:background .15s,color .15s;display:flex}.chapter:hover{background:var(--ink-800);color:var(--paper)}.chapter--active{background:var(--ink-800);border-color:var(--ink-600);color:var(--gold-bright)}.chapter-number{font-family:var(--sans);color:var(--paper-faint);font-variant-numeric:tabular-nums;min-width:1.4rem;font-size:.75rem}.chapter-name{flex:1}.chapter-playing{align-items:flex-end;gap:2px;height:.9rem;display:inline-flex}.chapter-playing i{background:var(--gold);width:3px;animation:.9s ease-in-out infinite equalize}.chapter-playing i:nth-child(2){animation-delay:.25s}.chapter-playing i:nth-child(3){animation-delay:.5s}.admin-hint{color:var(--paper-dim);max-width:40rem}.admin-table-wrap{border:1px solid var(--ink-600);border-radius:var(--radius);overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;font-family:var(--sans);font-size:.92rem}.admin-table th,.admin-table td{text-align:left;border-bottom:1px solid var(--ink-700);padding:.75rem 1rem}.admin-table th{letter-spacing:.1em;text-transform:uppercase;color:var(--paper-faint);background:var(--ink-800);font-size:.72rem}.admin-table tr:last-child td{border-bottom:none}.admin-book-col{text-align:center}.admin-name{display:block}.admin-email{color:var(--paper-faint);font-size:.8rem;display:block}.admin-table input[type=checkbox]{width:1.05rem;height:1.05rem;accent-color:var(--gold);cursor:pointer}.badge{letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--ink-600);color:var(--paper-faint);border-radius:999px;padding:.2rem .6rem;font-size:.72rem}.badge--ok{color:var(--ok);border-color:#9dbb8f66}.danger-zone{border-top:1px solid var(--ink-600);margin-top:4rem;padding-top:1.4rem}.button--danger{color:var(--error);border-color:#d98a7c80}.button--danger:hover{border-color:var(--error);background:#d98a7c1f}.button--danger:disabled{opacity:.6;cursor:default}.danger-confirm{border-radius:var(--radius);border:1px solid #d98a7c66;max-width:34rem;padding:1.1rem 1.3rem}.danger-text{color:var(--paper-dim);margin:0 0 .9rem}.danger-text--error{color:var(--error)}.danger-actions{flex-wrap:wrap;gap:.8rem;display:flex}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes equalize{0%,to{height:30%}50%{height:100%}}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}@media (width<=720px){.player-layout{grid-template-columns:1fr}.continue-card{grid-template-columns:6.5rem 1fr;gap:1.2rem}.continue-title{font-size:1.25rem}}
