/* Libriciclo CSS Framework: Base Variables, Fonts, and Reset */

/* --- NAVBAR CUSTOMIZATION --- */
.navbar, .navbar.navbar-light.bg-light, .navbar.bg-light {
    background-color: var(--color-blu-scuro) !important;
    box-shadow: 0 2px 8px 0 rgba(5,64,99,0.08);
}

.navbar .navbar-brand {
    font-family: 'Lato', 'Nunito Sans', sans-serif;
    font-size: 1.5rem;
    font-weight: 800;
    letter-spacing: 0.02em;
    color: #fff !important;
    display: flex;
    align-items: center;
}
.navbar .navbar-brand .brand-white { color: #fff !important; }
.navbar .navbar-brand .brand-giallo { color: var(--color-giallo) !important; }
.navbar .navbar-brand .brand-arancione { color: var(--color-arancione) !important; }

.navbar .nav-link, .navbar .navbar-toggler, .navbar .navbar-toggler-icon {
    color: #fff !important;
}


/* Font Import */
@font-face {
  font-family: 'Lato';
  src: url('/static/fonts/lato.woff2') format('woff2'),
       url('/static/fonts/lato.woff') format('woff');
  font-weight: normal;
  font-style: normal;
}
@font-face {
  font-family: 'Nunito Sans';
  src: url('/static/fonts/nunito-sans.woff2') format('woff2'),
       url('/static/fonts/nunito-sans.woff') format('woff');
  font-weight: normal;
  font-style: normal;
}

:root {
  --font-family-nunito-sans: 'Nunito Sans', sans-serif;
  --font-family-roboto: 'Roboto', sans-serif;
  --font-family-lato: 'Lato', sans-serif;
  --color-blu-scuro: rgba(5, 64, 99, 1);
  --color-azzurro: rgba(13, 140, 216, 1);
  --color-campitura-1: rgba(240, 247, 251, 1);
  --color-giallo: rgba(242, 201, 76, 1);
  --color-arancione: rgba(255, 111, 52, 1);
  --color-verde: rgba(39, 224, 158, 1);
  --color-bianco: rgba(255, 255, 255, 1);
  --color-nero: rgba(17, 17, 17, 1);
  --color-grigio: rgba(203, 203, 203, 1);
  --color-campitura-2: rgba(255, 249, 229, 1);
  --color-campitura-3: rgba(225, 255, 244, 1);
  --color-campitura-4: rgba(253, 222, 209, 1);
  --text-primary: var(--color-blu-scuro);
  --text-secondary: var(--color-nero);
  --text-accent: var(--color-azzurro);
  --text-warning: var(--color-arancione);
  --text-success: var(--color-verde);
  --text-white: var(--color-bianco);
  --text-yellow: var(--color-giallo);
  --text-orange: var(--color-arancione);
}

/* CSS Reset */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  font-family: var(--font-family-nunito-sans);
  background: var(--color-campitura-1);
  color: var(--text-secondary);
  width: 100%;
  min-height: 100vh;
  overflow-x: hidden;
}

img {
  max-width: 100%;
  height: auto;
}

/* Utility Classes: Colors */
.text-primary {
  color: var(--text-primary) !important;
}
.text-secondary {
  color: var(--text-secondary) !important;
}
.text-accent {
  color: var(--text-accent) !important;
}
.text-warning {
  color: var(--text-warning) !important;
}
.text-success {
  color: var(--text-success) !important;
}
.text-white {
  color: var(--text-white) !important;
}
.text-yellow {
  color: var(--text-yellow) !important;
}
.text-orange {
  color: var(--text-orange) !important;
}

.bg-primary {
  background: var(--color-blu-scuro) !important;
}
.bg-accent {
  background: var(--color-azzurro) !important;
}
.bg-warning {
  background: var(--color-arancione) !important;
}
.bg-success {
  background: var(--color-verde) !important;
}
.bg-white {
  background: var(--color-bianco) !important;
}
.bg-yellow {
  background: var(--color-giallo) !important;
}
.bg-orange {
  background: var(--color-arancione) !important;
}

