:root {
 /* Samples from the owner's JPG; hover and light surfaces are derived UI colours. */
 --kp-navy:#122949;--kp-blue:#2C76CB;--kp-teal:#13C2BD;--kp-light-gray:#D8DBE2;
 --kp-blue-pressed:#2463AB;--kp-brand-light:#EDF4FC;
 --kp-primary:var(--kp-blue);--kp-primary-dark:var(--kp-navy);--kp-primary-light:var(--kp-brand-light);
 --kp-accent:var(--kp-blue);--kp-accent-hover:var(--kp-blue-pressed);--kp-bg:#F8FAFC;--kp-card-bg:#FFFFFF;
 --kp-text-main:var(--kp-navy);--kp-text-muted:#64748B;--kp-border:var(--kp-light-gray);
 --kp-radius-lg:16px;--kp-radius-md:12px;--kp-radius-sm:8px;--kp-radius-full:9999px;
 --kp-shadow-sm:0 1px 3px #0000000d;--kp-shadow-md:0 4px 12px #0000000d;--kp-shadow-lg:0 10px 25px -5px #0000001a;
}
body:is(.knigopolka-app-page,.knigopolka-home) {
 --brand-cyan:var(--kp-primary);--brand-cyan-light:var(--kp-primary-light);--accent:var(--kp-accent);
 --brand-900:var(--kp-navy);--brand-700:var(--kp-blue);--brand-500:var(--kp-primary);--kp-home-teal:var(--kp-primary);--kp-home-ink:var(--kp-text-main);--kp-home-muted:var(--kp-text-muted);
 --text:var(--kp-navy);--text-muted:var(--kp-text-muted);--focus:var(--kp-blue);--kp-green:var(--kp-blue);--kp-coral:var(--kp-blue);--color-green:var(--kp-blue);--color-red:var(--kp-blue);--kp-home-coral:var(--kp-blue);--kp-home-teal-dark:var(--kp-blue-pressed);
 --primary:var(--kp-primary);--surface:var(--kp-card-bg);--border:var(--kp-border);--kp-cream:var(--kp-bg);
 background:var(--kp-bg);color:var(--kp-text-main);
 font-family:'Plus Jakarta Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
}
:is(.knigopolka-app-page,.knigopolka-home) :is(.knigopolka-button,.kp-primary-button) {background:var(--kp-accent);color:white!important;border-color:var(--kp-accent);border-radius:10px;}
:is(.knigopolka-app-page,.knigopolka-home) :is(.knigopolka-button,.kp-primary-button):hover {background:var(--kp-accent-hover);color:white!important;}
:is(.knigopolka-app-page,.knigopolka-home) :is(input,select,textarea,button,a):focus-visible {outline:3px solid var(--kp-primary);outline-offset:3px;}
.knigopolka-app-desktop-nav a.is-active,.knigopolka-app-bottom-nav a.is-active {color:var(--kp-primary);}
.knigopolka-app-desktop-nav a.is-active {background:var(--kp-primary-light);}
.kp-hero {background:linear-gradient(135deg,var(--kp-primary-dark),var(--kp-primary));color:white;border-radius:0 0 16px 16px;}
.kp-hero :is(h1,h1 span,.kp-kicker,.kp-hero-text) {color:white;}
.kp-hero .kp-secondary-button {background:white;color:var(--kp-primary-dark);border-color:white;}
.kp-search-section {background:var(--kp-primary);padding-bottom:24px;}
.kp-profile-metrics {grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;}
.kp-profile-metrics a {background:#ffffff;border:1px solid rgba(226,232,240,0.6);border-radius:16px;color:var(--kp-text-muted);padding:16px 12px;box-shadow:0 2px 10px -1px rgba(15,23,42,0.03);transition:all 0.2s cubic-bezier(0.16,1,0.3,1);}
.kp-profile-metrics a:hover {transform:translateY(-2px);box-shadow:0 6px 18px -2px rgba(15,23,42,0.06);border-color:#cbd5e1;}
.kp-profile-metrics strong {color:var(--kp-primary-dark);font-size:24px;font-weight:700;}
.kp-tile-cover,.knigopolka-confirm-cover,.knigopolka-single-book .knigopolka-book-cover {aspect-ratio:2 / 3;height:auto;border-radius:16px;overflow:hidden;background:var(--kp-border);}
.kp-tile-cover img,.knigopolka-confirm-cover img {width:100%;height:100%;object-fit:cover;}
.kp-card-badge {background:var(--kp-text-main);color:white;}
.kp-card-badge.is-give,.kp-card-badge.kp-badge-free {background:#DCFCE7;color:#166534;}
.kp-card-badge.kp-badge-lend {background:var(--kp-primary-light);color:var(--kp-primary-dark);}
.kp-library-fields {display:grid;gap:12px;margin:14px 0;padding:16px;background:var(--kp-primary-light);border-radius:16px;}
.kp-library-fields label {display:block;overflow-wrap:anywhere;}
.kp-library-fields input[type=text] {display:block;width:100%;min-height:44px;box-sizing:border-box;}
.kp-library-fields small {color:var(--kp-text-muted);}
.kp-location-tag,.kp-read-tag {display:inline-block;background:var(--kp-primary-light);color:var(--kp-primary-dark);padding:5px 10px;border-radius:20px;max-width:100%;overflow-wrap:anywhere;font-size:13px;}
.kp-library-editor {margin:12px 0;}.kp-library-editor summary {cursor:pointer;min-height:44px;display:flex;align-items:center;font-size:13px;}
.kp-login-mark {display:grid;place-items:center;width:64px;height:64px;margin:0 auto 18px;background:var(--kp-primary);color:white;font-size:36px;font-weight:800;border-radius:16px;}
.knigopolka-login-panel {border-radius:16px;background:white;box-shadow:var(--kp-shadow-md);}
.kp-mobile-filter-trigger,.kp-mobile-contact {display:none;}
.kp-filter-sheet {box-sizing:border-box;width:min(100%,640px);max-height:85dvh;margin:auto auto 0;padding:20px 20px max(20px,env(safe-area-inset-bottom));border:1px solid var(--kp-border);border-radius:20px 20px 0 0;overflow:auto;background:white;}
.kp-filter-sheet::backdrop {background:#0f172a80;}
.kp-filter-sheet .knigopolka-filter-disclosure>summary {display:none;}
.kp-filter-sheet .knigopolka-filter-grid {display:grid;grid-template-columns:1fr;}
.kp-filter-sheet-open {overflow:hidden;}
@media(max-width:767px) {
 body:is(.knigopolka-app-page,.knigopolka-home) {padding-bottom:calc(88px + env(safe-area-inset-bottom));}
 .knigopolka-app-bottom-nav {display:flex;position:fixed;bottom:0;left:0;right:0;min-height:64px;box-sizing:content-box;padding:0 0 env(safe-area-inset-bottom);z-index:1000;background:white;}
 .knigopolka-app-bottom-nav a {flex:1;min-width:0;min-height:48px;}
 .knigopolka-app-bottom-nav .knigopolka-app-bottom-add>span {background:var(--kp-accent);color:white;box-shadow:0 4px 12px #12294933;}
 .kp-profile-metrics {grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
 .kp-profile-metrics a {padding:14px 10px;}
 .knigopolka-app-bottom-nav {background:#ffffffea;backdrop-filter:blur(16px);border-top:1px solid rgba(226,232,240,0.7);box-shadow:0 -4px 20px rgba(15,23,42,0.04);}
 .kp-mobile-filter-trigger {display:block;position:fixed;bottom:calc(80px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);border:0;border-radius:24px;padding:12px 22px;min-height:44px;background:var(--kp-primary);color:white;box-shadow:var(--kp-shadow-lg);z-index:990;}
 .kp-mobile-contact {display:flex;position:fixed;bottom:calc(64px + env(safe-area-inset-bottom));left:0;right:0;background:white;padding:10px 16px;border-top:1px solid var(--kp-border);z-index:995;}
 .kp-mobile-contact a {width:100%;text-align:center;box-sizing:border-box;}
 body.kp-has-mobile-contact {padding-bottom:calc(156px + env(safe-area-inset-bottom));}
 .kp-quick-links,.kp-category-chips {flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;}
}
@media(min-width:768px) {.knigopolka-app-bottom-nav {display:none;}}
.kp-hero .kp-hero-actions .kp-secondary-button {background:white;color:var(--kp-primary-dark)!important;}
.kp-card-badge.kp-badge-sale {background:var(--kp-text-main);color:white;}
.knigopolka-form :is(input:not([type=checkbox]):not([type=radio]),select,textarea) {border-radius:10px;}
.knigopolka-filter-chips {scrollbar-width:none;}
.knigopolka-filter-chips::-webkit-scrollbar {display:none;}
@media(max-width:767px) {
 .kp-popular-section .kp-book-row {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible;}
 .kp-popular-section .kp-book-row .knigopolka-book-card {width:auto;min-width:0;}
}
.kp-filter-sheet[open] {position:fixed;inset:auto 0 0;margin:0 auto;max-width:100vw;max-height:min(85dvh,calc(var(--kp-visible-height,100dvh) - 16px));}
.kp-filter-sheet h2 {font-size:22px;margin:0 0 16px;}
/* 2.15.5: original identity, applied to our UI only. */
.knigopolka-app-page a,.knigopolka-home a {text-underline-offset:3px;}
.knigopolka-app-page :is(.knigopolka-link,.knigopolka-text-button,.kp-kicker),.knigopolka-home :is(.knigopolka-link,.knigopolka-text-button,.kp-kicker) {color:var(--kp-blue);}
.knigopolka-app-page :is(.knigopolka-secondary-button,.kp-secondary-button),.knigopolka-home :is(.knigopolka-secondary-button,.kp-secondary-button) {border-color:var(--kp-blue);color:var(--kp-blue)!important;background:var(--kp-card-bg);}
.knigopolka-app-bottom-nav a.is-active,.knigopolka-app-desktop-nav a.is-active {color:var(--kp-blue);}
.knigopolka-app-page .knigopolka-app-bottom-nav .knigopolka-app-bottom-add>span {background:var(--kp-blue);color:white;box-shadow:0 4px 12px #12294933;}
:is(.knigopolka-app-page,.knigopolka-home) :is(.knigopolka-button,.kp-primary-button):active {background:var(--kp-blue-pressed);transform:translateY(1px);}
:is(.knigopolka-app-page,.knigopolka-home) :is(button,input,select):disabled {opacity:.55;cursor:not-allowed;}
.knigopolka-app-page .knigopolka-shelf-tabs a.is-active,.knigopolka-app-page .knigopolka-view-switch a.is-active,.kp-filter-chip.is-active {background:var(--kp-blue);border-color:var(--kp-blue);color:white;}
.knigopolka-app-page .knigopolka-unified-input-row .knigopolka-camera-button {color:var(--kp-blue);background:var(--kp-brand-light);}
.kp-wordmark>span,.knigopolka-eyebrow,.kp-profile-metrics strong {color:var(--kp-blue);}
.knigopolka-home .kp-hero .kp-kicker {color:white;}
.kp-geo-map {scroll-margin-top:100px;scroll-margin-bottom:calc(100px + env(safe-area-inset-bottom));}
.kp-rec-pick {scroll-margin-top:100px;}
.kp-rec-status + button {margin:8px 10px 12px 0;}
/* Compact and detailed deliberately have different layouts, independent of viewport. */
body.knigopolka-app-page .knigopolka-shelf-list.is-view-compact {display:grid;grid-template-columns:minmax(0,1fr);gap:10px;}
body.knigopolka-app-page .knigopolka-shelf-list.is-view-compact .knigopolka-shelf-card {display:grid;grid-template-columns:52px minmax(0,1fr);gap:10px;padding:10px;align-items:start;}
body.knigopolka-app-page .knigopolka-shelf-list.is-view-compact .knigopolka-shelf-cover {width:52px;min-width:52px;height:78px;aspect-ratio:2/3;margin:0;border-radius:8px;background:var(--kp-brand-light);}
body.knigopolka-app-page .knigopolka-shelf-list.is-view-compact .knigopolka-shelf-cover :is(img,.knigopolka-cover-placeholder) {width:52px;height:78px;object-fit:cover;}
body.knigopolka-app-page .knigopolka-shelf-list.is-view-compact .knigopolka-shelf-card-body {display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 8px;padding:0;}
.knigopolka-shelf-list.is-view-compact .knigopolka-shelf-card-body > :is(.knigopolka-meta,.knigopolka-holder-state,.kp-tile-age,.knigopolka-tile-detail) {display:none;}
.knigopolka-shelf-list.is-view-compact .knigopolka-shelf-card-body > :is(h2,.knigopolka-eyebrow,.kp-tile-author,.kp-read-tag) {grid-column:1;margin:0;}
.knigopolka-shelf-list.is-view-compact .knigopolka-shelf-card-body h2 {font-size:14px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.knigopolka-shelf-list.is-view-compact .kp-tile-author {font-size:12px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.knigopolka-shelf-list.is-view-compact .kp-ux-actions {grid-column:2;grid-row:1/4;align-self:center;margin:0;}
.knigopolka-shelf-list.is-view-compact .kp-library-editor {grid-column:1/-1;margin:0;}
.knigopolka-shelf-list.is-view-compact .kp-library-editor summary {min-height:32px;font-size:12px;}
.knigopolka-shelf-list.is-view-compact .kp-library-editor:not([open]) {padding:0;}
.knigopolka-shelf-list.is-view-compact .kp-shelf-year {display:none;}
body.knigopolka-app-page .knigopolka-shelf-list.is-view-detailed {display:grid;grid-template-columns:minmax(0,1fr);gap:18px;}
body.knigopolka-app-page .knigopolka-shelf-list.is-view-detailed .knigopolka-shelf-card {display:grid;grid-template-columns:clamp(88px,26vw,144px) minmax(0,1fr);gap:16px;padding:16px;align-items:start;}
body.knigopolka-app-page .knigopolka-shelf-list.is-view-detailed .knigopolka-shelf-cover {width:100%;height:auto;aspect-ratio:2/3;margin:0;}
.knigopolka-shelf-list.is-view-detailed .knigopolka-shelf-card-body h2 {font-size:18px;line-height:1.4;display:block;overflow:visible;}
body.knigopolka-app-page .knigopolka-grid.is-view-compact .knigopolka-book-card {display:grid;grid-template-columns:52px minmax(0,1fr);gap:10px;padding:10px;}
body.knigopolka-app-page .knigopolka-grid.is-view-compact .knigopolka-book-card > .kp-tile-cover {width:52px;height:78px;min-height:0;flex-basis:52px;margin:0;border-radius:8px;aspect-ratio:2/3;}
body.knigopolka-app-page .knigopolka-grid.is-view-compact .knigopolka-card-body {padding:0;gap:4px;min-width:0;}
.knigopolka-grid.is-view-compact .kp-tile-title {padding-right:36px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.3;font-size:14px;}
.knigopolka-grid.is-view-compact :is(.kp-tile-age,.kp-rec-reason,.kp-tile-link,.kp-card-badge) {display:none;}
body.knigopolka-app-page .knigopolka-grid.is-view-detailed .knigopolka-book-card {display:grid;grid-template-columns:clamp(88px,24vw,144px) minmax(0,1fr);gap:16px;padding:16px;}
body.knigopolka-app-page .knigopolka-grid.is-view-detailed .knigopolka-book-card > .kp-tile-cover {width:100%;height:auto;aspect-ratio:2/3;margin:0;}
.knigopolka-grid.is-view-detailed .kp-tile-title {font-size:18px;line-height:1.4;display:block;}
/* Unpublished/no-price captions stay relevant in detailed mode; compact keeps a real sale price. */
.kp-compact-offer {font-size:12px;line-height:1.3;margin:0;color:var(--kp-navy);}

.knigopolka-shelf-list.is-view-compact .kp-compact-offer {grid-column:1;margin:0;}
