@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Playfair+Display:wght@600;700&display=swap');
:root{
  --purple:#5a2a83; --purple2:#7b3fb0; --lav:#f4edfb; --gold:#f4bd4f;
  --ink:#292034; --muted:#766d81; --line:#eadff3; --white:#fff;
  --green:#27855b; --red:#c94d63; --shadow:0 14px 35px rgba(74,39,99,.10);
}
*{box-sizing:border-box} body{margin:0;background:#fbf9fd;color:var(--ink);font:14px Inter,system-ui,sans-serif}
a{color:inherit;text-decoration:none}.app-shell{display:flex;min-height:100vh}
.sidebar{width:270px;background:linear-gradient(180deg,#4e2576,#6b358e 60%,#4c246e);color:#fff;padding:20px 14px;position:fixed;inset:0 auto 0 0;overflow:auto;z-index:20}
.brand{display:flex;gap:11px;align-items:center;padding:6px 8px 22px;border-bottom:1px solid rgba(255,255,255,.14)}
.brand img{width:48px;height:48px;border-radius:50%;object-fit:cover;border:3px solid #fff;box-shadow:0 0 0 3px rgba(244,189,79,.45)}
.brand strong{display:block;font-family:"Playfair Display";font-size:20px}.brand small{opacity:.72;font-size:10px}
.nav{padding-top:14px}.nav a{display:flex;gap:11px;align-items:center;padding:10px 12px;border-radius:11px;margin:3px 0;color:#f8efff}
.nav a:hover,.nav a.active{background:rgba(255,255,255,.14)}.nav a span{font-size:12.5px}
.nav-label{font-size:9px;letter-spacing:1.4px;color:#d9c5ea;margin:18px 12px 7px;font-weight:800}
.main{margin-left:270px;width:calc(100% - 270px);min-width:0}.topbar{height:72px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 30px;position:sticky;top:0;z-index:10}
.crumb{color:var(--muted)}.menu-toggle{display:none;border:0;background:var(--lav);border-radius:8px;padding:8px;margin-right:8px}
.user-pill{display:flex;align-items:center;gap:10px}.user-pill small{display:block;color:var(--muted);font-size:10px}.avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--purple);color:#fff}
.content{padding:28px;max-width:1500px;margin:auto}.footer{text-align:center;color:#94899f;padding:30px;font-size:11px}
.alert{padding:13px 16px;margin:18px 28px 0;border-radius:12px}.alert.success{background:#eaf8f1;color:#176543}.alert.danger{background:#fdecee;color:#9b2f45}
.hero{background:linear-gradient(135deg,#fff,#f1e8fa);border:1px solid var(--line);border-radius:22px;padding:30px;position:relative;overflow:hidden;box-shadow:var(--shadow)}
.hero:after{content:"✦";position:absolute;right:40px;top:10px;font-size:130px;color:rgba(244,189,79,.16)}
.hero h1{font:700 30px "Playfair Display";margin:0 0 6px}.hero p{color:var(--muted);max-width:700px}
.grid{display:grid;gap:18px}.stats{grid-template-columns:repeat(4,minmax(0,1fr));margin:20px 0}.card{background:#fff;border:1px solid var(--line);border-radius:17px;padding:20px;box-shadow:var(--shadow)}
.stat .icon{font-size:24px}.stat b{font-size:28px;display:block;margin:8px 0}.stat span{color:var(--muted);font-size:12px}
.two{grid-template-columns:1.4fr 1fr}.three{grid-template-columns:repeat(3,1fr)}
.section-title{display:flex;justify-content:space-between;align-items:center;margin:26px 0 12px}.section-title h2{font:700 21px "Playfair Display";margin:0}.actions{display:flex;gap:8px;flex-wrap:wrap}
.btn{border:0;border-radius:10px;padding:10px 14px;background:var(--purple);color:#fff;cursor:pointer;font-weight:600;font-size:12px;display:inline-flex;align-items:center;gap:7px}.btn:hover{filter:brightness(.95)}.btn.gold{background:var(--gold);color:#4b2b10}.btn.light{background:var(--lav);color:var(--purple)}.btn.red{background:#d35a70}.btn.green{background:#2d9064}
.table-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:14px}.table{width:100%;border-collapse:collapse;min-width:760px}.table th,.table td{padding:12px 13px;border-bottom:1px solid #f0eaf4;text-align:left;vertical-align:middle}.table th{background:#fbf8fd;font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:#7a6a87}.table tr:hover td{background:#fdfbff}
.badge{display:inline-block;padding:5px 8px;border-radius:99px;font-size:10px;font-weight:700;background:var(--lav);color:var(--purple)}.badge.green{background:#e8f7ef;color:#20724e}.badge.red{background:#fdecef;color:#a4374d}.badge.gold{background:#fff4d8;color:#8a5c0b}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.field{display:flex;flex-direction:column;gap:6px}.field.full{grid-column:1/-1}.field label{font-weight:700;font-size:11px}.field input,.field select,.field textarea{width:100%;border:1px solid #dfd4e8;background:#fff;border-radius:10px;padding:11px 12px;font:inherit;outline:none}.field input:focus,.field select:focus,.field textarea:focus{border-color:#9d6ac0;box-shadow:0 0 0 3px #f1e7f7}.help{font-size:10px;color:var(--muted)}
.cover{width:46px;height:60px;object-fit:cover;border-radius:6px;background:#eee}.photo{width:58px;height:58px;border-radius:12px;object-fit:cover;background:#eee}.empty-photo{display:grid;place-items:center;background:#eee;color:#999}
.searchbar{display:flex;gap:10px}.searchbar input{flex:1;border:1px solid var(--line);border-radius:11px;padding:12px}
.opac-page{min-height:100vh;background:radial-gradient(circle at 20% 10%,#f6eafa,transparent 30%),#fff}.opac-header{background:linear-gradient(135deg,#4f2574,#8a50b2);color:#fff;padding:22px 6%;display:flex;justify-content:space-between;align-items:center}.opac-brand{display:flex;gap:12px;align-items:center}.opac-brand img{width:54px;height:54px;border-radius:50%;border:3px solid #fff}.opac-hero{text-align:center;padding:70px 20px 45px}.opac-hero h1{font:700 46px "Playfair Display";margin:0}.opac-hero p{color:#766d81}.opac-search{max-width:800px;margin:24px auto;display:flex;background:#fff;padding:7px;border-radius:15px;box-shadow:var(--shadow);border:1px solid var(--line)}.opac-search input{flex:1;border:0;padding:14px;outline:0}.results{max-width:1100px;margin:auto;padding:20px}.book-card{display:flex;gap:18px;padding:18px;border:1px solid var(--line);border-radius:15px;background:#fff;margin-bottom:12px}.book-card img{width:72px;height:96px;object-fit:cover;border-radius:8px}.book-card h3{margin:0 0 5px}.muted{color:var(--muted)}
.member-card{width:760px;max-width:100%;min-height:420px;margin:auto;background:linear-gradient(135deg,#fff,#f5ecfb);border:1px solid #d8c5e4;border-radius:24px;overflow:hidden;position:relative;box-shadow:var(--shadow)}
.member-card .head{background:linear-gradient(100deg,#4e2576,#7e46a5);color:#fff;padding:18px 24px;display:flex;align-items:center;gap:12px}.member-card .head img{width:52px;height:52px;border-radius:50%;border:2px solid #fff;object-fit:cover}.member-card .body{display:flex;gap:25px;padding:28px}.member-card .photo{width:155px;height:190px;border-radius:14px;border:4px solid #fff;box-shadow:0 6px 15px rgba(0,0,0,.12)}.member-card h2{font:700 26px "Playfair Display";margin:5px 0 12px}.member-card .meta{display:grid;grid-template-columns:130px 1fr;gap:8px;font-size:12px}.member-card .meta b{color:#745b84}.lantern{position:absolute;width:12px;height:12px;background:#f4bd4f;border-radius:50%;box-shadow:0 0 18px 5px rgba(244,189,79,.45);opacity:.8}
.kpi{font-size:11px;color:var(--muted)}.number{font-size:26px;font-weight:800}
@media(max-width:1000px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar-open .sidebar{transform:none}.main{margin-left:0;width:100%}.menu-toggle{display:inline-block}.stats{grid-template-columns:repeat(2,1fr)}.two,.three{grid-template-columns:1fr}}
@media(max-width:620px){.content{padding:16px}.topbar{padding:0 16px}.form-grid{grid-template-columns:1fr}.stats{grid-template-columns:1fr}.hero h1{font-size:24px}.member-card .body{flex-direction:column}.opac-hero h1{font-size:34px}}
@media print{.sidebar,.topbar,.footer,.no-print,.alert{display:none!important}.main{margin:0;width:100%}.content{padding:0}.member-card{box-shadow:none;break-inside:avoid}}