/* Utility Classes: Font */
.font-nunito {
  font-family: var(--font-family-nunito-sans) !important;
}
.font-roboto {
  font-family: var(--font-family-roboto) !important;
}
.font-lato {
  font-family: var(--font-family-lato) !important;
}

/* Spacing Utilities */
:root {
  --sp-0: 0;
  --sp-1: 0.25rem;
  --sp-2: 0.5rem;
  --sp-3: 1rem;
  --sp-4: 1.5rem;
  --sp-5: 3rem;
}
.m-0 { margin: var(--sp-0) !important; }
.m-1 { margin: var(--sp-1) !important; }
.m-2 { margin: var(--sp-2) !important; }
.m-3 { margin: var(--sp-3) !important; }
.m-4 { margin: var(--sp-4) !important; }
.m-5 { margin: var(--sp-5) !important; }
.mt-1 { margin-top: var(--sp-1) !important; }
.mb-1 { margin-bottom: var(--sp-1) !important; }
.ml-1 { margin-left: var(--sp-1) !important; }
.mr-1 { margin-right: var(--sp-1) !important; }
.mt-2 { margin-top: var(--sp-2) !important; }
.mb-2 { margin-bottom: var(--sp-2) !important; }
.ml-2 { margin-left: var(--sp-2) !important; }
.mr-2 { margin-right: var(--sp-2) !important; }
.mt-3 { margin-top: var(--sp-3) !important; }
.mb-3 { margin-bottom: var(--sp-3) !important; }
.ml-3 { margin-left: var(--sp-3) !important; }
.mr-3 { margin-right: var(--sp-3) !important; }
.p-0 { padding: var(--sp-0) !important; }
.p-1 { padding: var(--sp-1) !important; }
.p-2 { padding: var(--sp-2) !important; }
.p-3 { padding: var(--sp-3) !important; }
.p-4 { padding: var(--sp-4) !important; }
.p-5 { padding: var(--sp-5) !important; }
.pt-1 { padding-top: var(--sp-1) !important; }
.pb-1 { padding-bottom: var(--sp-1) !important; }
.pl-1 { padding-left: var(--sp-1) !important; }
.pr-1 { padding-right: var(--sp-1) !important; }
.pt-2 { padding-top: var(--sp-2) !important; }
.pb-2 { padding-bottom: var(--sp-2) !important; }
.pl-2 { padding-left: var(--sp-2) !important; }
.pr-2 { padding-right: var(--sp-2) !important; }
.pt-3 { padding-top: var(--sp-3) !important; }
.pb-3 { padding-bottom: var(--sp-3) !important; }
.pl-3 { padding-left: var(--sp-3) !important; }
.pr-3 { padding-right: var(--sp-3) !important; }

/* Button Styles */

.button-group {
    display: flex;
    gap: 1rem;
    justify-content: center;
    margin-top: 1.5rem;
}

.pill-btn {
    display: inline-block;
    border-radius: .3rem;
    font-family: 'Nunito Sans', sans-serif;
    font-weight: 700;
    font-size: 1.1rem;
    padding: 0.7rem 2.5rem;
    border: none;
    background: transparent;
    color: var(--color-azzurro);
    box-shadow: 0 2px 8px rgba(13,140,216,0.08);
    transition: background 0.2s, color 0.2s, box-shadow 0.2s;
    outline: none;
    cursor: pointer;
}
.pill-btn.active,
.pill-btn:focus,
.pill-btn.selected {
    background: var(--color-azzurro);
    color: #fff;
    box-shadow: none;
    border: none;
}
.pill-btn:hover {
    background: var(--color-azzurro);
    color: #fff;
    border: none;
}

.pill-btn-sm {
    font-size: 0.92rem;
    padding: 0.32rem 1.1rem;
    border-radius: .3rem;
}
.pill-btn-sm.active,
.pill-btn-sm:focus,
.pill-btn-sm.selected {
    background: var(--color-azzurro);
    color: #fff;
    box-shadow: none;
    border: none;
}
.pill-btn-sm:hover {
    background: var(--color-azzurro);
    color: #fff;
    border: none;
}

