:root{--ink:#1a2e2b;--moss:#2c5f52;--leaf:#3f7a6a;--mist:#c5d9d2;--paper:#eef4f1;--surface:#ffffffb8;--amber:#b86b2c;--danger:#9b3a3a;--muted:#5a726b;--line:#1a2e2b1f;--shadow:0 12px 40px #1a2e2b14;--radius:14px;--font-ui:"Figtree", system-ui, sans-serif;--font-display:"Fraunces", Georgia, serif;color:var(--ink);font-family:var(--font-ui);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;line-height:1.45}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}body{background:var(--paper);margin:0}button,input,select{font:inherit}button{cursor:pointer}.sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app{max-width:720px;min-height:100dvh;margin:0 auto;padding:1.25rem 1.1rem 3rem;position:relative}.atmosphere{z-index:-1;background:radial-gradient(80% 50% at 10% -10%,#3f7a6a47,#0000 55%),radial-gradient(70% 45% at 100% 0,#b86b2c24,#0000 50%),linear-gradient(165deg,#e8f0ec 0%,#dfeae5 45%,#e6ebe4 100%);position:fixed;inset:0}.atmosphere:after{content:"";opacity:.35;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.45'/%3E%3C/svg%3E");position:absolute;inset:0}.top{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.5rem;animation:.55s both rise;display:flex}.brand{font-family:var(--font-display);letter-spacing:-.02em;color:var(--moss);margin:0;font-size:clamp(2.2rem,8vw,3rem);font-weight:700;line-height:1.05}.tagline{color:var(--muted);margin:.35rem 0 0;font-size:.95rem}.btn-add{flex-shrink:0;margin-top:.35rem}.main{animation:.7s both rise}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.btn{border:none;border-radius:999px;padding:.7rem 1.15rem;font-weight:600;transition:transform .15s,background .15s,box-shadow .15s}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--moss);color:#f4faf7;box-shadow:0 6px 18px #2c5f5240}.btn-primary:hover:not(:disabled){background:var(--leaf)}.btn-secondary{color:var(--moss);background:#2c5f521a}.btn-secondary:hover:not(:disabled){background:#2c5f5229}.btn-ghost{color:var(--muted);background:0 0}.btn-danger{color:var(--danger);background:#9b3a3a1a}.muted,.count{color:var(--muted);font-size:.9rem}.count{margin:.75rem 0}.empty{text-align:center;color:var(--muted);margin:2rem 0}.banner-error{border-radius:var(--radius);background:#9b3a3a14;border:1px solid #9b3a3a33;gap:.75rem;padding:1rem;display:grid}.search input{border:1px solid var(--line);background:var(--surface);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:100%;box-shadow:var(--shadow);border-radius:999px;outline:none;padding:.9rem 1.15rem}.search input:focus{border-color:var(--leaf);box-shadow:0 0 0 3px #3f7a6a2e}.filters{margin-top:.85rem}.filters-toggle{color:var(--moss);background:0 0;border:none;padding:.35rem 0;font-weight:600}.filters-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);grid-template-columns:1fr 1fr;gap:.75rem;margin-top:.65rem;padding:.9rem;animation:.3s both rise;display:grid}.filters-panel label{color:var(--muted);gap:.3rem;font-size:.82rem;display:grid}.filters-panel select,.form input,.form select,.loan-form input{border:1px solid var(--line);background:#fff;border-radius:10px;width:100%;padding:.65rem .75rem}.book-list{gap:.65rem;margin:0;padding:0;list-style:none;display:grid}.book-row{text-align:left;border:1px solid var(--line);background:var(--surface);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:var(--radius);gap:.55rem;width:100%;padding:1rem 1.05rem;transition:border-color .15s,transform .15s,box-shadow .15s;display:grid}.book-row:hover{box-shadow:var(--shadow);border-color:#2c5f5259;transform:translateY(-1px)}.book-title{font-family:var(--font-display);font-size:1.2rem;font-weight:600;line-height:1.2;display:block}.book-author{color:var(--muted);margin-top:.2rem;font-size:.95rem;display:block}.book-row-meta{flex-wrap:wrap;align-items:center;gap:.4rem .75rem;display:flex}.chip{color:var(--moss);background:#2c5f521f;border-radius:999px;padding:.15rem .55rem;font-size:.78rem;font-weight:600}.meta-text{color:var(--muted);font-size:.82rem}.status-row{flex-wrap:wrap;gap:.35rem;width:100%;display:flex}.status{border-radius:999px;padding:.18rem .55rem;font-size:.75rem;font-weight:600}.status-read{color:var(--moss);background:#2c5f5224}.status-unread{color:var(--muted);background:#5a726b1f}.status-lent{color:var(--amber);background:#b86b2c29}.panel,.detail{background:var(--surface);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:calc(var(--radius) + 4px);box-shadow:var(--shadow);padding:1.15rem 1.1rem 1.35rem}.panel h2,.detail-header h2{font-family:var(--font-display);margin:0 0 1rem;font-size:1.65rem;line-height:1.15}.detail-header h2{margin-bottom:.25rem}.detail-author{color:var(--muted);margin:0 0 1.25rem;font-size:1.05rem}.back{color:var(--moss);background:0 0;border:none;margin-bottom:1rem;padding:0;font-weight:600}.detail-grid{grid-template-columns:1fr 1fr;gap:.9rem 1rem;margin:0 0 1.25rem;display:grid}.detail-grid dt{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:.15rem;font-size:.75rem}.detail-grid dd{margin:0;font-weight:600}.detail-actions{flex-wrap:wrap;gap:.55rem;display:flex}.form,.loan-form,.form-loan{gap:.85rem;display:grid}.form label,.loan-form label{color:var(--muted);gap:.35rem;font-size:.88rem;display:grid}.form-row{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.check{align-items:center;gap:.55rem;grid-template-columns:none!important;display:flex!important}.check input{width:auto;accent-color:var(--moss)}.form-actions{justify-content:flex-end;gap:.5rem;margin-top:.35rem;display:flex}.form-error{color:var(--danger);margin:0;font-size:.9rem}.loan-form{border-top:1px solid var(--line);margin-top:1.15rem;padding-top:1rem}.loan-form h3{font-family:var(--font-display);margin:0;font-size:1.15rem}@media (width<=520px){.top{flex-direction:column}.btn-add{width:100%}.filters-panel,.form-row,.detail-grid{grid-template-columns:1fr}.detail-actions .btn{flex:calc(50% - .55rem)}}@media (width>=720px){.app{padding-top:2rem}}
