*{box-sizing:border-box}body{background:var(--color-canvas);color:var(--color-ink);font-family:var(--font-body);font-size:var(--type-size-body);margin:0;line-height:1.6}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid var(--color-focus);outline-offset:5px}h1,h2,p{margin-top:0}h1,h2{font-family:var(--font-display);text-wrap:balance;font-weight:400;line-height:1.1}h1{font-size:var(--type-size-display);letter-spacing:-.045em}h2{font-size:var(--type-size-title)}.site-shell{max-width:var(--component-bookshelf-max-width);padding:0 clamp(var(--component-page-content-gutter), 5vw, var(--space-xxl));margin:auto}.masthead{justify-content:space-between;align-items:center;gap:var(--space-lg);border-bottom:1px solid var(--color-border);min-height:7rem;display:flex}.wordmark{align-items:baseline;gap:var(--space-sm);font-family:var(--font-display);font-size:var(--type-size-display);letter-spacing:-.06em;text-decoration:none;display:flex}.wordmark span{font-family:var(--font-record);font-size:var(--type-size-caption);letter-spacing:.04em}.eyebrow{font-family:var(--font-record);font-size:var(--type-size-caption);text-transform:uppercase;letter-spacing:.13em;color:var(--color-muted-ink)}.landing{align-items:center;gap:var(--space-xxl);min-height:calc(100svh - 13rem);padding-block:clamp(var(--space-xxl), 8vw, 8rem);grid-template-columns:1.15fr 1fr;display:grid}.hero-copy h1{font-size:var(--type-size-hero);margin-block:var(--space-lg)}.intro{color:var(--color-muted-ink);max-width:34rem;font-size:1.125em}.coming-soon{align-items:center;gap:var(--space-sm);margin-top:var(--space-lg);padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-paper);font-size:var(--type-size-caption);display:inline-flex}.status-dot{background:var(--color-success);border-radius:50%;width:.45rem;height:.45rem}.fine-print{color:var(--color-muted-ink);font-size:var(--type-size-caption);margin-top:var(--space-md)}.hero-actions{align-items:center;gap:var(--space-md);margin-top:var(--space-lg);flex-wrap:wrap;display:flex}.hero-actions .coming-soon{margin-top:0}.hero-art{min-width:0;padding:var(--space-xxl) var(--space-md)}.book-row{justify-content:center;align-items:end;gap:var(--space-xs);min-height:18rem;padding-inline:var(--space-lg);display:flex}.spine{justify-content:space-between;align-items:center;gap:var(--space-lg);writing-mode:vertical-rl;width:clamp(2.75rem,5vw,4.5rem);min-width:var(--component-bookshelf-minimum-book-hit-target);height:15.5rem;padding:var(--space-lg) var(--space-sm);border:1px solid color-mix(in srgb, var(--color-ink) 25%, transparent);border-radius:var(--radius-page);color:var(--color-paper);background:var(--color-book-olive);font-family:var(--font-display);font-size:var(--type-size-body);box-shadow:inset 4px 0 0 color-mix(in srgb, var(--color-ink) 12%, transparent);transform-origin:bottom;transition:transform var(--motion-hover-duration-ms) var(--motion-easing), box-shadow var(--motion-hover-duration-ms) var(--motion-easing);flex-shrink:0;display:flex;position:relative}.spine small{font-family:var(--font-record);font-size:.65rem}.spine-rust{background:var(--color-book-rust);height:17rem}.spine-paper{background:var(--color-paper);color:var(--color-ink);height:14.5rem}.spine-blue{background:var(--color-book-blue);height:16rem}.spine-gold{background:var(--color-book-gold);color:var(--color-ink);height:14rem}.decorative-books .spine:first-child{margin-right:var(--space-md);transform:rotate(-8deg)}.decorative-books .spine{justify-content:center}.shelf-plank{background:var(--color-shelf-wood);border-bottom:.3rem solid var(--color-shelf-shadow);height:1rem;box-shadow:var(--shadow-panel)}.art-caption{font-family:var(--font-display);text-align:center;color:var(--color-muted-ink);margin-top:var(--space-xl);font-style:italic}.site-footer{justify-content:space-between;gap:var(--space-md);border-top:1px solid var(--color-border);padding-block:var(--space-lg);font-size:var(--type-size-caption);color:var(--color-muted-ink);flex-wrap:wrap;display:flex}.playground{max-width:var(--component-borrowing-card-max-width);padding-block:var(--space-xxl);margin:auto}.playground h1{margin-block:var(--space-md)}.search-area{margin-block:var(--space-xl);max-width:32rem}label{margin-bottom:var(--space-sm);font-size:var(--type-size-caption);display:block}input{width:100%;padding:var(--space-sm) var(--space-md);min-height:var(--component-bookshelf-minimum-book-hit-target);background:var(--color-paper);color:var(--color-ink);border:1px solid var(--color-border);border-radius:var(--radius-control)}textarea{resize:vertical;width:100%;padding:var(--space-sm) var(--space-md);background:var(--color-paper);color:var(--color-ink);border:1px solid var(--color-border);border-radius:var(--radius-control)}.sample-shelf{padding-top:var(--space-xl)}.book-slot{flex-shrink:0;align-items:end;width:clamp(2.75rem,5vw,4.5rem);display:flex}.empty-slot{writing-mode:vertical-rl;width:100%;height:14rem;font-family:var(--font-record);font-size:var(--type-size-caption);color:var(--color-muted-ink);justify-content:center;align-items:center;display:flex}button.spine:hover,button.spine:focus-visible{transform:translateY(calc(-1 * var(--motion-hover-lift-px))) scale(var(--motion-hover-scale));box-shadow:var(--shadow-lifted-book);z-index:1}button.spine.pulled{transform:translateY(calc(-1 * var(--motion-search-pull-lift-px))) scale(var(--motion-search-pull-scale));transition-duration:var(--motion-search-pull-duration-ms);box-shadow:var(--shadow-lifted-book);z-index:2}.spine.reserved{color:var(--color-reservation-outline);border:calc(var(--component-bookshelf-reservation-stroke-width) * 1px) dashed var(--color-reservation-outline);box-shadow:none;background:0 0}.button{min-height:var(--component-bookshelf-minimum-book-hit-target);padding:var(--space-sm) var(--space-md);border:1px solid var(--color-accent);background:var(--color-accent);color:var(--color-paper);border-radius:var(--radius-control);font-size:var(--type-size-caption);justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.button.secondary{color:var(--color-accent);border-color:var(--color-border);background:0 0}.button[aria-pressed=true]{border-color:var(--color-focus);color:var(--color-focus)}.results{margin-top:var(--space-xxl)}.results ul{padding:0;list-style:none}.results li{justify-content:space-between;align-items:center;gap:var(--space-md);padding-block:var(--space-md);border-top:1px solid var(--color-border);display:flex}.results li span:not(.sr-only){color:var(--color-muted-ink);font-size:var(--type-size-caption);display:block}.result-actions{gap:var(--space-sm);flex-shrink:0;display:flex}.theme-note{background:var(--color-paper);border:1px solid var(--color-border);padding:var(--space-lg);margin-top:var(--space-xl);border-radius:var(--radius-panel)}code{font-family:var(--font-record);font-size:var(--type-size-caption)}.book-dialog{width:calc(100% - 2 * var(--component-page-content-gutter));max-width:var(--component-borrowing-card-max-width);border:1px solid var(--color-border);border-radius:var(--radius-panel);background:var(--color-paper);color:var(--color-ink);box-shadow:var(--shadow-panel);padding:0}.book-dialog::backdrop{background:color-mix(in srgb, var(--color-ink) 55%, transparent)}.book-dialog[open]{animation:book-open var(--motion-book-open-duration-ms) var(--motion-easing)}@keyframes book-open{0%{opacity:0;transform:translateY(var(--motion-hover-lift-px))}to{opacity:1;transform:translateY(0)}}.close-dialog{margin:var(--space-md);float:right}.open-book{clear:both;grid-template-columns:1fr 1fr;display:grid}.record-page,.detail-page{padding:var(--space-xl);min-width:0}.record-page{box-shadow:var(--shadow-page-inset)}.record-page h2{font-family:var(--font-record);font-size:var(--type-size-title)}table{border-collapse:collapse;width:100%;font-family:var(--font-record);font-size:var(--type-size-caption)}th,td{text-align:left;padding:var(--space-sm) var(--space-xs);height:var(--component-borrowing-card-row-height);border-bottom:1px solid color-mix(in srgb, var(--color-ink) calc(var(--component-borrowing-card-rule-opacity) * 100%), transparent)}th{color:var(--color-muted-ink);font-weight:400}.detail-page h2{font-size:var(--type-size-display);margin-top:var(--space-xl)}.book-author{font-family:var(--font-display);font-style:italic}.book-status{color:var(--color-accent);border:1px solid var(--color-border);border-radius:var(--radius-control);padding:var(--space-xs) var(--space-sm);text-transform:capitalize;font-size:var(--type-size-caption);display:inline-block}.detail-note{margin-top:var(--space-xl)}.empty-page{max-width:40rem;padding:var(--space-xl);margin:15vh auto}.auth-shell{min-height:100svh;padding:var(--component-page-content-gutter);place-items:center;display:grid}.auth-card{width:min(100%,34rem);padding:clamp(var(--space-lg), 7vw, var(--space-xxl));background:var(--color-paper);border:1px solid var(--color-border);border-radius:var(--radius-panel);box-shadow:var(--shadow-panel)}.account-card,.shelf-card{width:min(100%, var(--component-bookshelf-max-width))}.auth-wordmark{width:fit-content;margin-bottom:var(--space-xxl)}.auth-card h1{margin-block:var(--space-md)}.auth-card .intro{font-size:var(--type-size-body)}.auth-form{margin-top:var(--space-xl);display:grid}.auth-form input{font-size:1.125rem}.auth-form .otp-input{max-width:12rem;font-family:var(--font-record);font-size:var(--type-size-display);letter-spacing:.2em}.field-help,.sent-to,.form-message{color:var(--color-muted-ink);font-size:var(--type-size-caption)}.field-help{margin-top:var(--space-sm)}.form-message{min-height:1.6em;color:var(--color-error);margin-block:var(--space-sm) var(--space-md)}.auth-secondary-actions{justify-content:space-between;gap:var(--space-md);margin-top:var(--space-md);display:flex}.text-button{padding:var(--space-xs) 0;color:var(--color-accent);text-underline-offset:.2em;background:0 0;border:0;text-decoration:underline}.text-button:disabled{cursor:not-allowed;color:var(--color-muted-ink)}.auth-unavailable{margin-top:var(--space-xl);padding-top:var(--space-lg);border-top:1px solid var(--color-border)}.onboarding-card{width:min(100%,42rem)}.onboarding-progress{gap:var(--space-xs);margin:0 0 var(--space-xl);color:var(--color-muted-ink);font-family:var(--font-record);grid-template-columns:repeat(4,1fr);padding:0;font-size:.7rem;list-style:none;display:grid}.onboarding-progress li{gap:var(--space-xs);border-top:2px solid var(--color-border);padding-top:var(--space-sm);display:grid}.onboarding-progress li[aria-current=step]{border-color:var(--color-accent);color:var(--color-ink)}.onboarding-progress li span:first-child{font-size:var(--type-size-caption)}.onboarding-fields{gap:var(--space-xs)}.onboarding-fields label:not(:first-of-type){margin-top:var(--space-md)}.field-error{color:var(--color-error);font-size:var(--type-size-caption);margin:0}.error-summary{margin-block:var(--space-sm)}.username-field{border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-paper);align-items:center;display:flex;overflow:hidden}.username-field:focus-within{outline:3px solid var(--color-focus);outline-offset:5px}.username-field span{padding-left:var(--space-md);color:var(--color-muted-ink);font-family:var(--font-record);font-size:var(--type-size-caption)}.username-field input{border:0;outline:0;min-width:6rem;padding-left:.2rem}.onboarding-choice{padding:var(--space-lg);border:1px solid var(--color-border);border-radius:var(--radius-panel);margin:0}.onboarding-choice legend{padding-inline:var(--space-sm);font-family:var(--font-display);font-size:var(--type-size-title)}.onboarding-choice p,.onboarding-waiting p{color:var(--color-muted-ink)}.onboarding-waiting{padding-top:var(--space-md);border-top:1px solid var(--color-border)}.shelf-preview{justify-content:center;align-items:end;gap:var(--space-xs);min-height:9rem;margin-block:var(--space-lg);padding:var(--space-lg);border-bottom:.75rem solid var(--color-shelf-wood);background:color-mix(in srgb, var(--color-shelf-wood) 12%, var(--color-paper));filter:blur(.35rem);opacity:.58;display:flex;overflow:hidden}.shelf-preview span{border-radius:var(--radius-page);background:var(--color-book-olive);width:2.5rem;height:6rem;display:block}.shelf-preview span:nth-child(2){background:var(--color-book-rust);height:7rem}.shelf-preview span:nth-child(3){background:var(--color-book-blue);height:5.5rem}.shelf-preview span:nth-child(4){background:var(--color-book-gold);height:6.5rem}.authorized-preview{filter:none;opacity:1}.shelf-access-settings{margin-top:var(--space-xl);padding-top:var(--space-xl);border-top:1px solid var(--color-border)}.shelf-access-settings>p{color:var(--color-muted-ink)}.share-details{gap:var(--space-xs);margin-block:var(--space-md);padding:var(--space-lg);border:1px solid var(--color-border);border-radius:var(--radius-panel);display:grid}.share-details label:not(:first-child){margin-top:var(--space-sm)}.success-message{color:var(--color-success)}.rotation-panel{margin-top:var(--space-xl);border-top:1px solid var(--color-border);padding-top:var(--space-md)}.rotation-panel summary{cursor:pointer;color:var(--color-accent)}.inventory-manager,.catalog-browser{margin-top:var(--space-xl);padding-top:var(--space-xl);border-top:1px solid var(--color-border)}.inventory-heading,.catalog-heading,.inventory-copy-heading{justify-content:space-between;align-items:start;gap:var(--space-md);display:flex}.inventory-heading h2,.catalog-heading h2,.inventory-copy-heading h3{margin-bottom:0}.inventory-heading>span,.catalog-heading>span{color:var(--color-muted-ink);font-family:var(--font-record);font-size:var(--type-size-caption);flex-shrink:0}.inventory-add,.inventory-edit{margin-top:var(--space-lg)}.inventory-add>summary,.inventory-edit>summary{cursor:pointer;width:fit-content;color:var(--color-accent);text-underline-offset:.2em;text-decoration:underline}.inventory-add[open]{padding:var(--space-lg);border:1px solid var(--color-border);border-radius:var(--radius-panel)}.inventory-isbn-grid{gap:var(--space-md);grid-template-columns:1fr 1fr;display:grid}.optional-label{color:var(--color-muted-ink);font-weight:400}.inventory-list,.catalog-results{margin:var(--space-xl) 0 0;padding:0;list-style:none}.inventory-row,.catalog-results li{padding-block:var(--space-lg);border-top:1px solid var(--color-border)}.inventory-row.archived{opacity:.68}.inventory-copy-heading h3,.catalog-results h3{font-family:var(--font-display);font-size:var(--type-size-title);margin:0;font-weight:400}.inventory-copy-heading p,.catalog-results p,.inventory-copy-note{color:var(--color-muted-ink);margin:0}.inventory-copy-note{font-size:var(--type-size-caption);font-family:var(--font-record)}.inventory-row-actions{gap:var(--space-sm);margin-top:var(--space-md);flex-wrap:wrap;display:flex}.inventory-row-actions .button{min-height:2.5rem}.inventory-edit{border-left:2px solid var(--color-border);padding-left:var(--space-md)}.inventory-empty{margin-block:var(--space-xl);padding:var(--space-lg);border:1px dashed var(--color-border);color:var(--color-muted-ink)}.finish-shelf{margin-top:var(--space-xl);padding-top:var(--space-lg);border-top:1px solid var(--color-border)}.catalog-results li{justify-content:space-between;align-items:start;gap:var(--space-md);display:flex}.catalog-results .book-status{flex-shrink:0}.checkbox-field{align-items:start;gap:var(--space-sm);margin-top:var(--space-md);display:flex}.checkbox-field input{width:auto;min-height:auto;margin-top:.35em}.sr-only,.skip-link:not(:focus){clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.skip-link:focus{z-index:10;background:var(--color-paper);padding:var(--space-md);position:fixed}.shelf-topbar{align-items:center;gap:var(--space-md);margin-bottom:var(--space-xxl);display:flex}.friends-menu{position:relative}.friends-toggle{width:var(--component-bookshelf-minimum-book-hit-target);height:var(--component-bookshelf-minimum-book-hit-target);color:var(--color-ink);background:var(--color-paper);border:1px solid var(--color-border);border-radius:var(--radius-control);touch-action:manipulation;justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}.friends-toggle[aria-expanded=true]{border-color:var(--color-accent);color:var(--color-accent)}.friends-badge{background:var(--color-accent);min-width:1.25rem;height:1.25rem;color:var(--color-paper);font-family:var(--font-record);text-align:center;border-radius:999px;padding-inline:.3rem;font-size:.7rem;line-height:1.25rem;position:absolute;top:-.4rem;right:-.4rem}.friends-panel{z-index:5;top:calc(100% + var(--space-sm));width:min(24rem, calc(100vw - 2 * var(--component-page-content-gutter)));overscroll-behavior:contain;max-height:min(36rem,75svh);padding:var(--space-lg);background:var(--color-paper);border:1px solid var(--color-border);border-radius:var(--radius-panel);box-shadow:var(--shadow-panel);position:absolute;left:0;overflow-y:auto}.friends-panel[hidden]{display:none}.notifications-menu{margin-left:auto;position:relative}.notifications-panel{left:auto;right:0}.notification-actions{gap:var(--space-xs);flex-wrap:wrap;display:flex}.notification-actions .button{min-height:2.75rem}.loan-overdue{color:var(--color-error);font-weight:400}.loan-exceptions>summary{cursor:pointer;color:var(--color-accent);font-size:var(--type-size-caption)}.loan-exceptions[open]{gap:var(--space-xs);display:grid}.notification-row[data-unread=true]{padding-left:var(--space-sm);border-left:3px solid var(--color-accent)}.friends-title{font-size:var(--type-size-title);margin-bottom:var(--space-xs)}.friend-invite{margin-top:var(--space-md)}.friend-invite-field{gap:var(--space-sm);display:flex}.friend-invite-field .username-field{flex:1;min-width:0}.friend-group{margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--color-border)}.friend-group h3{margin:0 0 var(--space-xs);font-family:var(--font-record);font-size:var(--type-size-caption);text-transform:uppercase;letter-spacing:.13em;color:var(--color-muted-ink);font-weight:400}.friend-group ul{margin:0;padding:0;list-style:none}.friend-row{gap:var(--space-sm);padding-block:var(--space-sm);display:grid}.friend-row+.friend-row{border-top:1px dashed var(--color-border)}.friend-row-identity{justify-content:space-between;align-items:baseline;gap:var(--space-xs) var(--space-md);flex-wrap:wrap;display:flex}.friend-username{font-family:var(--font-record);overflow-wrap:anywhere}.friend-detail,.friend-empty{color:var(--color-muted-ink);font-size:var(--type-size-caption)}.friend-row-actions{gap:var(--space-xs);flex-wrap:wrap;display:flex}.friend-row-actions .button{min-height:2.75rem}.friend-confirm p{margin:0 0 var(--space-sm);font-size:var(--type-size-caption)}.metadata-finder{gap:var(--space-xs);margin-top:var(--space-md);display:grid}.metadata-search{gap:var(--space-xs);display:grid}.metadata-candidates{margin:0;padding:0;list-style:none}.metadata-candidates li{justify-content:space-between;align-items:start;gap:var(--space-md);padding-block:var(--space-md);border-top:1px dashed var(--color-border);display:flex}.metadata-candidates h4{font-family:var(--font-display);overflow-wrap:anywhere;margin:0;font-size:1.125rem;font-weight:400}.metadata-candidates p{color:var(--color-muted-ink);margin:0}.metadata-candidates .button{flex-shrink:0;min-height:2.75rem}.metadata-correction{margin-top:var(--space-sm);padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-panel)}.shelf-capture{margin-top:var(--space-xl);padding-top:var(--space-xl);border-top:1px solid var(--color-border)}.capture-actions{align-items:center;gap:var(--space-sm);margin-top:var(--space-md);flex-wrap:wrap;display:flex}.capture-file-label{cursor:pointer;margin:0}.capture-file-label:focus-within{outline:3px solid var(--color-focus);outline-offset:5px}.capture-list{margin:var(--space-md) 0 0;gap:var(--space-md);padding:0;list-style:none;display:grid}.capture-item{gap:var(--space-sm);padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-panel);display:grid}.capture-item-heading{justify-content:space-between;align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.capture-name{font-family:var(--font-record);font-size:var(--type-size-caption);overflow-wrap:anywhere}.capture-item progress{width:100%;accent-color:var(--color-accent)}.capture-recognition{font-size:var(--type-size-caption);color:var(--color-muted-ink);margin:0}.capture-preview{object-fit:contain;background:color-mix(in srgb, var(--color-shelf-wood) 10%, var(--color-paper));border-radius:var(--radius-page);width:100%;height:auto;max-height:22rem;display:block}.camera-dialog{width:min(100% - 2 * var(--component-page-content-gutter), 44rem);padding:var(--space-lg);border:1px solid var(--color-border);border-radius:var(--radius-panel);background:var(--color-paper);color:var(--color-ink)}.camera-dialog::backdrop{background:color-mix(in srgb, var(--color-ink) 70%, transparent)}.camera-view[hidden]{display:none}.camera-view{object-fit:contain;background:var(--color-ink);border-radius:var(--radius-page);width:100%;max-height:65svh;margin-bottom:var(--space-md);display:block}.review-shell{max-width:var(--component-bookshelf-max-width);padding:var(--space-lg) var(--component-page-content-gutter) var(--space-xxl);margin:auto}.review-header{justify-content:space-between;align-items:baseline;gap:var(--space-md);margin-bottom:var(--space-xl);flex-wrap:wrap;display:flex}.review-layout{gap:var(--space-lg);grid-template-columns:minmax(0,3fr) minmax(18rem,2fr);grid-template-areas:"intro intro""canvas list""footer footer";align-items:start;display:grid}.review-intro{grid-area:intro}.review-save-status{font-family:var(--font-record);font-size:var(--type-size-caption);color:var(--color-muted-ink)}.review-save-status[data-state=conflict],.review-save-status[data-state=error]{color:var(--color-error)}.review-canvas-panel{top:var(--space-md);gap:var(--space-sm);grid-area:canvas;min-width:0;display:grid;position:sticky}.review-zoom{align-items:center;gap:var(--space-xs);font-family:var(--font-record);font-size:var(--type-size-caption);flex-wrap:wrap;display:flex}.review-zoom .button{min-height:2.5rem}.review-canvas{border:1px solid var(--color-border);border-radius:var(--radius-panel);background:var(--color-ink);overscroll-behavior:contain;max-height:80svh;overflow:auto}.review-stage{min-width:100%;position:relative}.review-stage img,.review-stage svg{width:100%;height:100%;position:absolute;inset:0}.review-stage img{object-fit:fill;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.review-region{cursor:grab;touch-action:none;outline:none}.review-region polygon{fill:color-mix(in srgb, var(--color-accent) 12%, transparent);stroke:var(--color-paper);stroke-width:2px}.review-region[data-problem=true] polygon{stroke:var(--color-book-gold);stroke-dasharray:6 4}.review-region[data-resolution=decor] polygon,.review-region[data-resolution=removed] polygon{fill:#0000;stroke:color-mix(in srgb, var(--color-paper) 55%, transparent)}.review-region[data-selected=true] polygon,.review-region:focus-visible polygon{fill:color-mix(in srgb, var(--color-focus) 28%, transparent);stroke:var(--color-focus);stroke-width:3px}.review-list-panel{gap:var(--space-md);grid-area:list;min-width:0;display:grid}.review-notes{padding:var(--space-md) var(--space-md) var(--space-md) var(--space-xl);border:1px dashed var(--color-border);border-radius:var(--radius-panel);font-size:var(--type-size-caption);margin:0}.review-items{gap:var(--space-sm);margin:0;padding:0;list-style:none;display:grid}.review-item{gap:var(--space-xs);padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-panel);background:var(--color-paper);scroll-margin:var(--space-md);display:grid}.review-item[data-selected=true]{border-color:var(--color-focus);box-shadow:0 0 0 1px var(--color-focus)}.review-item-heading{justify-content:space-between;align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.review-item-heading .text-button{text-align:left;font-family:var(--font-display);font-size:1.125rem}.book-status[data-problem=true]{color:var(--color-error)}.review-resolution{border:0;margin:0;padding:0;display:grid}.review-resolution legend{font-size:var(--type-size-caption);color:var(--color-muted-ink)}.review-resolution .checkbox-field{margin-top:var(--space-xs)}.review-fields{gap:var(--space-xs);display:grid}.review-fields select,.review-merge select{width:100%;min-height:var(--component-bookshelf-minimum-book-hit-target);padding:var(--space-sm);background:var(--color-paper);color:var(--color-ink);border:1px solid var(--color-border);border-radius:var(--radius-control);font:inherit}.review-merge{margin:0}.review-footer{justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-md);background:var(--color-paper);border:1px solid var(--color-border);border-radius:var(--radius-panel);box-shadow:var(--shadow-panel);flex-wrap:wrap;grid-area:footer;display:flex;position:sticky;bottom:0}.review-footer p{margin:0}.scene-builder{margin-top:var(--space-xl);padding:var(--space-lg);border:1px solid var(--color-border);border-radius:var(--radius-panel);background:var(--color-paper);gap:var(--space-sm);display:grid}.scene-builder h2,.scene-builder p{margin:0}.scene-preview{border-radius:var(--radius-page);background:var(--color-shelf-shadow);width:100%;position:relative;overflow:hidden}.scene-backing{object-fit:fill;width:100%;height:100%;position:absolute;inset:0}.scene-sprite{object-fit:fill;pointer-events:none;position:absolute}.sharing-switch{gap:var(--space-sm);margin-block:var(--space-md);padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-panel);display:grid}.sharing-switch p{margin:0}.shelf-scene-panel{margin-top:var(--space-xl);gap:var(--space-sm);display:grid}.shelf-scene-search{margin-block:0}.shelf-search-results{margin:var(--space-sm) 0 0;gap:var(--space-xs);padding:0;list-style:none;display:grid}.shelf-search-results li{align-items:baseline;gap:var(--space-xs) var(--space-sm);flex-wrap:wrap;display:flex}.shelf-scene{width:100%;margin-top:var(--motion-search-pull-lift-px);border-radius:var(--radius-page);background:color-mix(in srgb, var(--color-shelf-wood) 35%, var(--color-shelf-shadow));box-shadow:var(--shadow-panel);position:relative}.shelf-scene-backing{object-fit:fill;border-radius:inherit;width:100%;height:100%;position:absolute;inset:0}.shelf-scene-decor{object-fit:fill;pointer-events:none;position:absolute}.scene-book{cursor:pointer;touch-action:manipulation;background:0 0;border:0;padding:0;position:absolute}.scene-book:before{content:"";width:max(100%, var(--component-bookshelf-minimum-book-hit-target));position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.scene-book-body{transform-origin:bottom;pointer-events:none;transition:transform var(--motion-hover-duration-ms) var(--motion-easing), filter var(--motion-hover-duration-ms) var(--motion-easing);display:block;position:absolute;inset:0}.scene-book img{object-fit:fill;width:100%;height:100%;display:block}.scene-book:hover .scene-book-body,.scene-book:focus-visible .scene-book-body,.scene-book[data-peek=true] .scene-book-body{transform:translateY(calc(-1 * var(--motion-hover-lift-px))) scale(var(--motion-hover-scale));filter:drop-shadow(var(--shadow-lifted-book))}.scene-book[data-pulled=true] .scene-book-body{transform:translateY(calc(-1 * var(--motion-search-pull-lift-px))) scale(var(--motion-search-pull-scale));transition-duration:var(--motion-search-pull-duration-ms);filter:drop-shadow(var(--shadow-lifted-book))}.scene-book:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}.scene-book[data-fallback=true] .scene-book-body{background:var(--color-book-olive);color:var(--color-paper);border-radius:var(--radius-page);justify-content:center;align-items:center;display:flex;overflow:hidden}.scene-book-fallback{writing-mode:vertical-rl;font-family:var(--font-display);white-space:nowrap;text-overflow:ellipsis;max-height:100%;font-size:clamp(.55rem,1.2vw,.85rem);overflow:hidden}.scene-book[data-state=reserved] img{opacity:0}.scene-book[data-state=reserved] .scene-book-body{border:calc(var(--component-bookshelf-reservation-stroke-width) * 1px) dashed var(--color-reservation-outline);background:0 0}.scene-book[data-state=on_loan] .scene-book-body{visibility:hidden}.scene-book[data-state=on_loan]:focus-visible{outline-style:dashed}.shelf-scene[data-degraded=true]{background:repeating-linear-gradient(0deg, var(--color-shelf-wood) 0 .6rem, color-mix(in srgb, var(--color-shelf-wood) 20%, var(--color-paper)) .6rem 33%)}.shelf-scene-selection{font-family:var(--font-display);color:var(--color-muted-ink);margin:0}.shelf-list-view{margin-top:var(--space-lg)}.checkout-controls{margin-top:var(--space-lg);gap:var(--space-sm);justify-items:start;display:grid}.checkout-controls .form-message{margin:0}.checkout-state{font-family:var(--font-display);margin:0}.catalog-result-status{justify-items:end;gap:var(--space-xs);display:grid}.catalog-result-status .checkout-controls{justify-items:end;margin-top:0}.borrowed-pile,.reading-history,.account-settings,.book-locations{margin-block:var(--space-xl)}.settings-block{gap:var(--space-xs);padding-block:var(--space-lg);border-top:1px solid var(--color-border);display:grid}.settings-block h3{font-family:var(--font-display);margin:0;font-weight:400}.settings-form{gap:var(--space-xs);justify-items:start;max-width:28rem;display:grid}.settings-form input{width:100%}.button.danger{background:var(--color-error);border-color:var(--color-error);color:var(--color-paper)}.review-suggestion .text-button{font-size:inherit}.goodreads-importer{gap:var(--space-xs);margin-top:var(--space-md);display:grid}.reading-records{margin:var(--space-lg) 0 0;padding:0;list-style:none}.reading-record{gap:var(--space-xs);padding-block:var(--space-lg);border-top:1px solid var(--color-border);min-width:0;display:grid}.reading-record-heading{justify-content:space-between;align-items:baseline;gap:var(--space-sm);flex-wrap:wrap;display:flex}.reading-record h3{font-family:var(--font-display);overflow-wrap:anywhere;margin:0;font-weight:400}.reading-rating{color:var(--color-accent);letter-spacing:.08em}.reading-rating:not([aria-label]){color:var(--color-muted-ink);letter-spacing:0;font-size:var(--type-size-caption)}.reading-visibility>label:not(.checkbox-field){gap:var(--space-xs);font-size:var(--type-size-caption);display:grid}.reading-review p{margin:0 0 var(--space-sm);overflow-wrap:anywhere}.reading-spoiler>summary{cursor:pointer;color:var(--color-accent)}.reading-visibility,.reading-match,.reading-delete{align-items:end;gap:var(--space-sm);flex-wrap:wrap;display:flex}.reading-note{margin-top:var(--space-lg);padding-top:var(--space-md);border-top:1px dashed var(--color-border)}.reading-note h3{font-family:var(--font-record);font-size:var(--type-size-caption);text-transform:uppercase;letter-spacing:.13em;color:var(--color-muted-ink);margin:0;font-weight:400}.sms-reminders{margin-block:var(--space-xl);gap:var(--space-sm);justify-items:start;display:grid}.sms-reminders h2,.sms-reminders .form-message{margin:0}.pile-books{margin:var(--space-lg) 0 0;gap:var(--space-md);padding:0;list-style:none;display:grid}.pile-book{align-items:center;gap:var(--space-md);display:flex}.pile-book-body{border-radius:var(--radius-page);background:var(--color-book-olive);width:2.25rem;height:7rem;color:var(--color-paper);flex-shrink:0;justify-content:center;align-items:center;display:flex;overflow:hidden}.pile-book-body img{object-fit:cover;width:100%;height:100%}.pile-book-title{writing-mode:vertical-rl;font-family:var(--font-display);font-size:var(--type-size-caption);white-space:nowrap;text-overflow:ellipsis;max-height:100%;overflow:hidden}.pile-book[data-appearance=dotted] .pile-book-body{color:var(--color-muted-ink);border:calc(var(--component-bookshelf-reservation-stroke-width) * 1px) dashed var(--color-reservation-outline);background:0 0}.pile-book-label{gap:var(--space-xs);overflow-wrap:anywhere;min-width:0;display:grid}.pile-book-label span{color:var(--color-muted-ink);font-size:var(--type-size-caption)}.pile-book-label .pile-overdue{color:var(--color-error);font-family:var(--font-record);text-transform:uppercase;letter-spacing:.1em}.pile-book-actions{gap:var(--space-xs);margin-top:var(--space-xs);flex-wrap:wrap;display:flex}.pile-requests{margin:var(--space-sm) 0 0;padding:0;list-style:none}.pile-requests li{justify-content:space-between;align-items:center;gap:var(--space-sm);padding-block:var(--space-sm);border-top:1px solid var(--color-border);flex-wrap:wrap;display:flex}.borrowed-pile h3{font-family:var(--font-display);margin:var(--space-lg) 0 0;font-weight:400}.shelf-list-view>summary{cursor:pointer;color:var(--color-accent)}.book-dialog{max-height:calc(100svh - 2 * var(--component-page-content-gutter));overscroll-behavior:contain;overflow:hidden auto}.book-dialog-content{min-height:100%}.book-dialog .book-status{text-transform:none}.book-dialog[open] .record-page{transform-origin:100%;animation:book-page-open var(--motion-book-open-duration-ms) var(--motion-easing)}@keyframes book-page-open{0%{opacity:.4;transform:perspective(1400px)rotateY(80deg)}to{opacity:1;transform:perspective(1400px)rotateY(0)}}.book-facts{gap:var(--space-xs);margin:var(--space-lg) 0 0;display:grid}.book-facts div{gap:var(--space-xs) var(--space-md);flex-wrap:wrap;display:flex}.book-facts dt{min-width:7rem;color:var(--color-muted-ink);font-family:var(--font-record);font-size:var(--type-size-caption)}.book-facts dd{overflow-wrap:anywhere;margin:0}.detail-note blockquote{font-family:var(--font-display);margin:0;font-style:italic}@media (max-width:48rem){.masthead{min-height:6rem;padding-block:var(--space-md);gap:var(--space-sm);flex-wrap:wrap}.masthead>.eyebrow{font-size:.65rem}.landing{gap:var(--space-md);grid-template-columns:1fr}.hero-art{width:100%;max-width:28rem;margin:auto;padding-inline:0}.book-row{padding-inline:var(--space-sm)}.decorative-books .spine{width:3rem}.results li{flex-direction:column;align-items:start}.open-book{grid-template-columns:1fr}.record-page{box-shadow:none;border-bottom:1px solid var(--color-border)}.record-page,.detail-page{padding:var(--space-lg)}.onboarding-progress{row-gap:var(--space-md);grid-template-columns:repeat(2,1fr)}.inventory-isbn-grid{grid-template-columns:1fr;gap:0}.inventory-heading,.catalog-heading,.inventory-copy-heading,.catalog-results li{flex-direction:column}.catalog-result-status,.catalog-result-status .checkout-controls{justify-items:start}.username-field{padding-top:var(--space-sm);flex-direction:column;align-items:stretch}.username-field input{padding-left:var(--space-md)}.shelf-topbar{margin-bottom:var(--space-xl);flex-wrap:wrap}.friends-menu,.notifications-menu{display:contents}.review-layout{grid-template-columns:1fr;grid-template-areas:"intro""canvas""list""footer"}.review-canvas-panel{position:static}.review-canvas{max-height:55svh}.metadata-candidates li{flex-direction:column}.friends-panel{width:100%;max-height:none;box-shadow:none;flex-basis:100%;order:1;position:static}.friend-invite-field .username-field{flex-direction:row;align-items:center;padding-top:0}.friend-invite-field .username-field input{padding-left:.2rem}}@media (prefers-reduced-motion:reduce){.spine,button.spine:hover,button.spine:focus-visible,button.spine.pulled{transition-duration:var(--motion-reduced-motion-duration-ms);transform:none}.book-dialog[open],.book-dialog[open] .record-page{animation:none}.scene-book-body,.scene-book:hover .scene-book-body,.scene-book:focus-visible .scene-book-body,.scene-book[data-peek=true] .scene-book-body,.scene-book[data-pulled=true] .scene-book-body{transition-duration:var(--motion-reduced-motion-duration-ms);transform:none}.scene-book[data-peek=true],.scene-book[data-pulled=true]{outline:3px solid var(--color-focus);outline-offset:2px}}