.btn {
  display: inline-block;
  font-family: inherit;
  font-size: 1rem;
  font-weight: 600;
  padding: 0.5rem 1.25rem;
  border-radius: 0.375rem;
  border: none;
  cursor: pointer;
  transition: background 0.2s, color 0.2s, box-shadow 0.2s;
  text-align: center;
  text-decoration: none;
}
.btn-primary {
  background: var(--color-blu-scuro);
  color: var(--color-bianco);
}
.btn-accent {
  background: var(--color-azzurro);
  color: var(--color-bianco);
}
.btn-secondary {
  background: var(--color-campitura-3);
  color: var(--color-blu-scuro);
}
.btn-outline {
  background: transparent;
  border: 2px solid var(--color-blu-scuro);
  color: var(--color-blu-scuro);
}
.btn-rounded {
  border-radius: 999px;
}
.btn-block {
  display: block;
  width: 100%;
}
.btn:hover, .btn:focus {
  filter: brightness(0.95);
  box-shadow: 0 2px 8px rgba(5,64,99,0.08);
}

/* Card Styles */
.card {
  background: var(--color-bianco);
  border-radius: 0.75rem;
  box-shadow: 0 2px 12px rgba(5,64,99,0.10);
  padding: 1.5rem;
  margin-bottom: 1.5rem;
}
.card-accent {
  border-left: 6px solid var(--color-azzurro);
}
.card-warning {
  border-left: 6px solid var(--color-arancione);
}

/* Flex Helpers */
.d-flex { display: flex !important; }
.flex-column { flex-direction: column !important; }
.flex-row { flex-direction: row !important; }
.justify-center { justify-content: center !important; }
.justify-between { justify-content: space-between !important; }
.align-center { align-items: center !important; }
.align-start { align-items: flex-start !important; }
.align-end { align-items: flex-end !important; }
.gap-1 { gap: var(--sp-1) !important; }
.gap-2 { gap: var(--sp-2) !important; }
.gap-3 { gap: var(--sp-3) !important; }

/* Border Radius & Shadow */
.rounded { border-radius: 0.3rem !important; }
.rounded-sm { border-radius: 0.3rem !important; }
.rounded-lg { border-radius: 0.3rem !important; }
.shadow { box-shadow: 0 2px 12px rgba(5,64,99,0.10) !important; }
.shadow-sm { box-shadow: 0 1px 4px rgba(5,64,99,0.08) !important; }
.shadow-lg { box-shadow: 0 6px 24px rgba(5,64,99,0.18) !important; }

/* Divider */
.divider {
  border-bottom: 1px solid var(--color-grigio);
  margin: 1rem 0;
}

/* --- BUY PAGE BOOK CARDS --- */

.books-list-wrapper {
    background: #fff;
    border-radius: 0.3rem;
    max-width: 540px;
    margin: 0 auto 2.5rem auto;
    padding: 1.2rem 1.1rem 1.4rem 1.1rem;
}

.books-list-subtitle {
    font-family: 'Nunito Sans', sans-serif;
    color: var(--color-azzurro);
    font-size: 1.08rem;
    font-weight: 700;
    letter-spacing: 0.2px;
    margin-bottom: 0.6rem;
    margin-top: 0.7rem;
}

.books-list {
    display: flex;
    flex-direction: column;
    gap: 0.7rem;
    background: #fff;
    border-radius: 0.3rem;
    padding: 1.2rem 0.6rem;
    max-width: 540px;
    margin: 0 auto;
    width: 100%;
}

/* For the area behind the books-list, ensure the parent container uses the site background color. If needed, add a .books-list-wrapper class to wrap .books-list and apply padding/margin there for spacing. */

