.library-room{flex:1;padding:var(--space-md) var(--space-md) var(--space-xl);max-width:940px;margin:0 auto;width:100%;box-sizing:border-box;background:transparent}.library-room-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:var(--space-lg)}.library-room-head h2{margin:0;font-family:var(--font-serif);font-size:1.75rem;font-weight:700;color:var(--text-main);letter-spacing:.01em}.library-room-sub{margin:.35rem 0 0;font-family:var(--font-sans);font-size:.88rem;color:var(--text-muted)}.library-inline-form,.library-empty{margin-bottom:var(--space-lg)}.library-empty{text-align:center;padding:var(--space-xl) var(--space-lg);background:var(--bg-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card)}.library-empty-icon{font-size:2.5rem;margin-bottom:var(--space-sm);opacity:.75}.shelf-stack{display:flex;flex-direction:column;gap:2.5rem}.shelf-unit-head{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.55rem;padding:0 .25rem}.shelf-unit-head h3{margin:0;font-family:var(--font-serif);font-size:1.15rem;font-weight:600;color:var(--text-main)}.shelf-meta{display:inline-block;margin-top:.25rem;font-family:var(--font-sans);font-size:.75rem;font-weight:600;color:var(--accent-lime);background:var(--accent-lime-light);padding:.15rem .55rem;border-radius:999px;border:1px solid rgba(126,159,112,.35)}.shelf-unit-actions{display:flex;align-items:center;gap:.35rem;flex-shrink:0}.shelf-delete{background:transparent;color:var(--text-muted)}.shelf-delete:hover:not(:disabled){background:var(--gold-light);color:var(--text-main)}.shelf-body{position:relative}.shelf-assembly{position:relative;padding:0 8px}.shelf-bracket{position:absolute;bottom:0;width:8px;height:calc(100% - 6px);background:linear-gradient(90deg,var(--wood-depth) 0%,var(--wood-main) 45%,var(--wood-light) 100%);border-radius:2px 2px 0 0;box-shadow:inset -1px 0 2px #0000001f;z-index:1}.shelf-bracket--left{left:0}.shelf-bracket--right{right:0;transform:scaleX(-1)}.shelf-deck{position:relative;min-height:132px;margin:0 6px;padding:1rem .85rem 0;display:flex;align-items:flex-end;background:linear-gradient(180deg,rgba(122,85,56,.05) 0%,transparent 55%);border-radius:var(--radius-sm) var(--radius-sm) 0 0;box-shadow:inset 0 2px 8px #24201c0f}.shelf-deck:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#f3ede4 0%,var(--bg-room) 100%);border-radius:inherit;z-index:-1}.shelf-empty{margin:0 auto;padding:1.5rem .5rem 2rem;text-align:center;font-family:var(--font-sans);color:var(--text-muted);font-size:.9rem}.shelf-books{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem .55rem;width:100%}.shelf-book{display:flex;flex-direction:column;align-items:center;gap:.3rem;padding:0;background:transparent;border:none;cursor:pointer;max-width:76px;transition:transform .22s ease;transform-origin:bottom center}.shelf-book:hover,.shelf-book:focus-visible{transform:translateY(-10px);z-index:3}.shelf-book:focus-visible{outline:2px solid var(--accent-lime);outline-offset:4px;border-radius:var(--radius-sm)}.shelf-book-title{font-family:var(--font-serif);font-size:.68rem;font-weight:500;line-height:1.2;color:var(--text-main);text-align:center;max-width:100%;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;opacity:0;max-height:0;transition:opacity .2s ease,max-height .2s ease}.shelf-book:hover .shelf-book-title,.shelf-book:focus-visible .shelf-book-title{opacity:1;max-height:2.5rem}.book-cover--shelf{width:68px;height:102px;aspect-ratio:auto;object-fit:cover;border-radius:3px 4px 2px 2px;box-shadow:var(--shadow-book);border:1px solid rgba(255,255,255,.55);display:block}.shelf-plank{height:16px;margin:0 6px;background:linear-gradient(180deg,var(--wood-light) 0%,var(--wood-main) 42%,var(--wood-depth) 100%);border-radius:0 0 2px 2px;box-shadow:var(--shadow-shelf);position:relative;z-index:2}.shelf-plank-edge{height:7px;margin:0 8px;background:linear-gradient(180deg,var(--wood-main) 0%,var(--wood-depth) 100%);border-radius:0 0 3px 3px;box-shadow:0 6px 14px #24201c24}.book-cover--flyout{width:168px;height:252px;aspect-ratio:auto;border-radius:var(--radius-sm);box-shadow:var(--shadow-book),0 24px 48px #24201c40;border:2px solid rgba(255,255,255,.6)}.flyout-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-lg);background:var(--bg-overlay);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:library-fade-in .22s ease}.flyout-hero{position:relative;display:flex;flex-direction:column;align-items:center;max-width:340px;width:100%;animation:library-flyout-pop .32s cubic-bezier(.34,1.35,.64,1)}.flyout-close{position:absolute;top:-2.75rem;right:0;color:var(--text-on-accent);background:#ffffff2e;border-radius:999px;width:2.1rem;height:2.1rem;display:grid;place-items:center;font-size:1.25rem}.flyout-close:hover:not(:disabled){background:#ffffff47}.flyout-cover-btn{padding:0;background:transparent;border:none;cursor:pointer;border-radius:var(--radius-sm);transition:transform .2s ease}.flyout-cover-btn:hover{transform:scale(1.04);background:transparent}.flyout-cover-btn:focus-visible{outline:2px solid var(--accent-lime-light);outline-offset:5px}.flyout-meta{margin-top:var(--space-md);text-align:center;color:var(--text-on-accent)}.flyout-meta h3{margin:0 0 .25rem;font-family:var(--font-serif);font-size:1.25rem;font-weight:600;line-height:1.25;text-shadow:0 1px 10px rgba(0,0,0,.35)}.flyout-author{margin:0 0 .55rem;font-family:var(--font-sans);font-size:.88rem;opacity:.92}.library-room .status-pill,.flyout-meta .status-pill{background:var(--accent-lime-light);color:var(--accent-lime);border:1px solid rgba(126,159,112,.4);font-weight:600}.flyout-hint{margin:var(--space-md) 0 0;font-family:var(--font-sans);font-size:.82rem;color:#ffffffe0;text-align:center}@keyframes library-fade-in{0%{opacity:0}to{opacity:1}}@keyframes library-flyout-pop{0%{opacity:0;transform:scale(.76) translateY(28px)}to{opacity:1;transform:scale(1) translateY(0)}}@media(prefers-reduced-motion:reduce){.flyout-backdrop,.flyout-hero,.shelf-book{animation:none;transition:none}.shelf-book-title{opacity:1;max-height:2.5rem}}@media(min-width:640px){.book-cover--shelf{width:76px;height:114px}.shelf-book{max-width:84px}}:root{--bg-room: #F9F6F0;--bg-card: #FFFFFF;--bg-overlay: rgba(36, 32, 28, .45);--wood-main: #9E7453;--wood-depth: #7A5538;--wood-light: #B88E6B;--accent-lime: #7E9F70;--accent-lime-light: #F0F4EE;--gold-highlight: #FAD02C;--gold-light: #FFF9E6;--text-main: #24201C;--text-muted: #72685E;--text-on-accent: #FFFFFF;--radius-sm: 6px;--radius-md: 12px;--radius-lg: 20px;--shadow-book: 0 4px 10px rgba(58, 46, 36, .15), 0 1px 3px rgba(58, 46, 36, .1);--shadow-shelf: 0 8px 24px rgba(36, 32, 28, .12);--shadow-card: 0 12px 36px rgba(36, 32, 28, .08);--font-serif: "EB Garamond", Georgia, serif;--font-sans: "Plus Jakarta Sans", sans-serif;--font-brand: "Comfortaa", sans-serif;--bg: var(--bg-room);--bg-wall: var(--bg-room);--surface: var(--bg-card);--surface-muted: var(--gold-light);--surface-elevated: var(--bg-card);--text: var(--text-main);--text-inverse: var(--text-on-accent);--accent: var(--accent-lime);--accent-hover: #6a855e;--accent-soft: var(--accent-lime-light);--wood: var(--wood-main);--wood-deep: var(--wood-depth);--gold: var(--gold-highlight);--gold-soft: var(--gold-light);--border: rgba(158, 116, 83, .35);--border-soft: rgba(158, 116, 83, .2);--shadow: var(--shadow-card);--shadow-soft: 0 4px 14px rgba(36, 32, 28, .06);--radius: var(--radius-md);--font-display: var(--font-brand);--bg-warm: var(--gold-light);--wood-plank: linear-gradient(180deg, var(--wood-light) 0%, var(--wood-main) 55%, var(--wood-depth) 100%);--wood-niche: linear-gradient(180deg, #ece4d8 0%, #e0d6c8 100%);--lamp: rgba(250, 208, 44, .22);--lamp-spot: radial-gradient(ellipse 70% 55% at 88% 6%, var(--lamp), transparent 62%);--error: #b33;--error-bg: #fdeaea;--offline-bg: var(--gold-light);--offline-text: var(--text-muted);--space-xs: .35rem;--space-sm: .65rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2.5rem}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}*{box-sizing:border-box}body{margin:0;min-height:100vh;font-family:var(--font-sans);line-height:1.5;color:var(--text);background:var(--bg-wall)}#root{min-height:100vh}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-shell--room{background:var(--lamp-spot),var(--bg-room)}a{color:var(--accent)}button,input,select,textarea{font:inherit}button{cursor:pointer;border:none;border-radius:8px;padding:.55rem 1rem;background:var(--accent);color:#fff}button:hover:not(:disabled){background:var(--accent-hover)}button:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{background:transparent;color:var(--text);border:1px solid var(--border)}.btn-secondary:hover:not(:disabled){background:var(--bg-warm)}.btn-small{padding:.35rem .65rem;font-size:.875rem}.btn-icon{background:transparent;color:var(--text-muted);font-size:1.5rem;line-height:1;padding:.25rem .5rem}input,select{width:100%;padding:.55rem .75rem;border:1px solid var(--border);border-radius:8px;background:var(--surface)}label{display:flex;flex-direction:column;gap:.35rem;font-size:.9rem;color:var(--text-muted)}.center-page{flex:1;display:grid;place-items:center;padding:var(--space-lg);color:var(--text-muted)}.center-page--auth{min-height:100vh;background:var(--lamp-spot),var(--bg-room)}.login-card{width:min(100%,400px);background:var(--surface);color:var(--text);border:1px solid var(--border-soft);border-radius:var(--radius);padding:2rem;box-shadow:var(--shadow)}.login-card h1{margin:0;font-family:var(--font-display);font-weight:700;color:var(--wood)}.login-tagline{margin:.35rem 0 1.5rem;color:var(--text-muted)}.login-google-btn{display:flex;align-items:center;justify-content:center;gap:.65rem;width:100%;background:var(--surface);color:var(--text);border:1px solid var(--border);font-weight:500}.login-google-btn:hover:not(:disabled){background:var(--bg-warm)}.login-google-icon{width:1.15rem;height:1.15rem;flex-shrink:0}.login-divider{display:flex;align-items:center;gap:.75rem;margin:1.25rem 0;color:var(--text-muted);font-size:.85rem}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:var(--border-soft)}.login-retry-link{display:inline-block;margin-top:.75rem;font-weight:500}.login-form{display:flex;flex-direction:column;gap:.75rem}.form-hint{color:var(--text-muted);font-size:.9rem}.form-error{color:var(--error);font-size:.9rem}.banner-error{margin:0;padding:.75rem 1rem;background:var(--error-bg);color:var(--error)}.app-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1.25rem;background:#fffdf9eb;border-bottom:1px solid var(--border-soft);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);flex-wrap:wrap;box-shadow:var(--shadow-soft)}.app-header h1{margin:0;font-family:var(--font-display);font-weight:700;font-size:1.35rem;color:var(--wood-deep);letter-spacing:.02em}.header-sub{margin:.15rem 0 0;font-size:.8rem;color:var(--text-muted)}.app-header-start{display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap}.app-header-end{display:flex;align-items:center;gap:.75rem}.app-nav{display:flex;gap:.35rem}.nav-link{padding:.4rem .75rem;border-radius:var(--radius-sm);text-decoration:none;color:var(--text-muted);font-size:.9rem}.nav-link:hover{background:var(--bg-warm);color:var(--text)}.nav-link.active{background:var(--accent);color:var(--text-inverse)}.library-layout{flex:1;display:grid;grid-template-columns:minmax(220px,280px) 1fr;gap:0;min-height:0}@media(max-width:720px){.library-layout{grid-template-columns:1fr}}.shelves-panel,.books-panel{padding:1rem 1.25rem}.shelves-panel{background:var(--bg-warm);border-right:1px solid var(--border)}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem}.panel-head h2{margin:0;font-size:1.1rem}.shelf-meta{margin:.2rem 0 0;font-size:.85rem;color:var(--text-muted)}.shelf-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.shelf-list li{display:flex;align-items:stretch;gap:.25rem}.shelf-btn{flex:1;display:flex;justify-content:space-between;align-items:center;background:var(--surface);color:var(--text);border:1px solid transparent;text-align:left}.shelf-btn.active{border-color:var(--accent);background:#fff}.shelf-delete{background:transparent;color:var(--text-muted);padding:0 .5rem;font-size:1.1rem}.inline-form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;margin-bottom:1rem;display:flex;flex-direction:column;gap:.75rem}.inline-form h3{margin:0;font-size:1rem}.form-actions{display:flex;gap:.5rem;justify-content:flex-end}.empty-hint{color:var(--text-muted);font-size:.95rem}.book-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:1rem}.book-card{width:100%;padding:0;text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);color:inherit}.book-card:hover{border-color:var(--accent)}.book-cover{display:block;width:100%;aspect-ratio:2 / 3;object-fit:cover;background:var(--bg-warm)}.book-cover--md{width:72px;height:108px;flex-shrink:0;border-radius:4px}.book-cover--sm{width:48px;height:72px;flex-shrink:0}.book-cover--lg{width:120px;height:180px;flex-shrink:0;border-radius:6px}.book-card-body{padding:.65rem .75rem .85rem}.book-card-body h3{margin:0 0 .25rem;font-size:.95rem;line-height:1.25}.book-card-body p{margin:0 0 .5rem;font-size:.8rem;color:var(--text-muted)}.status-pill{display:inline-block;font-size:.72rem;padding:.2rem .5rem;border-radius:999px;background:var(--accent-soft);color:var(--accent-hover);font-weight:500}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#3d2f2466;display:grid;place-items:center;padding:1rem;z-index:100}@media(max-width:640px){.modal-backdrop--sheet{place-items:end;padding:0}.modal--bottom-sheet{width:100%;max-width:100%;max-height:92vh;border-radius:var(--radius-lg) var(--radius-lg) 0 0;animation:sheet-up .28s ease}}@keyframes sheet-up{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.modal{width:min(100%,520px);max-height:90vh;overflow:auto;background:var(--surface);border-radius:var(--radius);padding:1.25rem;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:.75rem;border:1px solid var(--border-soft)}.modal-header{display:flex;justify-content:space-between;align-items:center}.modal-header h2{margin:0;font-size:1.15rem}.tabs{display:flex;gap:.35rem}.tab{background:var(--bg-warm);color:var(--text)}.tab.active{background:var(--accent);color:#fff}.search-results{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem;max-height:280px;overflow:auto}.search-hit{width:100%;display:flex;gap:.75rem;align-items:center;text-align:left;background:var(--bg-warm);color:var(--text);padding:.5rem}.search-hit strong{display:block}.search-hit small{color:var(--text-muted)}.manual-form{display:flex;flex-direction:column;gap:.75rem}.modal--detail{width:min(100%,640px)}.book-detail-hero{display:flex;gap:1rem;align-items:flex-start}.book-detail-meta h3{margin:0 0 .35rem;font-family:Georgia,serif;font-size:1.2rem;line-height:1.3}.book-detail-meta p{margin:0;color:var(--text-muted);font-size:.9rem}.book-detail-year{margin-top:.35rem!important;font-size:.85rem!important}.stats-row{display:flex;flex-wrap:wrap;gap:.5rem}.stat-chip{flex:1;min-width:72px;background:var(--surface-muted);border:1px solid var(--border-soft);border-radius:var(--radius-sm);padding:.5rem .65rem;text-align:center}.stat-label{display:block;font-size:.72rem;color:var(--text-muted);margin-bottom:.15rem}.stat-chip strong{font-size:1rem}.book-detail-form{display:flex;flex-direction:column;gap:.75rem}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}@media(max-width:480px){.form-row{grid-template-columns:1fr}}.checkbox-label{flex-direction:row!important;align-items:center;gap:.5rem!important;color:var(--text)!important;font-size:.9rem!important}.checkbox-label input{width:auto}.sessions-section h3{margin:0;font-size:1rem}.session-form{margin-bottom:.5rem}.session-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.session-item{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem;padding:.65rem .75rem;background:var(--bg-warm);border-radius:8px}.session-item strong{display:block;font-size:.9rem}.session-item span{font-size:.85rem;color:var(--text-muted)}.session-note{margin:.25rem 0 0;font-size:.85rem;color:var(--text)}.book-detail-dates{margin:0;text-align:center}.reviews-section{display:flex;flex-direction:column;gap:.75rem}.reviews-public-note{margin:0}.review-form textarea{width:100%;padding:.55rem .75rem;border:1px solid var(--border);border-radius:8px;background:var(--surface);resize:vertical;min-height:96px;font:inherit}.reviews-others-title{margin:.5rem 0 0;font-size:.95rem;color:var(--text-muted)}.review-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.review-card{background:var(--bg-warm);border-radius:var(--radius);padding:.85rem 1rem}.review-card--own{border:1px solid var(--accent);background:#fffef9}.review-header{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.35rem}.review-rating{color:var(--accent);font-weight:600;white-space:nowrap}.review-body{margin:0;white-space:pre-wrap;line-height:1.5}.review-date{display:block;margin-top:.5rem;font-size:.8rem;color:var(--text-muted)}.review-spoiler{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem}.btn-danger{background:transparent;color:var(--error);border:1px solid var(--error)}.btn-danger:hover:not(:disabled){background:#fdeaea}.notes-section{display:flex;flex-direction:column;gap:.75rem}.note-form textarea{width:100%;padding:.55rem .75rem;border:1px solid var(--border);border-radius:8px;background:var(--surface);resize:vertical;min-height:96px;font:inherit}.note-form h4{margin:0;font-size:.95rem}.note-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.note-card{background:var(--bg-warm);border-radius:var(--radius);padding:.85rem 1rem}.note-card--other{background:#fffef9;border:1px solid var(--border)}.note-header{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.35rem}.note-badges{display:flex;flex-wrap:wrap;gap:.35rem}.status-pill--public{background:#ecfccb;color:#4d5c1f}.note-meta{margin:0 0 .35rem;font-size:.8rem;color:var(--text-muted)}.dashboard-page{flex:1;padding:1rem 1.25rem 2rem;max-width:1100px;width:100%;margin:0 auto}.dashboard-toolbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.dashboard-toolbar h2{margin:0;font-family:var(--font-serif);color:var(--wood-deep)}.year-select{flex-direction:row!important;align-items:center;gap:.5rem!important}.year-select select{width:auto;min-width:100px}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;margin-top:1rem}.dashboard-card{background:var(--surface);color:var(--text);border:1px solid var(--border-soft);border-radius:var(--radius);padding:1rem 1.15rem;box-shadow:var(--shadow-soft)}.dashboard-card--wide{grid-column:1 / -1}.dashboard-card h3{margin:0 0 .85rem;font-size:1rem}.dashboard-summary,.challenge-card{margin-top:.5rem}.challenge-form{display:flex;gap:.75rem;align-items:flex-end;flex-wrap:wrap;margin-bottom:.85rem}.challenge-form label{flex:1;min-width:140px}.challenge-progress-bar{height:12px;background:var(--bg-warm);border-radius:999px;overflow:hidden;margin-bottom:.35rem}.challenge-progress-fill{height:100%;background:linear-gradient(90deg,var(--accent-soft),var(--accent));border-radius:999px;transition:width .3s ease}.challenge-progress-text{margin:0;color:var(--text-muted);font-size:.9rem}.bar-chart{display:flex;align-items:flex-end;gap:.35rem;height:160px;padding-top:.5rem}.bar-chart-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:.35rem;min-width:0}.bar-chart-bar-wrap{flex:1;width:100%;display:flex;align-items:flex-end;justify-content:center}.bar-chart-bar{width:100%;max-width:28px;min-height:4px;background:var(--accent);border-radius:4px 4px 0 0;transition:height .3s ease}.bar-chart-label{font-size:.68rem;color:var(--text-muted)}.breakdown-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.65rem}.breakdown-row{display:flex;justify-content:space-between;gap:.5rem;font-size:.88rem;margin-bottom:.2rem}.breakdown-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.breakdown-value{color:var(--text-muted);flex-shrink:0}.breakdown-track{height:8px;background:var(--bg-warm);border-radius:999px;overflow:hidden}.breakdown-fill{height:100%;background:#c4a882;border-radius:999px}.buddy-reads-page,.buddy-read-detail{flex:1;padding:1rem 1.25rem 2rem;max-width:960px;width:100%;margin:0 auto}.toolbar-actions{display:flex;gap:.5rem}.join-form{display:flex;gap:.5rem;flex-wrap:wrap}.join-form input{flex:1;min-width:200px}.buddy-read-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.65rem}.buddy-read-card{display:flex;gap:.85rem;align-items:center;padding:.85rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);text-decoration:none;color:inherit;box-shadow:var(--shadow)}.buddy-read-card:hover{border-color:var(--accent)}.buddy-read-card strong{display:block;margin-bottom:.2rem}.buddy-read-card p{margin:0 0 .35rem;font-size:.85rem;color:var(--text-muted)}.breadcrumb{margin:0 0 1rem;font-size:.9rem}.breadcrumb a{color:var(--text-muted)}.buddy-read-hero{display:flex;flex-direction:column;gap:1rem}.invite-row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.invite-code{flex:1;min-width:0;padding:.45rem .65rem;background:var(--bg-warm);border-radius:8px;font-size:.78rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.member-progress-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.member-progress-item{padding:.65rem .75rem;background:var(--bg-warm);border-radius:8px}.member-progress-item p{margin:.25rem 0 0;font-size:.88rem;color:var(--text-muted)}.buddy-read-columns{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:1rem}@media(max-width:800px){.buddy-read-columns{grid-template-columns:1fr}}.chat-list{list-style:none;margin:0 0 .75rem;padding:0;max-height:280px;overflow:auto;display:flex;flex-direction:column;gap:.5rem}.chat-item{padding:.55rem .7rem;background:var(--bg-warm);border-radius:8px}.chat-item--own{background:#ecfccb}.chat-item p{margin:.2rem 0;white-space:pre-wrap}.chat-item time{font-size:.75rem;color:var(--text-muted)}.chat-form{display:flex;gap:.5rem}.chat-form input{flex:1}.offline-banner{padding:.55rem 1rem;font-size:.88rem;text-align:center}.offline-banner--offline{background:#fff3cd;color:#6b5a1e}.offline-banner--sync{background:#ecfccb;color:#4d5c1f}.offline-hint{margin:0;padding:.5rem 1rem;background:var(--offline-bg);color:var(--offline-text);font-size:.88rem;text-align:center;border-bottom:1px solid rgba(201,162,39,.2)}.modal--sheet{width:min(100%,560px);max-height:92vh;padding:0;overflow:hidden;color:var(--text);border:1px solid var(--border-soft)}@media(max-width:640px){.modal-backdrop:has(.modal--sheet){place-items:end;padding:0}.modal--sheet{width:100%;max-width:100%;max-height:94vh;border-radius:var(--radius-lg) var(--radius-lg) 0 0;animation:sheet-up .28s ease}}.modal--sheet .modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;padding:1rem 1rem .75rem;border-bottom:1px solid var(--border-soft)}.book-detail-hero--compact{flex:1;min-width:0}.book-detail-hero--compact .book-cover--md{width:56px;height:84px;flex-shrink:0;border-radius:4px}.book-detail-meta h2{margin:0 0 .2rem;font-family:var(--font-serif);font-size:1.05rem;line-height:1.25}.stats-row--compact{padding:.65rem 1rem;border-bottom:1px solid var(--border-soft)}.detail-tabs{display:flex;gap:0;border-bottom:1px solid var(--border-soft);overflow-x:auto;-webkit-overflow-scrolling:touch}.detail-tab{flex:1;min-width:0;padding:.65rem .5rem;background:transparent;border:none;border-bottom:2px solid transparent;color:var(--text-muted);font-size:.85rem;cursor:pointer;white-space:nowrap}.detail-tab:hover{color:var(--text);background:var(--surface-muted)}.detail-tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.modal--sheet .book-detail-form,.modal--sheet .reviews-section--embedded,.modal--sheet .notes-section--embedded,.modal--sheet .sessions-section--embedded{padding:1rem;overflow-y:auto;max-height:min(50vh,420px)}.embedded-actions{display:flex;justify-content:flex-end;margin-bottom:.75rem}.reviews-section--embedded h3,.notes-section--embedded h3,.sessions-section--embedded h3{display:none}.modal--sheet .form-error{padding:0 1rem 1rem}.page-main{flex:1;padding:1.25rem 1rem 2rem;max-width:960px;margin:0 auto;width:100%;box-sizing:border-box}.page-main h2{margin:0 0 .35rem;font-family:var(--font-serif);font-size:1.4rem;color:var(--wood-deep)}.page-sub{margin:0 0 1.25rem;color:var(--text-muted);font-size:.9rem}
