.page-container{min-height:100vh;background-color:hsl(var(--background))}.content-container{width:100%}@media (min-width:640px){.content-container{max-width:640px}}@media (min-width:768px){.content-container{max-width:768px}}@media (min-width:1024px){.content-container{max-width:1024px}}@media (min-width:1280px){.content-container{max-width:1280px}}@media (min-width:1536px){.content-container{max-width:1536px}}.content-container{margin-left:auto;margin-right:auto;padding:2rem 1rem}.page-header>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.page-title{font-size:1.875rem;line-height:2.25rem;font-weight:700;letter-spacing:-.025em;color:hsl(var(--foreground))}.page-description{color:hsl(var(--muted-foreground))}.book-card,.card-clean{border-radius:var(--radius-lg);border-width:1px;border-color:hsl(var(--border));background-color:hsl(var(--card))}.book-card{cursor:pointer;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;transition-timing-function:cubic-bezier(.2,0,0,1);animation-duration:.2s;animation-timing-function:cubic-bezier(.2,0,0,1)}.book-card:hover{border-color:hsl(var(--foreground)/.4)}.book-card-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1.5rem}@media (min-width:640px){.book-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.book-card-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1280px){.book-card-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.book-card-list>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.btn-primary{border-color:transparent;background-color:hsl(var(--primary));color:hsl(var(--primary-foreground))}.btn-primary:hover{background-color:hsl(var(--primary)/.9)}.btn-secondary{border-color:transparent;background-color:hsl(var(--secondary));color:hsl(var(--secondary-foreground))}.btn-secondary:hover{background-color:hsl(var(--secondary)/.8)}.btn-accent{border-color:transparent;background-color:hsl(var(--tertiary));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.btn-accent:hover{background-color:hsl(var(--tertiary)/.9)}.status-badge{display:inline-flex;align-items:center;border-radius:9999px;padding:.25rem .625rem;font-size:.75rem;line-height:1rem;font-weight:500}.status-reading{background-color:hsl(var(--primary-container));color:hsl(var(--on-primary-container))}.status-read{--tw-bg-opacity:1;background-color:hsl(150 55% 88%/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:hsl(150 70% 22%/var(--tw-text-opacity,1))}.status-read:is(.dark *){--tw-bg-opacity:1;background-color:hsl(150 30% 24%/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:hsl(150 60% 82%/var(--tw-text-opacity,1))}.status-will-read{background-color:hsl(var(--tertiary-container));color:hsl(var(--on-tertiary-container))}.status-on-hold{--tw-bg-opacity:1;background-color:hsl(38 92% 88%/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:hsl(30 80% 28%/var(--tw-text-opacity,1))}.status-on-hold:is(.dark *){--tw-bg-opacity:1;background-color:hsl(38 40% 24%/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:hsl(38 90% 78%/var(--tw-text-opacity,1))}.status-abandoned{background-color:hsl(var(--destructive)/.15);color:hsl(var(--destructive))}.status-not-read{background-color:hsl(var(--muted));color:hsl(var(--muted-foreground))}.progress-bar{width:100%;background-color:hsl(var(--muted))}.progress-bar,.progress-fill{height:.375rem;border-radius:9999px}.progress-fill{background-color:hsl(var(--primary));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;transition-timing-function:cubic-bezier(.2,0,0,1)}.progress-fill,.stat-card{animation-duration:.3s;animation-timing-function:cubic-bezier(.2,0,0,1)}.stat-card{border-radius:var(--radius-lg);border-width:1px;border-color:hsl(var(--border));background-color:hsl(var(--card));padding:1.5rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;transition-timing-function:cubic-bezier(.2,0,0,1)}.stat-card-blue{background:linear-gradient(135deg,hsl(var(--primary-container)),hsl(var(--primary-container)/.55));border-color:transparent}.stat-card-emerald{background:linear-gradient(135deg,hsl(150 60% 90%),hsl(150 60% 82%));border-color:transparent}.stat-card-emerald:is(.dark *){--tw-bg-opacity:1;background-color:hsl(150 30% 22%/var(--tw-bg-opacity,1));background-image:none}.stat-card-violet{background:linear-gradient(135deg,hsl(var(--tertiary-container)),hsl(280 80% 92%));border-color:transparent}.stat-card-slate{border-color:hsl(var(--border)/.6);background-color:hsl(var(--muted)/.6)}.view-toggle{display:flex;border-radius:9999px;border-width:1px;border-color:hsl(var(--border));background-color:hsl(var(--muted)/.4);padding:.25rem}.view-toggle-btn{border-radius:9999px;padding:.375rem .75rem;font-size:.875rem;line-height:1.25rem;font-weight:500;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.view-toggle-btn:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:hsl(var(--ring));--tw-ring-offset-width:1px}.view-toggle-btn-active{background-color:hsl(var(--primary));color:hsl(var(--primary-foreground))}.view-toggle-btn-inactive{color:hsl(var(--muted-foreground))}.view-toggle-btn-inactive:hover{background-color:hsl(var(--accent));color:hsl(var(--foreground))}.table-header-btn{display:flex;align-items:center}.table-header-btn>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.table-header-btn{text-align:left;font-weight:500;color:hsl(var(--muted-foreground));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.table-header-btn:hover{color:hsl(var(--foreground))}.table-row-selected{border-color:hsl(var(--primary)/.4);background-color:hsl(var(--primary-container)/.4)}.table-cell-editable{cursor:pointer;border-radius:.25rem;padding:.25rem .5rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.table-cell-editable:hover{background-color:hsl(var(--accent))}.quick-edit-input{height:2rem;border-color:hsl(var(--primary)/.5);font-size:.75rem;line-height:1rem}.quick-edit-input:focus{border-color:hsl(var(--primary));--tw-ring-color:hsl(var(--ring))}.search-container{position:relative}.search-results{position:absolute;top:100%;left:0;right:0;z-index:50;margin-top:.25rem;max-height:16rem;overflow-y:auto;border-radius:var(--radius-md);border-width:1px;border-color:hsl(var(--border));background-color:hsl(var(--popover));color:hsl(var(--popover-foreground))}.search-result-item{cursor:pointer;border-bottom-width:1px;border-color:hsl(var(--border)/.6);padding:.5rem 1rem}.search-result-item:last-child{border-bottom-width:0}.search-result-item:hover{background-color:hsl(var(--accent))}.line-clamp-1{-webkit-line-clamp:1}.line-clamp-1,.line-clamp-2{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2}.line-clamp-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.fade-in{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;--tw-enter-opacity:0}.fade-in,.slide-in{transition-duration:.2s;animation-name:enter;animation-duration:.2s}.slide-in{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;--tw-enter-translate-y:-0.5rem}@media (max-width:768px){.table-responsive{display:block;overflow-x:auto;white-space:nowrap}.table-responsive table{min-width:100%}.table-responsive td,.table-responsive th{padding:.25rem .5rem;font-size:.75rem;line-height:1rem}}.skeleton{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite;border-radius:.25rem;background-color:hsl(var(--muted))}.skeleton-text{height:1rem;animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite;border-radius:.25rem;background-color:hsl(var(--muted))}.skeleton-title{height:1.5rem;animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite;border-radius:.25rem;background-color:hsl(var(--muted))}.skeleton-avatar{height:2rem;width:2rem;border-radius:9999px}@keyframes pulse{50%{opacity:.5}}.skeleton-avatar{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite;border-radius:.25rem;background-color:hsl(var(--muted))}.interactive-row{cursor:pointer;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.interactive-row:hover{background-color:hsl(var(--accent)/.6)}.interactive-cell{border-radius:.25rem;padding:.25rem .5rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.interactive-cell:hover{background-color:hsl(var(--accent))}.focus-ring:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:hsl(var(--ring));--tw-ring-offset-width:2px}.dropdown-item{display:flex;cursor:pointer;align-items:center;padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.dropdown-item:hover{background-color:hsl(var(--accent))}.dropdown-item-danger{color:hsl(var(--destructive));display:flex;cursor:pointer;align-items:center;padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.dropdown-item-danger:hover{background-color:hsl(var(--accent));background-color:hsl(var(--destructive)/.1)}.badge-with-icon{display:inline-flex;align-items:center;gap:.25rem;border-radius:9999px;padding:.25rem .625rem;font-size:.75rem;line-height:1rem;font-weight:500}.progress-container>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.progress-text{display:flex;justify-content:space-between;font-size:.75rem;line-height:1rem;color:hsl(var(--muted-foreground))}.progress-percentage{font-weight:500;color:hsl(var(--primary))}