@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:wght@600;700&display=swap');
:root{--pink:#f8dce5;--pink2:#efb9c9;--rose:#9b526d;--ink:#43343a;--cream:#fffafc}
*{box-sizing:border-box}body{margin:0;background:#fff8fa;color:var(--ink);font-family:'DM Sans',sans-serif}.app-shell{display:flex;min-height:100vh}
.sidebar{width:245px;background:linear-gradient(180deg,#fff1f5,#f7dce5);padding:22px 16px;position:fixed;left:0;top:0;bottom:0;border-right:1px solid #efd0d9;z-index:10}
.brand{display:flex;gap:10px;align-items:center;font-family:'Playfair Display';font-size:25px;line-height:.9;color:#81455b;margin:5px 8px 30px}.brand small{font-size:14px;letter-spacing:2px}.brand-ribbon{font-size:31px}.sidebar-title{font-size:10px;letter-spacing:1.5px;color:#a77a88;font-weight:700;padding:12px 12px 7px}.nav-link{color:#684d57;border-radius:13px;padding:11px 12px;margin:3px 0;font-weight:600}.nav-link i{width:25px}.nav-link:hover,.nav-link.active{background:#fff;color:var(--rose);box-shadow:0 4px 12px #9b526d15}
.main-content{margin-left:245px;width:calc(100% - 245px)}.topbar{height:76px;background:#fff;border-bottom:1px solid #f0e2e7;display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:5}.topbar strong{font-size:20px}.admin-chip{background:#fff5f8;border:1px solid #efd4dc;padding:9px 13px;border-radius:20px;color:#74485a}
.card-soft{border:0;border-radius:20px;background:#fff;box-shadow:0 8px 28px #8d566812;border:1px solid #f2e1e7}.stat-card{padding:20px;position:relative;overflow:hidden}.stat-card .icon{width:46px;height:46px;border-radius:14px;background:#f9e1e8;color:var(--rose);display:grid;place-items:center;font-size:21px}.stat-num{font-size:28px;font-weight:700;margin-top:13px}.stat-label{color:#876c76;font-size:13px}.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.btn-pink{background:var(--rose);border-color:var(--rose);color:#fff;border-radius:11px}.btn-pink:hover{background:#81455b;color:#fff}.btn-outline-pink{border-color:#d6a2b2;color:#8d4c64;border-radius:11px}.table{vertical-align:middle}.table thead th{background:#fff1f5;color:#7d5361;border:0}.table td{border-color:#f2e5e9}.cover-placeholder{width:54px;height:72px;background:linear-gradient(135deg,#f5d6e0,#fff);border-radius:8px;display:grid;place-items:center;color:#a15b72;font-size:22px}.badge-available{background:#e8f7ed;color:#247441}.badge-borrowed{background:#fff0dc;color:#9a641d}.opac-hero{background:linear-gradient(135deg,#f9dfe7,#fff1f5);border-radius:30px;padding:48px 25px;text-align:center;margin-bottom:30px}.opac-logo{font-family:'Playfair Display';font-size:44px;color:#7f4058}.search-box{max-width:720px;margin:25px auto 0;background:#fff;border:1px solid #e7c9d3;border-radius:18px;padding:6px;display:flex}.search-box input{border:0;outline:0;flex:1;padding:13px 16px;font-size:16px}.search-box button{border:0;border-radius:14px;background:#9b526d;color:#fff;width:55px}.book-card{height:100%;border:1px solid #f0dce2;border-radius:18px;background:#fff;padding:15px;box-shadow:0 8px 25px #9b526d10}.book-cover{height:190px;border-radius:13px;background:linear-gradient(145deg,#f7d6df,#fff7f9);display:flex;align-items:center;justify-content:center;text-align:center;padding:15px;font-family:'Playfair Display';color:#7d4358;font-size:20px}.footer{text-align:center;color:#aa8995;font-size:12px;padding:25px}.login-page{min-height:100vh;background:radial-gradient(circle at 20% 20%,#fff,#f8dce5 55%,#f2c6d3);display:grid;place-items:center;padding:20px}.login-card{width:min(430px,100%);background:#fff;border-radius:28px;padding:35px;box-shadow:0 25px 70px #7e405a25}.login-logo{text-align:center;font-family:'Playfair Display';font-size:38px;color:#87465d}.form-control,.form-select{border-radius:11px;border-color:#ead4db;padding:10px 12px}.report-link{display:block;text-decoration:none;color:inherit}.report-link:hover .card-soft{transform:translateY(-2px)}@media(max-width:900px){.sidebar{width:78px;padding:15px 8px}.brand span:not(.brand-ribbon),.sidebar-title,.nav-link:not(:has(i)){display:none}.nav-link{font-size:0;text-align:center}.nav-link i{font-size:19px}.main-content{margin-left:78px;width:calc(100% - 78px)}}