:root{--bg:#F4F1DC;--surface:#FFFDF4;--surface2:#F1F0D8;--text:#3B241B;--muted:#7C8061;--line:#D9D7B8;--primary:#78913B;--primary2:#5F742E;--shadow:0 12px 35px rgba(72,55,28,.10);--radius:18px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text);font-size:14px}a{text-decoration:none;color:inherit}button,input,select,textarea{font:inherit}button{cursor:pointer}
body.dark{--bg:#0e1420;--surface:#151d2b;--surface2:#101824;--text:#edf2fa;--muted:#9aa8bb;--line:#273245;--shadow:0 15px 35px rgba(0,0,0,.25)}

/* Uploaded background image */
body{background-image:linear-gradient(rgba(226,231,184,.58),rgba(226,231,184,.58)),url("library-background.jpg");background-size:cover;background-position:center;background-attachment:fixed;background-repeat:no-repeat}
body.dark{background-image:linear-gradient(rgba(28,22,18,.68),rgba(28,22,18,.68)),url("library-background.jpg")}
.app-shell{background:transparent}
.main{background:rgba(242,240,218,.20);backdrop-filter:blur(1.5px)}
body.dark .main{background:rgba(31,23,20,.18)}
.opac-page{background:transparent}
.login-page{background-image:linear-gradient(rgba(224,228,177,.35),rgba(224,228,177,.35)),url("library-background.jpg");background-size:cover;background-position:center;background-attachment:fixed}
.login-card-wrap{background:rgba(248,246,229,.42);backdrop-filter:blur(2px)}
.login-card{background:rgba(255,255,255,.93);padding:30px;border-radius:24px;box-shadow:0 20px 55px rgba(63,42,25,.16)}

.app-shell{display:flex;min-height:100vh}.sidebar{width:248px;background:var(--surface);border-right:1px solid var(--line);padding:24px 16px;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:20}.brand{font-size:19px;font-weight:700;display:flex;align-items:center;gap:10px;white-space:nowrap}.brand b{font-weight:800}.brand-mark{width:38px;height:38px;border-radius:12px;background:linear-gradient(135deg,#8EA44B,#5F742E);color:#fff;display:grid;place-items:center;box-shadow:0 8px 20px rgba(95,116,46,.22)}.sidebar nav{display:grid;gap:6px;margin-top:34px}.sidebar nav a,.logout-link{padding:12px 13px;border-radius:12px;color:var(--muted);display:flex;align-items:center;gap:12px;font-weight:600}.sidebar nav a:hover,.sidebar nav a.active{background:rgba(120,145,59,.12);color:var(--primary)}.nav-ext{margin-left:auto;font-size:10px}.sidebar-bottom{margin-top:auto;display:grid;gap:7px}.full{width:100%}.logout-link{color:#A54D3E}.main{margin-left:248px;min-width:0;width:calc(100% - 248px);padding:0 34px 45px}.topbar{min-height:92px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);margin-bottom:28px}.topbar h1{margin:2px 0 0;font-size:22px}.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.11em;color:var(--muted);font-weight:800}.top-actions{display:flex;align-items:center;gap:10px}.user-chip{display:flex;align-items:center;gap:9px;font-weight:700}.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#E4E7C8;color:#5F742E;font-weight:800}.avatar.large{width:40px;height:40px}.avatar.xl{width:54px;height:54px;font-size:20px}.icon-btn,.ghost-btn,.secondary-btn,.primary-btn{border:0;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:0 14px;font-weight:700}.icon-btn{width:40px;padding:0;background:var(--surface);border:1px solid var(--line);color:var(--muted)}.ghost-btn{background:transparent;color:var(--muted);border:1px solid var(--line)}.secondary-btn{background:var(--surface);color:var(--text);border:1px solid var(--line)}.primary-btn{background:var(--primary);color:#fff;box-shadow:0 8px 18px rgba(37,99,235,.18)}.primary-btn:hover{background:var(--primary2)}.small{min-height:34px;padding:0 11px;font-size:12px}.danger-btn{color:#dc5a5a}.text-link{color:var(--primary);font-weight:700}.hero{background:linear-gradient(120deg,#E9ECCF,#FFFDF4);border:1px solid #D6DBAE;border-radius:24px;padding:28px 30px;display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}.dark .hero{background:linear-gradient(120deg,#16243b,#151d2b);border-color:#48572C}.hero h2{margin:5px 0 7px;font-size:27px}.hero p{margin:0;color:var(--muted)}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:20px}.stat-grid.compact{grid-template-columns:repeat(3,1fr)}.stat-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;display:flex;gap:14px;align-items:center;box-shadow:var(--shadow)}.stat-icon{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;font-size:18px}.stat-icon.blue{background:#E6E9C8;color:#657B32}.stat-icon.green{background:#EAF0D2;color:#5D7A2D}.stat-icon.orange{background:#F6E9C8;color:#9A6A1F}.stat-icon.red{background:#F5E3DE;color:#A54D3E}.stat-card span{display:block;color:var(--muted);font-size:12px}.stat-card strong{display:block;font-size:26px;line-height:1.2;margin:2px 0}.stat-card small{color:var(--muted)}.dashboard-grid{display:grid;grid-template-columns:1.45fr 1fr;gap:20px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;margin-bottom:20px}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:16px}.panel-head h3{margin:0;font-size:16px}.muted{color:var(--muted);margin:4px 0}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th{text-align:left;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em;padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}td{padding:13px 12px;border-bottom:1px solid var(--line);vertical-align:middle}tr:last-child td{border-bottom:0}.badge{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:800}.badge.success{background:#eaf9f0;color:#168447}.badge.info{background:#E8EBCB;color:#607532}.badge.danger{background:#fff0f0;color:#c94b4b}.muted-badge{background:#ECEAD8;color:#6F735C}.empty{text-align:center;color:var(--muted);padding:28px}.book-list{display:grid;gap:12px}.book-row{display:flex;align-items:center;gap:12px;padding:8px;border-radius:12px}.book-row:hover{background:var(--surface2)}.book-row img,.book-row .cover-placeholder{width:42px;height:56px;border-radius:7px;object-fit:cover;flex:none}.book-row div{min-width:0;flex:1}.book-row b,.book-row span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.book-row span{color:var(--muted);font-size:12px;margin-top:3px}.book-row strong{font-size:12px}.cover-placeholder{background:linear-gradient(145deg,#8EA44B,#C7D58C);color:#fff;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;overflow:hidden}.cover-placeholder span{font-size:22px;font-weight:900}.cover-placeholder small{font-size:6px;opacity:.9;padding:3px}.toolbar{display:flex;align-items:end;justify-content:space-between;gap:15px;margin-bottom:18px}.section-title{margin:0;font-size:21px}.toolbar-actions{display:flex;gap:9px;align-items:center}.search-mini{height:40px;display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:11px;padding:0 12px}.search-mini i{color:var(--muted)}.search-mini input{border:0;outline:0;background:transparent;color:var(--text);width:180px}.content-grid{display:grid;grid-template-columns:minmax(320px,.7fr) minmax(520px,1.3fr);gap:20px;align-items:start}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.form-grid label,.filter-row label{display:grid;gap:7px;font-size:12px;font-weight:700;color:var(--muted)}input,select,textarea{width:100%;border:1px solid var(--line);background:var(--surface2);color:var(--text);border-radius:10px;padding:11px 12px;outline:none}input:focus,select:focus,textarea:focus{border-color:#7ba8f9;box-shadow:0 0 0 3px rgba(120,145,59,.12)}textarea{min-height:88px;resize:vertical}.span-2{grid-column:span 2}.field-help{font-weight:400;color:var(--muted)}.form-actions{display:flex;justify-content:flex-end;margin-top:3px}.book-cell,.member-cell{display:flex;align-items:center;gap:10px;min-width:220px}.book-cell img,.book-cell .cover-placeholder{width:36px;height:48px;border-radius:6px;object-fit:cover;flex:none}.book-cell b,.book-cell span,.member-cell b,.member-cell span{display:block}.book-cell span,.member-cell span{font-size:11px;color:var(--muted);margin-top:3px}.actions{display:flex;gap:6px}.filter-row{display:flex;align-items:end;gap:12px}.filter-row label{min-width:180px}.secondary-btn.small{min-height:32px;padding:0 10px;font-size:11px}
.login-page{min-height:100vh;display:grid;grid-template-columns:1.15fr .85fr;background:var(--surface)}.login-art{background:radial-gradient(circle at 80% 20%,#D7DF9A55,transparent 30%),linear-gradient(145deg,#4B2418,#6D3624);color:#fff;display:flex;align-items:center;padding:8vw}.login-art .brand{margin-bottom:80px}.login-art .brand-mark{background:#ffffff1c;box-shadow:none}.art-content{max-width:540px}.art-content h1{font-size:48px;line-height:1.08;margin:0 0 18px}.art-content p{font-size:16px;color:#F0EED9;line-height:1.7}.art-stat{display:flex;gap:10px;margin-top:32px}.art-stat span{background:#ffffff16;border:1px solid #ffffff20;border-radius:999px;padding:9px 12px;font-size:12px}.login-card-wrap{display:grid;place-items:center;padding:30px}.login-card{width:min(410px,100%)}.login-icon{width:52px;height:52px;border-radius:15px;background:#E6E9C8;color:#657B32;display:grid;place-items:center;font-size:20px;margin-bottom:22px}.login-card h2{font-size:29px;margin:6px 0}.login-card .muted{margin-bottom:25px}.login-card label{display:grid;gap:7px;font-weight:700;margin:15px 0}.password-field{position:relative}.password-field input{padding-right:44px}.password-field button{position:absolute;right:4px;top:4px;width:38px;height:38px;border:0;background:transparent;color:var(--muted)}.login-hint{text-align:center;color:var(--muted);font-size:12px;margin-top:16px}.alert{border-radius:12px;padding:12px 14px;margin-bottom:16px;background:#eaf9f0;color:#14783f;border:1px solid #c8eed6}.alert.warning{background:#F7EED2;color:#8A6424;border-color:#E8D8A7}.alert.danger{background:#F5E3DE;color:#9B4A3B;border-color:#E5C2BA}.alert.hide{opacity:0;transition:.4s}.mobile-menu{display:none}
.opac-page{background:var(--bg)}.opac-nav{height:78px;padding:0 6vw;display:flex;align-items:center;justify-content:space-between;background:var(--surface);border-bottom:1px solid var(--line)}.opac-nav nav{display:flex;align-items:center;gap:18px}.opac-nav nav>a:not(.primary-btn){color:var(--muted);font-weight:700}.opac-hero{max-width:1180px;margin:0 auto;padding:78px 30px 65px;display:flex;align-items:center;gap:40px}.opac-copy{flex:1}.pill{display:inline-flex;gap:7px;align-items:center;padding:7px 10px;border-radius:999px;background:#E6E9C8;color:#657B32;font-weight:800;font-size:11px}.opac-copy h1{font-size:52px;line-height:1.04;max-width:650px;margin:18px 0 14px}.opac-copy>p{font-size:16px;color:var(--muted);max-width:560px}.opac-search{display:flex;background:var(--surface);border:1px solid var(--line);border-radius:15px;padding:6px;margin-top:28px;box-shadow:var(--shadow);max-width:650px}.opac-search i{align-self:center;color:var(--muted);margin:0 10px}.opac-search input{border:0;background:transparent;box-shadow:none}.opac-search button{border:0;background:var(--primary);color:#fff;border-radius:10px;padding:0 19px;font-weight:800}.quick-tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px}.quick-tags a{padding:6px 10px;background:var(--surface);border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:11px}.hero-stack{width:350px;height:350px;position:relative}.book-visual{width:240px;height:290px;border-radius:25px;background:linear-gradient(145deg,#2563eb,#60a5fa);position:absolute;right:25px;top:20px;display:grid;place-items:center;color:#fff;font-size:100px;box-shadow:30px 30px 70px #2563eb33;transform:rotate(6deg)}.float-card{position:absolute;background:var(--surface);border:1px solid var(--line);border-radius:15px;padding:12px;z-index:2;box-shadow:var(--shadow);display:grid;grid-template-columns:32px 1fr;gap:3px 9px;align-items:center}.float-card i{grid-row:span 2;width:32px;height:32px;border-radius:10px;background:#E6E9C8;color:#657B32;display:grid;place-items:center}.float-card b{font-size:18px}.float-card span{color:var(--muted);font-size:10px}.c1{left:0;top:55px}.c2{right:0;bottom:55px}.opac-content{max-width:1180px;margin:0 auto;padding:0 30px 70px}.section-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:20px}.section-heading h2{margin:5px 0 0;font-size:27px}.book-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.book-card{background:var(--surface);border:1px solid var(--line);border-radius:18px;overflow:hidden;transition:.2s;box-shadow:0 8px 24px rgba(25,38,70,.04)}.book-card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}.book-card>img,.book-card>.cover-placeholder{display:block;width:100%;height:260px;object-fit:cover;border-radius:0}.book-card>.cover-placeholder{display:grid;place-items:center}.book-card>.cover-placeholder span{font-size:70px}.book-info{padding:15px}.category{color:var(--primary);font-size:10px;text-transform:uppercase;font-weight:900;letter-spacing:.08em}.book-info h3{font-size:15px;margin:7px 0 5px;line-height:1.35}.book-info p{color:var(--muted);margin:0 0 13px;font-size:12px}.book-meta{display:flex;justify-content:space-between;color:var(--muted);font-size:10px}.available{color:#5D7A2D}.unavailable{color:#A54D3E}.opac-footer{text-align:center;color:var(--muted);padding:30px;border-top:1px solid var(--line)}
.print-page{background:#eee;color:#111}.print-toolbar{position:sticky;top:0;background:#222;color:#fff;padding:12px 20px;display:flex;justify-content:space-between;z-index:4}.print-toolbar button{background:#fff;border:0;border-radius:6px;padding:7px 13px}.print-sheet,.report-sheet,.label-sheet{max-width:1000px;margin:25px auto;background:#fff;padding:30px;min-height:500px}.print-title{text-align:center;margin-bottom:25px}.print-title h1{margin:0}.print-title p{margin:5px;color:#555}.member-print-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.member-card{border:1px solid #cfd5df;border-radius:13px;padding:14px;break-inside:avoid}.mc-top{display:flex;justify-content:space-between;font-size:9px;color:#555;font-weight:800}.brand-mini{font-size:12px;color:#5F742E}.mc-body{display:flex;gap:12px;align-items:center;margin:18px 0}.mc-body h2{font-size:17px;margin:0 0 5px}.mc-body p{font-size:9px;margin:3px 0;color:#555}.mc-barcode svg{width:100%;height:55px}.label-sheet{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.book-label{border:1px dashed #777;padding:12px;display:grid;gap:5px;break-inside:avoid}.book-label>b{font-size:11px;color:#5F742E}.book-label>strong{font-size:12px}.book-label>span{font-size:9px;color:#555}.book-label svg{width:100%;height:50px}.report-head{display:flex;justify-content:space-between;border-bottom:2px solid #111;padding-bottom:14px;margin-bottom:20px}.report-head h1{margin:0;font-size:22px}.report-head p{margin:4px 0}.report-table{width:100%;border-collapse:collapse}.report-table th,.report-table td{border:1px solid #bbb;padding:7px;font-size:10px}.report-table th{color:#111;background:#f1f1f1}.signature{margin-top:60px;display:flex;justify-content:flex-end;text-align:center;font-size:11px}
@media(max-width:1100px){.stat-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid,.content-grid{grid-template-columns:1fr}.book-grid{grid-template-columns:repeat(3,1fr)}.opac-copy h1{font-size:42px}.hero-stack{width:300px}.main{padding-left:22px;padding-right:22px}}
@media(max-width:800px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.show{transform:translateX(0)}.main{margin-left:0;width:100%;padding:0 15px 30px}.mobile-menu{display:inline-flex}.topbar{min-height:75px}.topbar .eyebrow{display:none}.user-chip>span:last-child{display:none}.toolbar{align-items:stretch;flex-direction:column}.toolbar-actions{flex-wrap:wrap}.search-mini{flex:1}.content-grid{display:block}.login-page{grid-template-columns:1fr}.login-art{display:none}.login-card-wrap{min-height:100vh}.opac-hero{padding-top:45px;display:block}.hero-stack{margin:45px auto 0}.opac-copy h1{font-size:39px}.book-grid{grid-template-columns:repeat(2,1fr)}.opac-nav{padding:0 15px}.opac-nav nav>a:not(.primary-btn){display:none}.member-print-grid,.label-sheet{grid-template-columns:1fr}}
@media(max-width:520px){.stat-grid,.stat-grid.compact{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.book-grid{grid-template-columns:1fr}.hero{padding:22px;display:block}.hero .primary-btn{margin-top:16px}.opac-search{display:grid;grid-template-columns:1fr auto}.opac-search i{display:none}.print-sheet,.report-sheet,.label-sheet{margin:0;padding:15px}.print-toolbar{position:static}}
@media print{.print-toolbar{display:none!important}.print-page{background:#fff}.print-sheet,.report-sheet,.label-sheet{margin:0;max-width:none;box-shadow:none}.member-card,.book-label{break-inside:avoid}}

/* Pistachio Cocoa Theme */
:root{
  --primary:#78913B;
  --primary2:#5F742E;
}
body{
  background:
    radial-gradient(circle at 10% 5%, rgba(190,201,127,.20), transparent 28%),
    linear-gradient(180deg,#F7F4E2 0%,#F1EFD9 100%);
}
.brand-mark{background:linear-gradient(135deg,#8EA44B,#5F742E)!important}
.primary-btn{background:linear-gradient(135deg,#78913B,#5F742E)!important;box-shadow:0 8px 18px rgba(95,116,46,.20)}
.primary-btn:hover{background:#536A28!important}
.hero{background:linear-gradient(120deg,#E4E9C2,#FFFDF4)!important;border-color:#D2D8A7!important}
.login-art{background:radial-gradient(circle at 80% 18%,rgba(214,224,148,.32),transparent 30%),linear-gradient(145deg,#4B2418,#6E3927)!important}
.login-icon{background:#E6E9C8!important;color:#5F742E!important}
.opac-page{background:linear-gradient(180deg,#F7F4E2,#EEF0D7)!important}
.pill{background:#E6E9C8!important;color:#5F742E!important}
.opac-search button{background:#78913B!important}
.book-visual{background:linear-gradient(145deg,#5A2A1C,#8B513B)!important;box-shadow:30px 30px 70px rgba(90,42,28,.20)!important}
.float-card i{background:#E6E9C8!important;color:#5F742E!important}
.category{color:#657B32!important}
.cover-placeholder{background:linear-gradient(145deg,#7A8F3D,#C5D38B)!important}