.book-entry {
    background: var(--color-campitura-1, #f6fafd);
    border-radius: 0.3rem;
    border: none;
    box-shadow: none;
    display: flex;
    align-items: flex-start;
    padding: 0.4rem 0.7rem;
    gap: 0.6rem;
    width: 100%;
}

.book-cover {
    flex: 0 0 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-right: 0.5rem;
}

.book-cover img {
    width: 44px;
    height: 62px;
    border-radius: 0.5rem;
    object-fit: cover;
    box-shadow: none;
    background: var(--color-bianco);
}

.book-info {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    gap: 0.05rem;
    justify-content: center;
}

.book-subject {
    font-size: 0.85rem;
    color: var(--color-azzurro);
    font-family: 'Nunito Sans', 'Roboto', sans-serif;
    font-weight: 700;
    letter-spacing: 0.02em;
    margin-bottom: 0.08rem;
    text-transform: uppercase;
    line-height: 1.2;
}

.book-title {
    font-size: 1rem;
    font-family: 'Nunito Sans', sans-serif;
    font-weight: 700;
    color: var(--color-blu-scuro);
    margin-bottom: 0.03rem;
    line-height: 1.13;
    letter-spacing: 0.01em;
}

.book-author {
    font-size: 0.89rem;
    font-family: 'Roboto', sans-serif;
    font-weight: 400;
    color: var(--color-grigio);
    line-height: 1.05;
    letter-spacing: 0.01em;
}

.book-announcement-count {
    display: inline-block;
    background: var(--color-campitura-2);
    color: var(--color-azzurro);
    font-size: 0.95rem;
    font-family: 'Nunito Sans', sans-serif;
    font-weight: 700;
    line-height: 1.1;
    text-align: center;
    border-radius: 1.1rem;
    padding: 0.18em 0.9em;
    margin-left: 0.7em;
    vertical-align: middle;
}

.book-action {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    margin-left: auto;
}

.book-action-btn {
    display: inline-block;
    border-radius: 1.3rem;
    font-weight: 700;
    font-size: 0.96rem;
    padding: 0.38em 1.18em;
    border: none;
    cursor: pointer;
    transition: background 0.18s;
    margin-left: 0.4em;
    background: #fff;
    color: var(--color-azzurro);
    border: 2px solid var(--color-azzurro);
}

.book-action-btn.primary {
    background: var(--color-azzurro);
    color: #fff;
    box-shadow: none;
    border: none;
}

.book-action .pill-btn:hover {
    background: var(--color-azzurro);
    color: #fff;
    border: none;
    box-shadow: none;
}

.page-title {
    color: var(--color-blu-scuro);
    font-family: 'Nunito Sans', 'Roboto', sans-serif;
    font-weight: 800;
    font-size: 2rem;
    letter-spacing: 0.5px;
    margin-bottom: 1.2rem;
}

/* Removed legacy .books-list .book-entry to avoid style conflicts with new compact cards */

.books-list .book-entry.highlight {
    background: var(--color-giallo-pastello, #FFF9E1);
    border: 2px solid var(--color-giallo, #FFD600);
}

.books-list .book-entry:hover {
    box-shadow: none;
    background: var(--color-campitura-1, #f6fafd);
}

/* Removed legacy .book-entry .book-cover to avoid style conflicts with new compact cards */

.book-entry .book-cover img {
    width: 100px;
    height: 90px;
    border-radius: .3rem;
    object-fit: cover;
    /* box-shadow: 0 2px 8px 0 var(--color-azzurro); */
    background: var(--color-bianco);
}

.book-entry .book-info {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    justify-content: center;
}

.book-details {
    display: flex;
    flex-direction: column;
    gap: 0.18rem;
    margin-bottom: 0.5rem;
}

.book-details-left {
    font-family: 'Nunito Sans', 'Roboto', sans-serif;
    color: var(--color-blu-scuro);
}

.book-subject {
    font-size: 10px;
    color: var(--color-azzurro);
    font-family: 'Roboto', sans-serif;
    font-weight: 500;
    letter-spacing: 0%;
    margin-bottom: 0.08rem;
    text-transform: uppercase;
    line-height: 12px;
}


.book-title {
    font-size: 13px;
    font-family: 'Nunito Sans', sans-serif;
    font-weight: 700;
    color: var(--color-azzurro);
    margin-bottom: 0.08rem;
    line-height: 15px;
    letter-spacing: 0%;
    max-width: 220px;
    word-break: break-word;
}



.book-author {
    font-size: 10px;
    font-family: 'Roboto', sans-serif;
    font-weight: 400;
    color: var(--color-grigio);
    line-height: 12px;
    letter-spacing: 0%;
}


/* Announcement count pill */
.book-announcement-count {
    display: inline-block;
    background: var(--color-grigio-chiaro, #E7F0F7);
    color: var(--color-blu-scuro);
    font-size: 12px;
    font-family: 'Nunito Sans', sans-serif;
    font-weight: 700;
    line-height: 11px;
    text-align: center;
    border-radius: 1.1rem;
    padding: 0.18em 0.9em;
    margin-left: 0.7em;
    vertical-align: middle;
}


/* Action buttons */
.book-action-btn {
    display: inline-block;
    border-radius: 1.3rem;
    font-weight: 700;
    font-size: 0.96rem;
    padding: 0.38em 1.18em;
    border: none;
    cursor: pointer;
    transition: background 0.18s;
    margin-left: 0.4em;
}
.book-action-btn.primary {
    background: var(--color-azzurro);
    color: #fff;
}
.book-action-btn.secondary {
    background: var(--color-grigio-chiaro, #E7F0F7);
    color: var(--color-blu-scuro);
}
.book-action-btn.danger {
    background: var(--color-giallo, #FFD600);
    color: var(--color-blu-scuro);
}

/* Status pill (bottom left) */
.book-status-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.3em;
    border-radius: 1.3em;
    font-size: 0.93rem;
    font-weight: 700;
    padding: 0.17em 0.9em;
    background: var(--color-giallo-pastello, #FFF9E1);
    color: var(--color-giallo, #FFD600);
    margin-top: 0.7em;
}
.book-status-pill.facoltativo {
    background: var(--color-bianco);
    color: var(--color-grigio);
    border: 1px solid var(--color-grigio);
}
.book-status-pill.acquistare {
    background: var(--color-giallo-pastello, #FFF9E1);
    color: var(--color-giallo, #FFD600);
}
.book-status-pill.altro {
    background: var(--color-azzurro-pastello, #E7F0F7);
    color: var(--color-azzurro);
}

.book-isbn {
    font-size: 0.93rem;
    color: var(--color-grigio);
    font-family: 'Roboto', sans-serif;
}
.book-details-right {
    margin-top: 0.7rem;
    display: flex;
    flex-direction: row;
    gap: 1.1rem;
    align-items: center;
}
.cart-action, .book-annunci-count {
    font-size: 1.02rem;
    font-family: 'Nunito Sans', sans-serif;
    color: var(--color-azzurro);
    font-weight: 700;
}
.btn-primary, .btn-secondary {
    border-radius: 1.3rem;
    font-family: 'Nunito Sans', sans-serif;
    font-weight: 700;
    font-size: 1.04rem;
    padding: 0.5rem 1.5rem;
    box-shadow: 0 1.5px 4px 0 var(--color-azzurro);
    border: none;
    transition: background 0.12s, color 0.12s;
}
.btn-primary {
    background: linear-gradient(90deg, var(--color-blu-scuro) 60%, var(--color-azzurro) 100%);
    color: var(--color-bianco);
}
.btn-primary:hover {
    background: linear-gradient(90deg, var(--color-azzurro) 70%, var(--color-blu-scuro) 100%);
    color: var(--color-bianco);
}
.btn-secondary {
    background: var(--color-campitura-2);
    color: var(--color-blu-scuro);
}
.btn-secondary:hover {
    background: var(--color-campitura-3);
    color: var(--color-azzurro);
}
.book-in-cart {
    border: 2.5px solid var(--color-azzurro);
    background: linear-gradient(135deg, var(--color-campitura-2) 60%, var(--color-campitura-1) 100%);
}
@media (max-width: 700px) {
    .books-list .book-entry {
        flex-direction: column;
        min-width: 90vw;
        max-width: 100vw;
        padding: 1.2rem 0.6rem 1.2rem 0.6rem;
    }
    .book-entry .book-cover {
        margin-right: 0;
        margin-bottom: .1rem;
        margin-top: .1rem;
        justify-content: flex-start;
    }
}
