:root{--font-heading: "Playfair Display", "Georgia", serif;--font-body: "Lato", "Helvetica Neue", sans-serif;--font-mono: "Courier New", "Courier", monospace;--size-xs: .75rem;--size-sm: .875rem;--size-base: 1rem;--size-lg: 1.125rem;--size-xl: 1.25rem;--size-xxl: 1.5rem;--size-3xl: 2rem;--size-4xl: 2.5rem;--radius-sm: 2px;--radius-md: 4px;--radius-lg: 8px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .5);--bg: #1a1208;--text: #e8dcc8;--text-muted: #a09070;--accent: #4a7c59;--accent-hover: #5a9a6e;--shelf-bg: #3d2b1f;--wallpaper-color: #2a3d2f;--border: rgba(255, 255, 255, .1)}.shelf-library{--shelf-bg: #3d2b1f;--shelf-text: #e8dcc8;--wallpaper-color: #2a3d2f;--accent: #4a7c59}.shelf-antilibrary{--bg: #f5f0e8;--text: #2c1f0e;--shelf-bg: #c8a97a;--shelf-text: #2c1f0e;--wallpaper-color: #e8e4d6;--accent: #7a9e6e;--border: rgba(0, 0, 0, .1)}.shelf-antilibrary .bookcase__side{filter:brightness(.55) saturate(.5) sepia(.3)}.shelf-antilibrary .shelf-row__plank,.shelf-antilibrary .shelf-row__lip{filter:brightness(.5) saturate(.5) sepia(.3)}.shelf-antilibrary .shelf-row__back{filter:brightness(.3) saturate(.4) sepia(.3)}.shelf-wishlist{--bg: #1e2838;--text: #d4dde8;--shelf-bg: #2c3e55;--shelf-text: #d4dde8;--wallpaper-color: #253040;--accent: #7b9eb8}.shelf-looking-for-home{--bg: #e8eef5;--text: #2c1f0e;--shelf-bg: #b8a080;--shelf-text: #2c1f0e;--wallpaper-color: #dce8f0;--accent: #6a8ea0;--border: rgba(0, 0, 0, .1)}.shelf-looking-for-home .bookcase__side{filter:brightness(.5) saturate(.45) sepia(.15) hue-rotate(-10deg)}.shelf-looking-for-home .shelf-row__plank,.shelf-looking-for-home .shelf-row__lip{filter:brightness(.45) saturate(.45) sepia(.15) hue-rotate(-10deg)}.shelf-looking-for-home .shelf-row__back{filter:brightness(.35) saturate(.4) sepia(.15) hue-rotate(-10deg)}.shelf-reading-pile{--bg: #2a1a2e;--text: #e8dce8;--shelf-bg: #3d2b1f;--shelf-text: #e8d4b8;--wallpaper-color: #c8b0d0;--accent: #9a6aaa}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth}body{font-family:var(--font-body);background-color:var(--bg);color:var(--text);line-height:1.6;min-height:100vh}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{font-family:var(--font-heading);font-weight:700;line-height:1.2}.app{display:flex;flex-direction:column;min-height:100vh}.app__main{flex:1;padding:2rem 1.5rem;max-width:1200px;margin:0 auto;width:100%}.app-header{position:relative;z-index:100;background-color:var(--shelf-bg, #3d2b1f);border-bottom:1px solid var(--border);padding:1rem 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.app-header__logo{font-family:var(--font-heading);font-size:var(--size-xxl);color:var(--text);font-weight:700;letter-spacing:.02em}.app-header__logo:hover{text-decoration:none;opacity:.85}.app-nav__list{list-style:none;display:flex;gap:.25rem;flex-wrap:wrap}.app-nav__link{display:block;padding:.4rem .8rem;border-radius:var(--radius-md);font-size:var(--size-sm);color:var(--text-muted, #a09070);transition:background-color .15s,color .15s}.app-nav__link:hover{background-color:#ffffff0f;color:var(--text);text-decoration:none}.app-nav__item--active .app-nav__link{background-color:#ffffff1a;color:var(--text)}.app-nav__dropdown{position:relative}.app-nav__dropdown-menu{display:none;position:absolute;top:100%;right:0;list-style:none;background:var(--shelf-bg, #3d2b1f);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);min-width:140px;padding:.25rem 0;z-index:200}.app-nav__dropdown:hover .app-nav__dropdown-menu,.app-nav__dropdown:focus-within .app-nav__dropdown-menu{display:block}.app-nav__dropdown-link{display:block;width:100%;padding:.5rem 1rem;font-size:var(--size-sm);color:var(--text-muted, #a09070);background:none;border:none;text-align:left;cursor:pointer;font-family:var(--font-body);text-decoration:none}.app-nav__dropdown-link:hover{background:#ffffff0f;color:var(--text);text-decoration:none}.app-footer{border-top:1px solid var(--border);padding:1rem 1.5rem;text-align:center}.app-footer__text{font-size:var(--size-xs);color:var(--text-muted, #a09070)}.page{padding-bottom:3rem}.page__title{font-size:var(--size-3xl);margin-bottom:1.5rem;font-family:var(--font-heading)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.6rem 1.25rem;border-radius:var(--radius-md);font-family:var(--font-body);font-size:var(--size-base);font-weight:600;cursor:pointer;border:none;transition:opacity .15s,background-color .15s;text-decoration:none}.btn:hover{text-decoration:none;opacity:.9}.btn--primary{background-color:var(--accent);color:#fff}.btn--secondary{background-color:transparent;border:1.5px solid var(--accent);color:var(--accent)}.btn--danger{background-color:#b03030;color:#fff}.btn--ghost{background-color:transparent;color:var(--text-muted, #a09070);border:none}.btn--ghost:hover{color:var(--text)}.btn--sm{padding:.35rem .75rem;font-size:var(--size-sm)}.btn--disabled{opacity:.5;cursor:not-allowed}.loading{text-align:center;padding:3rem;color:var(--text-muted, #a09070);font-style:italic}.error{color:#e05050;padding:1rem;border:1px solid rgba(224,80,80,.3);border-radius:var(--radius-md);margin:1rem 0}.spinner{display:inline-block;width:24px;height:24px;border:3px solid rgba(255,255,255,.2);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.reading-pile{position:relative;width:100%;max-width:900px;margin:0 auto}.reading-pile__label{font-family:var(--font-heading);font-size:var(--size-xxl);color:var(--text);text-align:center;padding:1rem 0 0;letter-spacing:.1em;text-transform:uppercase;opacity:.6;position:relative;z-index:2}.reading-pile__scene{position:relative;width:100%;min-height:560px;display:flex;justify-content:center;align-items:flex-end;padding-bottom:160px;overflow:visible}.reading-pile__floor{position:absolute;bottom:0;left:50%;transform:translate(-50%);width:100vw;height:160px;background:url(/textures/shelf-walnut-plank.png) repeat;background-size:160px 160px;filter:brightness(.32) saturate(.45);z-index:0}.reading-pile__chair-area{position:relative;width:400px;z-index:1;display:flex;flex-direction:column;align-items:center}.reading-pile__empty-msg{position:absolute;top:30%;left:50%;transform:translate(-50%);z-index:15;font-family:var(--font-heading);font-size:var(--size-base);font-style:italic;color:var(--text-muted, #a09070);text-align:center;padding:1rem;max-width:260px}.armchair{position:relative;width:400px;height:360px;margin:0 auto}.armchair__back{position:absolute;bottom:160px;left:50px;right:50px;height:190px;background:linear-gradient(180deg,#2a4a32,#1e3a26 40%,#1a3020);border-radius:100px 100px 0 0;box-shadow:inset 0 -20px 40px #0000004d,inset 0 10px 20px #ffffff0a;background-image:radial-gradient(circle at 25% 30%,rgba(0,0,0,.12) 4px,transparent 4px),radial-gradient(circle at 50% 25%,rgba(0,0,0,.12) 4px,transparent 4px),radial-gradient(circle at 75% 30%,rgba(0,0,0,.12) 4px,transparent 4px),radial-gradient(circle at 37% 55%,rgba(0,0,0,.12) 4px,transparent 4px),radial-gradient(circle at 63% 55%,rgba(0,0,0,.12) 4px,transparent 4px),radial-gradient(circle at 25% 75%,rgba(0,0,0,.1) 4px,transparent 4px),radial-gradient(circle at 50% 70%,rgba(0,0,0,.1) 4px,transparent 4px),radial-gradient(circle at 75% 75%,rgba(0,0,0,.1) 4px,transparent 4px);z-index:1}.armchair__seat{position:absolute;bottom:110px;left:40px;right:40px;height:60px;background:linear-gradient(180deg,#2e5038,#1e3828 60%,#183020);border-radius:6px 6px 4px 4px;box-shadow:inset 0 4px 8px #ffffff0d,inset 0 -6px 12px #0000004d,0 4px 12px #0006;z-index:3}.armchair__arm{position:absolute;bottom:110px;width:55px;height:160px;background:linear-gradient(180deg,#2a4a32,#1e3a26);border-radius:28px 28px 6px 6px;z-index:20}.armchair__arm--left{left:0;box-shadow:inset 4px 6px 12px #ffffff0d,inset 0 -8px 16px #0000004d,-4px 2px 10px #0000004d}.armchair__arm--right{right:0;box-shadow:inset -4px 6px 12px #ffffff0d,inset 0 -8px 16px #0000004d,4px 2px 10px #0000004d}.armchair__leg--fl,.armchair__leg--fr{position:absolute;width:16px;height:110px;background:linear-gradient(90deg,#5a3a20,#7a5030,#5a3a20);border-radius:3px 3px 5px 5px;z-index:0;bottom:0}.armchair__leg--fl{left:50px}.armchair__leg--fr{right:50px}.armchair__leg--bl,.armchair__leg--br{display:none}.book-pile{position:relative;z-index:10;width:280px;display:flex;flex-direction:column-reverse;align-items:center;margin-bottom:-170px}.book-pile__book{all:unset;display:block;cursor:pointer;position:relative;pointer-events:auto;transition:transform .5s cubic-bezier(.25,.1,.25,1)}.book-pile__book:focus-visible .book{outline:2px solid var(--accent);outline-offset:2px}.book-pile__rotated-book{transform:rotate(-90deg);transform-origin:center center;width:100%;height:100%;display:flex;align-items:center;justify-content:center;pointer-events:none}.book-pile__rotated-book .book{transform-style:preserve-3d;pointer-events:none}.book-pile__rotated-book .book__face{pointer-events:none}.book-pile__book--selected .book-pile__rotated-book,.book-pile__book--selected .book-pile__rotated-book .book,.book-pile__book--selected .book-pile__rotated-book .book__face{pointer-events:auto}.book-pile__rotated-book .book__top{display:none}.book-pile__book--selected .book-pile__rotated-book .book__top{display:block}.book-pile__book .book:hover{animation:none}.book-pile__book--selected{z-index:200!important;transform:translate(300px) rotate(90deg)!important}.book-pile__book--selected .book-pile__rotated-book .book{animation:pile-book-tilt .6s cubic-bezier(.25,.1,.25,1) forwards}@keyframes pile-book-tilt{0%{transform:translateZ(0) rotateY(0) rotateX(0)}to{transform:translateZ(60px) rotateX(-30deg) rotateY(-55deg) rotate(-10deg)}}.book-pile:has(.book-pile__book--selected){z-index:30}.wallpaper--dragons{background-color:var(--wallpaper-color);background-image:url(/textures/wallpaper-lavender-dragons.png);background-size:250px;opacity:.3}@media(prefers-reduced-motion:reduce){.book-pile__book--selected{transform:none!important}}.empty-shelf{text-align:center;padding:4rem 2rem;color:var(--text-muted, #a09070)}.empty-shelf__icon{font-size:3rem;margin-bottom:1rem;opacity:.5}.empty-shelf__message{font-style:italic;font-family:var(--font-heading);font-size:var(--size-lg);max-width:400px;margin:0 auto;line-height:1.5}.upload-area{border:2px dashed var(--border);border-radius:var(--radius-lg);padding:4rem 2rem;text-align:center;cursor:pointer;transition:border-color .2s,background-color .2s;margin-bottom:1rem}.upload-area--dragging{border-color:var(--accent);background-color:#4a7c5914}.upload-area__prompt{display:flex;flex-direction:column;align-items:center;gap:.75rem}.upload-area__icon{font-size:3rem;margin-bottom:.5rem}.upload-area__or{color:var(--text-muted, #a09070);font-size:var(--size-sm)}.upload-area__loading{display:flex;flex-direction:column;align-items:center;gap:1rem;color:var(--text-muted, #a09070)}.upload-area__error{display:flex;flex-direction:column;align-items:center;gap:1rem}.upload-manual-link{text-align:center;margin-top:.5rem}.upload-result{padding:2rem;border:1px solid var(--border);border-radius:var(--radius-lg);display:flex;flex-direction:column;gap:1rem;max-width:480px}.modal-overlay{position:fixed;inset:0;background-color:#000000b3;display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}.modal{background-color:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:2rem;max-width:440px;width:100%;box-shadow:var(--shadow-lg)}.modal__title{font-family:var(--font-heading);font-size:var(--size-xl);margin-bottom:1rem}.modal__message{color:var(--text-muted, #a09070);margin-bottom:1.5rem;line-height:1.5}.modal__actions{display:flex;gap:.75rem;justify-content:flex-end}.search-bar{display:flex;align-items:center;gap:.5rem;background-color:#ffffff0f;border:1px solid var(--border);border-radius:var(--radius-md);padding:.5rem .75rem;margin-bottom:1rem}.search-bar__input{flex:1;background:transparent;border:none;outline:none;color:var(--text);font-family:var(--font-body);font-size:var(--size-base)}.search-bar__input::placeholder{color:var(--text-muted, #a09070)}.search-bar__clear{background:transparent;border:none;color:var(--text-muted, #a09070);cursor:pointer;font-size:var(--size-base);padding:0 .25rem}.search-bar__clear:hover{color:var(--text)}.search-hint,.search-empty{text-align:center;padding:3rem;color:var(--text-muted, #a09070);font-style:italic}.search-results{display:flex;flex-direction:column;gap:.5rem;margin-top:1rem}.search-result{padding:1rem;border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;transition:background-color .15s}.search-result:hover{background-color:#ffffff0a}.search-result__title{font-family:var(--font-heading);font-size:var(--size-lg);margin-bottom:.25rem}.search-result__author{color:var(--text-muted, #a09070);font-size:var(--size-sm)}.search-result__year{color:var(--text-muted, #a09070);font-size:var(--size-xs)}.filter-panel{margin-bottom:1rem}.filter-panel__toggle{background:transparent;border:1px solid var(--border);border-radius:var(--radius-md);padding:.4rem .8rem;color:var(--text-muted, #a09070);cursor:pointer;font-size:var(--size-sm);margin-bottom:.5rem}.filter-panel__toggle:hover{color:var(--text)}.filter-panel__body{display:flex;flex-wrap:wrap;gap:1rem;padding:1rem;border:1px solid var(--border);border-radius:var(--radius-md);background-color:#ffffff08}.filter-panel__group{display:flex;flex-direction:column;gap:.25rem}.filter-panel__label{font-size:var(--size-xs);color:var(--text-muted, #a09070);text-transform:uppercase;letter-spacing:.06em}.filter-panel__input{background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);padding:.35rem .5rem;color:var(--text);font-size:var(--size-sm);width:100px}.filter-panel__clear{background:transparent;border:none;color:var(--accent);cursor:pointer;font-size:var(--size-sm);align-self:flex-end}.sort-selector{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.sort-selector__label{font-size:var(--size-sm);color:var(--text-muted, #a09070)}.sort-selector__select{background-color:#ffffff0f;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);padding:.3rem .5rem;font-size:var(--size-sm);cursor:pointer}.format-picker{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.5rem}.format-picker__btn{padding:.4rem .9rem;border:1.5px solid var(--border);border-radius:var(--radius-md);background:transparent;color:var(--text-muted, #a09070);cursor:pointer;font-size:var(--size-sm);transition:border-color .15s,color .15s,background-color .15s}.format-picker__btn:hover{border-color:var(--accent);color:var(--accent)}.format-picker__btn--selected{border-color:var(--accent);background-color:var(--accent);color:#fff}.shelf-mover{display:flex;gap:.5rem;align-items:center;margin-top:.5rem;flex-wrap:wrap}.shelf-mover__select{background-color:#ffffff0f;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);padding:.4rem .6rem;font-size:var(--size-sm);cursor:pointer}.shelf-mover__btn{padding:.4rem .8rem;background-color:var(--accent);border:none;border-radius:var(--radius-md);color:#fff;cursor:pointer;font-size:var(--size-sm);font-weight:600}.isbn-input-wrapper{display:flex;flex-direction:column;gap:.25rem}.isbn-input{padding:.6rem .75rem;background-color:#ffffff0f;border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);font-family:var(--font-mono);font-size:var(--size-base);width:100%;outline:none;transition:border-color .15s}.isbn-input:focus{border-color:var(--accent)}.isbn-input--error{border-color:#e05050}.isbn-input__error{color:#e05050;font-size:var(--size-xs)}@keyframes book-detail-enter{0%{opacity:0;transform:perspective(800px) rotateY(-15deg) scale(.85)}40%{opacity:.7;transform:perspective(800px) rotateY(-5deg) scale(.95)}to{opacity:1;transform:perspective(800px) rotateY(0) scale(1)}}.book-detail-enter{animation:book-detail-enter .5s ease-out}.page--book-detail{--parchment: #f5efe0;--parchment-dark: #e8dcc8;--parchment-text: #2c1f0e;--parchment-muted: #7a6b54;--parchment-border: rgba(44, 31, 14, .12);--parchment-accent: #4a7c59;--parchment-accent-hover: #5a9a6e;--parchment-gold: #c8a24e;--parchment-gold-muted: #b89a4a;--parchment-cream: #faf6ed;--parchment-shadow: rgba(44, 31, 14, .15)}.book-detail__parchment{background-color:var(--parchment);color:var(--parchment-text);border-radius:var(--radius-lg);padding:2.5rem 2rem;box-shadow:0 2px 20px var(--parchment-shadow),inset 0 0 80px #c8b48c26;position:relative;overflow:hidden}.book-detail__parchment:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 30% 20%,rgba(255,248,230,.4) 0%,transparent 60%);pointer-events:none}.book-detail{display:flex;flex-direction:column;gap:0;position:relative}.book-detail__hero{display:flex;gap:2.5rem;padding-bottom:2rem;margin-bottom:0}.book-detail__cover-frame{flex-shrink:0;position:relative;padding:8px;background:linear-gradient(135deg,#d4c4a8,#e8dcc8,#d4c4a8);border-radius:var(--radius-md);box-shadow:4px 6px 20px #2c1f0e40,0 0 0 1px #2c1f0e14}.book-detail__cover{position:relative;overflow:hidden;border-radius:var(--radius-sm)}.book-detail__cover-img{width:240px;height:auto;display:block;border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px #0000001a}.book-detail__cover-placeholder{width:240px;height:360px;background:linear-gradient(145deg,#3d2b1f,#5c4232);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center}.book-detail__cover-placeholder-text{font-family:var(--font-heading);font-size:5rem;color:#e8dcc866;font-weight:700}.book-detail__meta{flex:1;display:flex;flex-direction:column;gap:.5rem;padding-top:.5rem}.book-detail__title{font-size:var(--size-3xl);font-family:var(--font-heading);color:var(--parchment-text);line-height:1.15;letter-spacing:-.01em}.book-detail__author{font-size:var(--size-xl);font-weight:400;color:var(--parchment-muted);font-family:var(--font-heading);font-style:italic}.book-detail__meta-details{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.book-detail__meta-item{font-size:var(--size-sm);color:var(--parchment-muted);padding:.2rem .6rem;background-color:#2c1f0e0d;border-radius:var(--radius-sm);border:1px solid var(--parchment-border)}.book-detail__isbn{font-size:var(--size-sm);color:var(--parchment-muted);font-family:var(--font-mono);margin-top:.25rem}.book-detail__formats{margin-top:.75rem;padding:0;border-top:none}.book-detail__section{padding:2rem 0;border-top:1px solid var(--parchment-border)}.book-detail__section-title{font-family:var(--font-heading);font-size:var(--size-xxl);color:var(--parchment-text);margin-bottom:1rem;letter-spacing:.01em}.book-detail__about{background-color:var(--parchment-cream);margin-left:-2rem;margin-right:-2rem;padding-left:2rem;padding-right:2rem;border-top:1px solid var(--parchment-border);border-bottom:1px solid var(--parchment-border)}.book-detail__about-body{max-width:680px}.book-detail__about-text{font-size:var(--size-base);line-height:1.85;color:var(--parchment-text)}.book-detail__about-text--empty{color:var(--parchment-muted);font-style:italic}.book-detail__reviews-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.book-detail__review-card{background-color:#2c1f0e0a;border:1px solid var(--parchment-border);border-radius:var(--radius-lg);padding:1.25rem;transition:border-color .2s,box-shadow .2s}.book-detail__review-card:hover{border-color:#2c1f0e33;box-shadow:0 2px 8px var(--parchment-shadow)}.book-detail__review-card--goodreads{border-left:3px solid #553b08}.book-detail__review-card--storygraph{border-left:3px solid #4a7c59}.book-detail__review-card--reddit{border-left:3px solid #c8603c}.book-detail__review-header{margin-bottom:.75rem}.book-detail__review-source{font-family:var(--font-heading);font-size:var(--size-base);font-weight:700;color:var(--parchment-text)}.book-detail__review-body{font-size:var(--size-sm)}.book-detail__prices-grid{display:flex;flex-direction:column;gap:.75rem}.book-detail__author-info{display:flex;gap:1.25rem;align-items:flex-start}.book-detail__author-avatar{width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#3d2b1f,#5c4232);display:flex;align-items:center;justify-content:center;flex-shrink:0}.book-detail__author-initial{font-family:var(--font-heading);font-size:var(--size-xxl);color:var(--parchment-dark);font-weight:700}.book-detail__author-details{flex:1;display:flex;flex-direction:column;gap:.5rem}.book-detail__author-name{font-family:var(--font-heading);font-size:var(--size-lg);font-weight:700;color:var(--parchment-text)}.book-detail__author-bio{font-size:var(--size-sm);color:var(--parchment-muted);line-height:1.6}.book-detail__writing-body{display:flex;flex-direction:column;gap:1rem;align-items:flex-start}.book-detail__shelf-actions{padding:2rem 0;border-top:1px solid var(--parchment-border)}.book-detail__danger-zone{padding:1.5rem 0 0;border-top:1px solid var(--parchment-border)}.book-detail__rating{margin-top:.5rem;font-size:var(--size-sm);color:var(--parchment-ink, #3a2e1e)}.book-detail__rating--empty{color:var(--parchment-muted, var(--text-muted, #a09070));font-style:italic}.book-detail__review-icon{width:1.5rem;height:1.5rem;border-radius:50%;background-color:var(--parchment-border, #c4b69c);flex-shrink:0}.book-detail__review-sentiment{height:.5rem;border-radius:.25rem;background-color:var(--parchment-border, #c4b69c);margin-top:.5rem}.book-detail__prices-list{display:flex;flex-direction:column;gap:.5rem}.book-detail__prices-empty{color:var(--parchment-muted, var(--text-muted, #a09070));font-style:italic;font-size:var(--size-sm)}.book-detail__author-link{display:inline-block;margin-top:.5rem;color:var(--link-color, #6b4e2e);text-decoration:underline;font-size:var(--size-sm)}.book-detail__author-link:hover{color:var(--link-hover, #4a351f)}.book-detail__writing-list{display:flex;flex-direction:column;gap:.5rem}.stub-notice{color:var(--parchment-muted, var(--text-muted, #a09070));font-style:italic;font-size:var(--size-sm)}.book-detail__formats .format-picker{gap:.5rem;margin-top:0}.book-detail__formats .format-picker__btn{border-color:var(--parchment-border);color:var(--parchment-muted);background-color:transparent;display:inline-flex;align-items:center;gap:.35rem}.book-detail__formats .format-picker__btn:hover{border-color:var(--parchment-accent);color:var(--parchment-accent)}.book-detail__formats .format-picker__btn--selected{border-color:var(--parchment-accent);background-color:var(--parchment-accent);color:#fff}.format-picker__icon{font-size:var(--size-xs);font-family:var(--font-mono);letter-spacing:-.05em}.format-picker__label{font-size:var(--size-sm)}.shelf-mover__label{font-size:var(--size-sm);color:var(--text-muted, #a09070)}.book-detail__shelf-actions .shelf-mover{flex-wrap:wrap}.book-detail__shelf-actions .shelf-mover__label{font-family:var(--font-heading);font-size:var(--size-sm);color:var(--parchment-muted);font-style:italic}.book-detail__shelf-actions .shelf-mover__select{background-color:var(--parchment-cream);border:1px solid var(--parchment-border);color:var(--parchment-text);font-family:var(--font-heading);border-radius:var(--radius-sm);padding:.5rem .75rem;font-size:var(--size-sm);box-shadow:1px 2px 4px #2c1f0e1a}.book-detail__shelf-actions .shelf-mover__btn{background-color:var(--parchment-accent);color:#fff}.book-detail__parchment .btn--secondary{border-color:var(--parchment-accent);color:var(--parchment-accent);background-color:transparent}.book-detail__parchment .btn--secondary:hover{background-color:var(--parchment-accent);color:#fff}.book-detail__parchment .btn--danger{background-color:#b03030;color:#fff}.book-detail__parchment .btn--ghost{color:var(--parchment-muted)}.book-detail__parchment .btn--ghost:hover{color:var(--parchment-text)}.settings-section{padding:1.5rem 0;border-bottom:1px solid var(--border)}.settings-section__title{font-family:var(--font-heading);font-size:var(--size-xl);margin-bottom:.5rem}.settings-section__desc{color:var(--text-muted, #a09070);font-size:var(--size-sm);margin-bottom:1rem}.settings-actions{padding-top:1.5rem}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:1rem}.toggle-row__label{font-size:var(--size-base)}.toggle{padding:.4rem 1rem;border-radius:999px;border:1.5px solid var(--border);cursor:pointer;font-size:var(--size-sm);font-weight:600;transition:background-color .2s,border-color .2s}.toggle--on{background-color:var(--accent);border-color:var(--accent);color:#fff}.toggle--off{background-color:transparent;color:var(--text-muted, #a09070)}.consent-banner{position:fixed;bottom:0;left:0;right:0;background-color:var(--shelf-bg, #3d2b1f);border-top:1px solid var(--border);padding:1rem 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;z-index:50;flex-wrap:wrap}.consent-banner__text{font-size:var(--size-sm);flex:1}.consent-banner__link{color:var(--accent)}.consent-banner__actions{display:flex;gap:.5rem}.page--home{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;min-height:60vh}.home__title{font-size:var(--size-4xl);font-family:var(--font-heading);margin-bottom:.75rem}.home__subtitle{color:var(--text-muted, #a09070);font-size:var(--size-lg);margin-bottom:2.5rem;font-style:italic}.home__actions{display:flex;gap:1rem;flex-wrap:wrap;justify-content:center}.page--not-found{text-align:center;padding:4rem 2rem}.page--not-found h1{font-size:var(--size-3xl);margin-bottom:1rem}.page--not-found p{color:var(--text-muted, #a09070);margin-bottom:2rem}@keyframes slide-in-left{0%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slide-in-right{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slide-out-left{0%{transform:translate(0);opacity:1}to{transform:translate(-100%);opacity:0}}@keyframes slide-out-right{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}.slide-in-left{animation:slide-in-left .3s ease-out}.slide-in-right{animation:slide-in-right .3s ease-out}.slide-out-left{animation:slide-out-left .3s ease-in}.slide-out-right{animation:slide-out-right .3s ease-in}@media(max-width:768px){.app-header{flex-direction:column;align-items:flex-start}.app-nav__list{flex-wrap:wrap;gap:.15rem}.app-nav__link{font-size:var(--size-xs);padding:.3rem .6rem}.book-detail__hero{flex-direction:column;align-items:center;text-align:center}.book-detail__parchment{padding:1.5rem 1rem;border-radius:var(--radius-md)}.book-detail__cover-img{width:180px}.book-detail__cover-placeholder{width:180px;height:270px}.book-detail__meta-details{justify-content:center}.book-detail__about{margin-left:-1rem;margin-right:-1rem;padding-left:1rem;padding-right:1rem}.book-detail__reviews-grid{grid-template-columns:1fr}.book-detail__author-info{flex-direction:column;align-items:center;text-align:center}.modal{margin:1rem}.home__title{font-size:var(--size-xxl)}}.page--costs{padding-bottom:4rem}.curator-desk{max-width:960px;margin:0 auto}.costs__title{font-size:var(--size-4xl);font-family:var(--font-heading);letter-spacing:.01em;margin-bottom:.5rem}.costs__subtitle{color:var(--text-muted, #a09070);font-style:italic;font-family:var(--font-heading);font-size:var(--size-lg);margin-bottom:2.5rem}.costs__banner{background:linear-gradient(135deg,#2a1f14,#3d2b1f);border:1px solid var(--border);border-radius:var(--radius-lg);padding:2rem 2.5rem;margin-bottom:3rem;text-align:center;box-shadow:var(--shadow-md)}.costs__banner-total{display:flex;flex-direction:column;align-items:center;gap:.25rem;margin-bottom:1.25rem}.costs__banner-label{font-size:var(--size-sm);color:var(--text-muted, #a09070);text-transform:uppercase;letter-spacing:.1em;font-weight:600}.costs__banner-amount{font-family:var(--font-heading);font-size:3.5rem;font-weight:700;color:var(--text);line-height:1.1}.costs__banner-formula{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:.5rem;padding-top:1rem;border-top:1px solid var(--border)}.costs__banner-term{font-family:var(--font-mono);font-size:var(--size-sm);color:var(--text-muted, #a09070);background-color:#ffffff0a;padding:.25rem .6rem;border-radius:var(--radius-sm);border:1px solid var(--border)}.costs__banner-plus{color:var(--text-muted, #a09070);font-size:var(--size-sm);opacity:.6}.costs__section-title{font-family:var(--font-heading);font-size:var(--size-xxl);margin-bottom:1.25rem;color:var(--text)}.costs__content{display:flex;flex-direction:column;gap:0}.costs__stories{margin-bottom:3rem}.costs__story-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.25rem}.costs__story-card{background:linear-gradient(145deg,#3d2b1f99,#2a1f14cc);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.5rem;display:flex;flex-direction:column;gap:.75rem;transition:border-color .2s,box-shadow .2s}.costs__story-card:hover{border-color:#ffffff26;box-shadow:var(--shadow-sm)}.costs__story-title{font-family:var(--font-heading);font-size:var(--size-xl);color:var(--text)}.costs__story-text{font-size:var(--size-sm);color:var(--text-muted, #a09070);line-height:1.6;flex:1}.costs__story-cost{font-family:var(--font-mono);font-size:var(--size-lg);color:var(--accent);font-weight:700;padding-top:.5rem;border-top:1px solid var(--border)}.costs__categories{margin-bottom:3rem}.costs__category-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.25rem}.costs__category-card{background-color:#ffffff06;border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;transition:border-color .2s}.costs__category-card:hover{border-color:#ffffff26}.costs__category-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;background-color:#ffffff08;border-bottom:1px solid var(--border)}.costs__category-name{font-family:var(--font-heading);font-size:var(--size-lg);color:var(--text)}.costs__category-total{font-family:var(--font-mono);font-size:var(--size-base);color:var(--accent);font-weight:700}.costs__category-items{padding:.5rem 0}.costs__service-item{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:.15rem 1rem;padding:.75rem 1.25rem;border-bottom:1px solid rgba(255,255,255,.04)}.costs__service-item:last-child{border-bottom:none}.costs__service-name{font-size:var(--size-sm);font-weight:600;color:var(--text);grid-column:1;grid-row:1}.costs__service-desc{font-size:var(--size-xs);color:var(--text-muted, #a09070);grid-column:1;grid-row:2;line-height:1.4}.costs__service-amount{font-family:var(--font-mono);font-size:var(--size-sm);color:var(--text);grid-column:2;grid-row:1 / 3;align-self:center;text-align:right}.costs__trend{margin-bottom:3rem}.costs__chart{display:flex;align-items:flex-end;gap:1rem;height:200px;padding:1rem 0;border-bottom:2px solid var(--border)}.costs__bar-group{flex:1;display:flex;flex-direction:column;align-items:center;gap:.5rem;height:100%;justify-content:flex-end}.costs__bar{width:100%;max-width:60px;background:linear-gradient(to top,var(--accent),var(--accent-hover, #5a9a6e));border-radius:var(--radius-sm) var(--radius-sm) 0 0;min-height:4px;transition:height .4s ease-out}.costs__bar-label{font-size:var(--size-xs);color:var(--text-muted, #a09070);white-space:nowrap}.costs__bar-amount{font-family:var(--font-mono);font-size:var(--size-xs);color:var(--text)}.costs__philosophy{border-top:1px solid var(--border);padding-top:2rem;margin-top:1rem}.costs__philosophy-text{font-family:var(--font-heading);font-style:italic;font-size:var(--size-base);color:var(--text-muted, #a09070);line-height:1.8;max-width:700px;text-align:center;margin:0 auto}@media(max-width:768px){.costs__banner{padding:1.5rem 1rem}.costs__banner-amount{font-size:2.5rem}.costs__story-grid,.costs__category-grid{grid-template-columns:1fr}.costs__chart{height:160px;gap:.5rem}}@media(max-width:480px){.app__main{padding:1rem}.pile-view__book{width:100px}.pile-view__cover{width:100px;height:140px}}.page--login{position:relative;width:100%;height:100vh;overflow:hidden;background:#0a0806}.layer-arrival{position:fixed;inset:0;z-index:0;background:#f5eed6;will-change:opacity;transform:translateZ(0)}.layer-passage{position:fixed;inset:-10%;z-index:1;background:url(/textures/passage-beyond.png) center/cover no-repeat;will-change:transform,opacity;transform:translateZ(0) scale(1.05);opacity:0}.layer-passage-bright{position:fixed;inset:0;z-index:2;background:radial-gradient(ellipse at 50% 50%,rgba(255,230,170,.5) 0%,rgba(255,210,130,.2) 50%,transparent 80%);will-change:opacity;transform:translateZ(0);opacity:0}.layer-bookshelf{position:fixed;inset:-5%;z-index:3;background:url(/textures/bookshelf-wide-panoramic.png) center/cover no-repeat;will-change:transform,opacity;transform:translateZ(0) scale(1);transform-origin:50% 45%}.layer-bookshelf-dim{position:fixed;inset:0;z-index:4;background:#0a080673;will-change:opacity;transform:translateZ(0)}.layer-vignette{position:fixed;inset:0;z-index:5;background:radial-gradient(ellipse at 50% 50%,transparent 20%,rgba(10,8,6,.5) 100%);will-change:opacity;transform:translateZ(0)}.layer-wash{position:fixed;inset:0;z-index:6;background:#f5eed6;will-change:opacity;transform:translateZ(0);opacity:0;pointer-events:none}.login-overlay{position:fixed;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;will-change:transform,opacity;transform:translateZ(0)}.login-card{max-width:380px;width:90%;background:linear-gradient(145deg,#f5eed6,#e8dcc0);border-radius:4px;padding:2.5rem 2rem 2rem;color:#2c1f0e;box-shadow:0 8px 32px #00000080,0 2px 8px #0000004d,inset 0 1px #ffffff4d;position:relative}.login-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#8b4513,sienna,#8b4513);border-radius:4px 4px 0 0}.login-card__title{font-family:var(--font-heading);font-size:1.8rem;font-weight:600;text-align:center;margin-bottom:.25rem;letter-spacing:.06em}.login-card__subtitle{font-family:var(--font-heading);font-style:italic;font-size:.95rem;color:#6b5a45;text-align:center;margin-bottom:1.75rem}.login-card__tabs{display:flex;border-bottom:1px solid #c8b89a;margin-bottom:1.25rem}.login-card__tab{flex:1;padding:.5rem;border:none;background:transparent;color:#8b7a65;font-family:var(--font-heading);font-size:1rem;cursor:pointer;border-bottom:2px solid transparent;transition:all .3s}.login-card__tab:hover{color:#2c1f0e}.login-card__tab--active{color:#5c3a1e;border-bottom-color:#8b4513}.login-card__field{margin-bottom:1.25rem}.login-card__label{display:block;font-family:var(--font-heading);font-size:.8rem;color:#6b5a45;letter-spacing:.1em;text-transform:uppercase;margin-bottom:.4rem}.login-card__input{width:100%;padding:.7rem .75rem;background:#ffffff80;border:1px solid #c8b89a;border-radius:3px;color:#2c1f0e;font-family:var(--font-body);font-size:1rem;transition:border-color .3s,box-shadow .3s}.login-card__input::placeholder{color:#a09580;font-style:italic}.login-card__input:focus{outline:none;border-color:#8b4513;box-shadow:0 0 0 2px #8b451326}.login-card__error{color:#9b2c2c;font-family:var(--font-heading);font-style:italic;font-size:var(--size-sm);padding:.75rem 1rem;margin-bottom:1rem;background-color:#9b2c2c14;border:1px solid rgba(155,44,44,.2);border-radius:3px;line-height:1.5}.login-card__submit{width:100%;padding:.75rem;margin-top:.5rem;border:1px solid #5c3a1e;border-radius:3px;background:linear-gradient(135deg,#5c3a1e,#3d2610);color:#f5eed6;font-family:var(--font-heading);font-size:1.05rem;letter-spacing:.06em;cursor:pointer;transition:all .3s}.login-card__submit:hover:not(:disabled){background:linear-gradient(135deg,#6b4525,#4a2e15);box-shadow:0 2px 12px #5c3a1e4d}.login-card__submit:disabled{opacity:.5;cursor:not-allowed}.login-card__field--valid .login-card__input{border-color:#6b7c3f}.login-card__field--error .login-card__input{border-color:#9b6930}.login-card__hint{font-size:.8rem;margin-top:.3rem;font-style:italic}.login-card__hint--error{color:#9b6930}.login-card__hint--valid{color:#6b7c3f}.login-card__submit .spinner--small{width:18px;height:18px;border-width:2px;margin:0 auto}.app-nav__user{display:block;padding:.4rem .8rem;font-size:var(--size-sm);color:var(--text-muted, #a09070);font-style:italic;font-family:var(--font-heading)}@media(max-width:768px){.login-card{width:95%;padding:2rem 1.5rem 1.5rem}}@media(max-width:480px){.login-card{padding:1.5rem 1rem 1rem}.login-card__title{font-size:1.5rem}}.page--catalogue{padding-bottom:4rem}.catalogue__title{font-size:var(--size-4xl);font-family:var(--font-heading);letter-spacing:.01em;margin-bottom:.25rem}.catalogue__subtitle{color:var(--text-muted, #a09070);font-style:italic;font-family:var(--font-heading);font-size:var(--size-lg);margin-bottom:2rem}.catalogue__controls{display:flex;flex-direction:column;gap:.75rem;margin-bottom:2rem}.catalogue__filters{display:flex;gap:1rem;align-items:center;flex-wrap:wrap}.catalogue__subject-filter{display:flex;align-items:center;gap:.5rem}.catalogue__subject-select{background-color:#ffffff0f;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);padding:.3rem .5rem;font-size:var(--size-sm);cursor:pointer}.catalogue__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1.5rem;margin-bottom:2rem}.catalogue__card{display:flex;flex-direction:column;background:linear-gradient(145deg,#3d2b1f66,#2a1f1499);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;transition:border-color .2s,box-shadow .2s,transform .15s;text-decoration:none;color:var(--text)}.catalogue__card:hover{border-color:#ffffff26;box-shadow:var(--shadow-md);transform:translateY(-4px);text-decoration:none}.catalogue__card-cover{width:100%;height:260px;object-fit:cover;display:block}.catalogue__card-cover-placeholder{width:100%;height:260px;background:linear-gradient(135deg,var(--shelf-bg),rgba(61,43,31,.8));display:flex;align-items:center;justify-content:center;font-family:var(--font-heading);font-size:4rem;color:var(--text-muted, #a09070);opacity:.4}.catalogue__card-info{padding:1rem;display:flex;flex-direction:column;gap:.25rem;flex:1}.catalogue__card-title{font-family:var(--font-heading);font-size:var(--size-base);font-weight:700;line-height:1.3;color:var(--text);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.catalogue__card-author{font-size:var(--size-sm);color:var(--text-muted, #a09070);font-style:italic}.catalogue__card-subjects{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.5rem}.catalogue__subject-chip{display:inline-block;padding:.15rem .5rem;background-color:#ffffff0f;border:1px solid var(--border);border-radius:999px;font-size:var(--size-xs);color:var(--text-muted, #a09070);white-space:nowrap}.catalogue__empty{text-align:center;padding:4rem 2rem;color:var(--text-muted, #a09070);font-style:italic;font-family:var(--font-heading);font-size:var(--size-lg)}.catalogue__pagination{display:flex;align-items:center;justify-content:center;gap:1.5rem;padding:1.5rem 0;border-top:1px solid var(--border)}.catalogue__page-info{font-size:var(--size-sm);color:var(--text-muted, #a09070);font-family:var(--font-heading)}@media(max-width:768px){.catalogue__grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1rem}.catalogue__card-cover,.catalogue__card-cover-placeholder{height:200px}.catalogue__filters{flex-direction:column;align-items:stretch}}@media(max-width:480px){.catalogue__grid{grid-template-columns:repeat(2,1fr);gap:.75rem}.catalogue__card-cover,.catalogue__card-cover-placeholder{height:160px}.catalogue__card-info{padding:.75rem}.catalogue__card-title{font-size:var(--size-sm)}}.catalogue__collection-filter{display:flex;gap:.5rem}.catalogue__filter-btn{padding:.35rem .75rem;border:1px solid var(--border, rgba(255, 255, 255, .1));border-radius:var(--radius-sm, .25rem);background:transparent;color:var(--text-muted, #a09070);font-size:.8rem;cursor:pointer;transition:background-color .15s,color .15s,border-color .15s}.catalogue__filter-btn:hover{border-color:#fff3;color:var(--text, #e8dcc8)}.catalogue__filter-btn--active{background-color:#ffffff1a;border-color:#fff3;color:var(--text, #e8dcc8)}.catalogue__card-link{display:block;text-decoration:none;color:inherit;flex:1}.catalogue__card-badge{display:inline-block;padding:.25rem .75rem;margin:.5rem .75rem;font-size:.75rem;font-style:italic;color:#6b4e2e;background-color:wheat;border-radius:.25rem}.catalogue__card-add{display:block;width:calc(100% - 1.5rem);margin:.5rem .75rem;padding:.35rem;border:1px dashed var(--parchment-border, #c4b69c);border-radius:.25rem;background:transparent;color:var(--text-muted, #a09070);font-size:.8rem;cursor:pointer;text-align:center;transition:border-color .2s,color .2s}.catalogue__card-add:hover,.catalogue__card-add:focus{border-color:var(--link-color, #6b4e2e);color:var(--link-color, #6b4e2e);outline:2px solid transparent}.catalogue__card-picker{padding:.5rem .75rem;display:flex;flex-direction:column;gap:.25rem}.catalogue__card-picker-option{display:block;width:100%;padding:.3rem .5rem;border:1px solid var(--parchment-border, #c4b69c);border-radius:.25rem;background:transparent;color:var(--parchment-ink, #3a2e1e);font-size:.8rem;cursor:pointer;text-align:left;transition:background-color .15s}.catalogue__card-picker-option:hover,.catalogue__card-picker-option:focus{background-color:var(--parchment-border, #c4b69c);outline:2px solid transparent}.page--shelf{position:relative;overflow-x:hidden}.shelf-room{position:relative;z-index:1;width:100%;max-width:100%;overflow:visible}:root{--book-max-h: 290px;--book-depth: 160px;--plank-h: 18px;--plank-lip: 10px;--side-w: 24px}.bookcase{position:relative;z-index:5;max-width:1060px;width:100%;margin:0 auto;overflow:visible}.bookcase__side{position:absolute;top:0;bottom:0;width:var(--side-w);background:url(/textures/shelf-walnut-plank.png) repeat;background-size:160px 160px;filter:brightness(.3) saturate(.4);z-index:60}.bookcase__side--left{left:0}.bookcase__side--right{right:0}.bookcase__side--left:after,.bookcase__side--right:after{content:"";position:absolute;top:0;bottom:0;width:6px}.bookcase__side--left:after{right:0;background:linear-gradient(90deg,transparent,rgba(0,0,0,.3))}.bookcase__side--right:after{left:0;background:linear-gradient(270deg,transparent,rgba(0,0,0,.3))}.bookcase__inner{margin:0 var(--side-w)}.shelf-row{position:relative;padding-bottom:calc(var(--plank-h) + var(--plank-lip));transform-style:flat;isolation:isolate}.shelf-row__back{position:absolute;top:0;left:0;right:0;bottom:calc(var(--plank-h) + var(--plank-lip));background:url(/textures/shelf-walnut-plank.png) repeat;background-size:160px 160px;filter:brightness(.32) saturate(.45);box-shadow:inset 0 4px 20px #00000080,inset 0 -8px 20px #b48c500a}.shelf-row__books{position:relative;min-height:var(--book-max-h);display:flex;align-items:flex-end;flex-wrap:wrap;padding:0 8px;z-index:10;perspective:800px}.shelf-row__plank{position:absolute;bottom:var(--plank-lip);left:calc(-1 * var(--side-w));right:calc(-1 * var(--side-w));height:var(--plank-h);background:url(/textures/shelf-walnut-plank.png) repeat-x;background-size:auto 100%;filter:brightness(.38) saturate(.45);z-index:60}.shelf-row__plank:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent 5%,rgba(255,220,160,.08) 30%,rgba(255,220,160,.12) 50%,rgba(255,220,160,.08) 70%,transparent 95%)}.shelf-row__lip{position:absolute;bottom:0;left:calc(-1 * var(--side-w));right:calc(-1 * var(--side-w));height:var(--plank-lip);background:url(/textures/shelf-walnut-plank.png) repeat-x;background-size:auto 100%;filter:brightness(.25) saturate(.4);z-index:60}.book{position:relative;flex-shrink:0;margin-left:1px;transform-style:preserve-3d;transform:translateZ(0) rotateY(0) rotateX(0) rotate(0);cursor:pointer;transition:transform .5s cubic-bezier(.25,.1,.25,1)}.book:hover{z-index:50;animation:book-pull-out .8s cubic-bezier(.25,.1,.25,1) forwards}@keyframes book-pull-out{0%{transform:translateZ(0) rotateY(0) rotateX(0) rotate(0)}35%{transform:translateZ(40px) rotateY(-2deg) rotateX(0) rotate(0)}to{transform:translateZ(50px) rotateX(-25deg) rotateY(-40deg) rotate(-15deg)}}.book__face{position:absolute;border:1px solid rgba(0,0,0,.25);border-radius:2px}.book__spine{width:100%;height:100%;background-size:cover;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;transform:rotateY(0) translateZ(0)}.book__spine:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,255,255,.06) 0%,transparent 15%,transparent 65%,rgba(0,0,0,.12) 88%,rgba(0,0,0,.2) 100%);pointer-events:none;z-index:2}.book__band{position:absolute;left:3px;right:3px;height:1.5px;background:linear-gradient(90deg,transparent 5%,rgba(255,255,255,.1) 30%,rgba(255,255,255,.12) 50%,rgba(255,255,255,.1) 70%,transparent 95%);box-shadow:0 1px #0000001f;z-index:1}.book__title{writing-mode:vertical-rl;text-orientation:mixed;font-family:var(--font-heading);font-size:11px;font-weight:600;letter-spacing:.03em;line-height:1.15;overflow:hidden;flex:1;padding:12px 3px 6px;z-index:3}.book__author{writing-mode:vertical-rl;text-orientation:mixed;font-family:var(--font-heading);font-size:8px;letter-spacing:.06em;padding:4px 3px 8px;z-index:3;opacity:.6}.book__top{width:100%;background:repeating-linear-gradient(90deg,#ede3cc 0px 1px,#e5d9c0 1px 2px)}.book__cover{height:100%;background-size:cover;transform-origin:left center}.book__cover:after{content:"";position:absolute;top:0;left:0;width:15px;height:100%;background:linear-gradient(90deg,rgba(0,0,0,.3),transparent)}.shelf-row--empty .shelf-row__books,.shelf-row__books--message{justify-content:center;align-items:center}.shelf-row__empty-text{font-family:var(--font-heading);font-size:var(--size-base);font-style:italic;color:var(--text-muted, #a09070);text-align:center;padding:2rem 1.5rem;opacity:.7}.book-button{all:unset;display:inline-block;cursor:pointer}@media(prefers-reduced-motion:reduce){.book{transition:none}.book:hover{animation:none}}.wallpaper{position:absolute;inset:0;z-index:0;pointer-events:none}.wallpaper--damask{background-color:var(--wallpaper-color);background-image:url(/textures/wallpaper-damask-green.png);background-size:200px;opacity:.3}.wallpaper--botanical{background-color:var(--wallpaper-color);background-image:url(/textures/wallpaper-botanical-cream.png);background-size:200px;opacity:.35}.wallpaper--floral{background-color:var(--wallpaper-color);background-image:url(/textures/wallpaper-floral-watercolour.png);background-size:200px;opacity:.3}.wallpaper--forest{background-color:var(--wallpaper-color);background-image:url(/textures/wallpaper-baby-blue-forest.png);background-size:250px;opacity:.4}.lighting{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 15%,rgba(255,200,100,.25) 0%,rgba(255,180,80,.08) 40%,transparent 75%);pointer-events:none;z-index:70;mix-blend-mode:soft-light}.shelf-label{font-family:var(--font-heading);font-size:var(--size-xxl);color:var(--text);text-align:center;padding:1rem 0;letter-spacing:.1em;text-transform:uppercase;opacity:.6;position:relative;z-index:2}.empty-msg{text-align:center;padding:3rem 2rem;color:var(--text-muted);font-style:italic;font-family:var(--font-heading);font-size:var(--size-lg)}.book-overlay{position:fixed;inset:0;z-index:98}.book-overlay__backdrop{position:fixed;inset:0;background:#0009;z-index:99}.book-overlay__content{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:2rem;max-width:480px;width:90%;z-index:100;box-shadow:var(--shadow-lg)}.book-overlay__title{font-family:var(--font-heading);font-size:var(--size-xl);margin-bottom:.5rem}.book-overlay__author{font-family:var(--font-heading);font-style:italic;color:var(--text-muted);margin-bottom:1rem}.book-overlay__close{display:block;margin-top:1.5rem;padding:.5rem 1.5rem;background:var(--accent);color:var(--text);border:none;border-radius:var(--radius-md);cursor:pointer;font-family:var(--font-body);font-size:var(--size-sm)}.book-overlay__close:hover{background:var(--accent-hover)}.skip-link{position:absolute;top:-100%;left:0;padding:.75rem 1.5rem;background:var(--accent);color:var(--bg);font-family:var(--font-body);font-size:var(--size-base);font-weight:600;z-index:10000;text-decoration:none;border-radius:0 0 var(--radius-md) 0}.skip-link:focus{top:0;outline:2px solid var(--text);outline-offset:2px}.view-mode-toggle{display:flex;gap:.25rem;align-items:center}.view-mode-toggle__btn{background:none;border:1px solid var(--border);color:var(--text-muted);padding:.375rem .5rem;cursor:pointer;border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--size-sm);line-height:1}.view-mode-toggle__btn--active{background:var(--accent);color:var(--text);border-color:var(--accent)}.view-mode-toggle__btn:hover:not(.view-mode-toggle__btn--active){border-color:var(--text-muted)}.book-list{width:100%;border-collapse:collapse;font-family:var(--font-body);font-size:var(--size-sm)}.book-list th{text-align:left;padding:.5rem .75rem;border-bottom:2px solid var(--border);font-family:var(--font-heading);font-size:var(--size-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);cursor:pointer;user-select:none;white-space:nowrap}.book-list th:hover{color:var(--text)}.book-list__sort-indicator{margin-left:.25rem;font-size:var(--size-xs)}.book-list td{padding:.5rem .75rem;border-bottom:1px solid var(--border);vertical-align:middle}.book-list__row{cursor:pointer;transition:background-color .15s ease}.book-list__row:hover{background-color:#ffffff0a}.book-list__formats{display:flex;gap:.25rem}.book-list__format-badge{font-size:var(--size-xs);padding:.125rem .375rem;border-radius:var(--radius-sm);background:#ffffff14;color:var(--text-muted)}.page--admin{padding-bottom:4rem}.admin__title{font-size:var(--size-4xl);font-family:var(--font-heading);letter-spacing:.01em;margin-bottom:.25rem}.admin__subtitle{color:var(--text-muted, #a09070);font-style:italic;font-family:var(--font-heading);font-size:var(--size-lg);margin-bottom:2rem}.admin__empty{text-align:center;padding:3rem 2rem;color:var(--text-muted, #a09070);font-style:italic;font-family:var(--font-heading);font-size:var(--size-lg)}.admin__tabs{display:flex;gap:.5rem;margin-bottom:1.5rem;border-bottom:1px solid var(--border);padding-bottom:.75rem}.admin__tab{padding:.4rem 1rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--text-muted, #a09070);font-size:var(--size-sm);cursor:pointer;font-family:var(--font-heading);transition:background-color .15s,color .15s,border-color .15s}.admin__tab:hover{border-color:#fff3;color:var(--text)}.admin__tab--active{background-color:#ffffff1a;border-color:#fff3;color:var(--text)}.admin__url-cell{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin__pagination{display:flex;align-items:center;justify-content:center;gap:1.5rem;padding:1.5rem 0;border-top:1px solid var(--border)}.admin__page-info{font-size:var(--size-sm);color:var(--text-muted, #a09070);font-family:var(--font-heading)}.metrics-dashboard{background-color:var(--bg);font-family:var(--font-body)}.metrics-section{margin-bottom:2.5rem}.metrics-section__title{font-family:var(--font-heading);font-size:var(--size-xxl);color:var(--text);margin-bottom:1rem;letter-spacing:.01em}.metrics-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.metrics-card{background:linear-gradient(145deg,#3d2b1f66,#2a1f1499);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.25rem 1.5rem;box-shadow:var(--shadow-sm)}.metrics-card__label{font-size:var(--size-sm);color:var(--text-muted, #a09070);font-family:var(--font-heading);margin-bottom:.25rem}.metrics-card__value{font-family:var(--font-heading);font-size:var(--size-3xl);color:var(--text);font-weight:700}.metrics-card__trend{font-size:var(--size-lg);color:var(--accent)}.metrics-table{width:100%;border-collapse:collapse;font-family:var(--font-body);font-size:var(--size-sm)}.metrics-table th{text-align:left;padding:.6rem .75rem;border-bottom:2px solid var(--border);font-family:var(--font-heading);font-size:var(--size-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.metrics-table td{padding:.6rem .75rem;border-bottom:1px solid var(--border);vertical-align:middle}.metrics-table tr:hover{background-color:#ffffff0a}.status-badge{display:inline-block;padding:.2rem .6rem;border-radius:var(--radius-sm);font-size:var(--size-xs);font-weight:600;text-transform:capitalize}.status-badge--healthy{background-color:#4a7c5933;color:#6abf7b;border:1px solid rgba(74,124,89,.3)}.status-badge--degraded{background-color:#c8a24e33;color:#d4b44a;border:1px solid rgba(200,162,78,.3)}.status-badge--broken{background-color:#b0303033;color:#e05050;border:1px solid rgba(176,48,48,.3)}.metrics-philosophy{border-top:1px solid var(--border);padding-top:2rem;margin-top:1rem}.metrics-philosophy__text{font-family:var(--font-heading);font-style:italic;font-size:var(--size-base);color:var(--text-muted, #a09070);line-height:1.8;max-width:700px;text-align:center;margin:0 auto}@media(max-width:768px){.metrics-cards{grid-template-columns:1fr}.admin__tabs{flex-wrap:wrap}}*:focus-visible{outline:2px solid #d4a029;outline-offset:2px}.book-button:focus-visible{outline:2px solid #d4a029;outline-offset:2px;border-radius:var(--radius-sm)}.book-overlay__close:focus-visible{outline:2px solid #d4a029;outline-offset:2px}.btn:focus-visible{outline:2px solid #d4a029;outline-offset:2px}.app-nav__link:focus-visible{outline:2px solid #d4a029;outline-offset:2px;border-radius:var(--radius-sm)}.onboarding-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:2000;display:flex;align-items:center;justify-content:center}.onboarding-overlay__backdrop{position:absolute;top:0;left:0;width:100%;height:100%;background:#0a0806d9;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.onboarding-overlay__card{position:relative;z-index:2001;max-width:520px;width:90vw;padding:3rem 2.5rem;background:linear-gradient(170deg,#2a1f14,#1a1208);border:1px solid rgba(212,175,55,.15);border-radius:12px;box-shadow:0 8px 48px #0009,inset 0 1px #ffffff0a;text-align:center}.onboarding-overlay__step{display:flex;flex-direction:column;align-items:center;gap:1rem}.onboarding-overlay__title{font-family:var(--font-heading);font-size:var(--size-3xl);color:var(--text);margin:0 0 .25rem;letter-spacing:.02em}.onboarding-overlay__tagline{font-family:var(--font-body);font-size:var(--size-lg);color:var(--text-muted);margin:0;line-height:1.6;max-width:380px}.onboarding-overlay__actions{display:flex;flex-direction:column;align-items:center;gap:.75rem;margin-top:1rem}.onboarding-overlay__dots{display:flex;gap:.5rem;justify-content:center;margin-top:1.5rem}.onboarding-overlay__dot{width:8px;height:8px;border-radius:50%;background:#e8dcc833;transition:background .3s ease}.onboarding-overlay__dot--active{background:#d4a029}
