/* ============================================
   图书馆借阅系统 — 温暖木质主题
   ============================================ */
:root {
  --cream: #fdf8f0;
  --warm-white: #faf6ed;
  --wood: #8b6914;
  --wood-dark: #5c3d0e;
  --wood-light: #d4a84b;
  --green: #2d6a4f;
  --green-dark: #1b4332;
  --red: #c0392b;
  --text: #3d2b1f;
  --text-dim: #8b7355;
  --border: #e0d5c0;
  --card-bg: #fffdf9;
  --shadow: 0 2px 16px rgba(60,30,10,.08);
  --shadow-hover: 0 8px 30px rgba(60,30,10,.14);
  --radius: 10px;
  --font-sans: 'Segoe UI','PingFang SC','Microsoft YaHei',sans-serif;
  --font-serif: Georgia,'Noto Serif SC','SimSun',serif;
}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--font-sans);background:var(--cream);color:var(--text);min-height:100vh;line-height:1.7}
a{color:inherit;text-decoration:none}ul{list-style:none}img{max-width:100%}

/* === Navbar === */
.navbar{
  display:flex;align-items:center;justify-content:space-between;
  padding:0 32px;height:60px;
  background:linear-gradient(180deg,#fffdf9 0%,#faf6ed 100%);
  border-bottom:2px solid var(--wood-light);
  box-shadow:0 1px 12px rgba(60,30,10,.06);
  position:sticky;top:0;z-index:1000;
}
.nav-brand{display:flex;align-items:center;gap:10px;font-size:20px;font-weight:700;color:var(--wood-dark);font-family:var(--font-serif)}
.nav-brand span{font-size:26px}
.nav-links{display:flex;gap:2px;align-items:center}
.nav-links a{
  padding:7px 16px;border-radius:6px;font-size:14px;font-weight:500;
  transition:all .25s;color:var(--text-dim);
}
.nav-links a:hover,.nav-links a.active{background:rgba(139,105,20,.08);color:var(--wood-dark)}
.nav-user{display:flex;align-items:center;gap:8px}

/* === Buttons === */
.btn{
  padding:9px 22px;border-radius:7px;font-size:14px;font-weight:600;
  cursor:pointer;border:none;transition:all .25s;
  display:inline-flex;align-items:center;gap:6px;
  font-family:var(--font-sans);
}
.btn-primary{background:var(--wood);color:#fff;box-shadow:0 2px 10px rgba(139,105,20,.3)}
.btn-primary:hover{background:var(--wood-dark);transform:translateY(-1px)}
.btn-green{background:var(--green);color:#fff}
.btn-green:hover{background:var(--green-dark)}
.btn-outline{background:transparent;color:var(--wood-dark);border:1.5px solid var(--wood-light)}
.btn-outline:hover{background:rgba(139,105,20,.06)}
.btn-sm{padding:5px 12px;font-size:12px}
.btn-lg{padding:13px 30px;font-size:16px;border-radius:9px}

/* === Hero === */
.hero{
  text-align:center;padding:80px 24px 60px;
  background:linear-gradient(180deg,var(--warm-white) 0%,var(--cream) 100%);
}
.hero h1{font-size:clamp(32px,5vw,48px);font-weight:700;color:var(--wood-dark);font-family:var(--font-serif);margin-bottom:12px}
.hero p{font-size:16px;color:var(--text-dim);max-width:500px;margin:0 auto 28px}

/* === Search === */
.search-bar{display:flex;gap:8px;max-width:460px;margin:0 auto}
.search-bar input{
  flex:1;padding:11px 18px;border-radius:24px;
  border:1.5px solid var(--border);background:#fff;color:var(--text);
  font-size:15px;outline:none;font-family:var(--font-sans);
  transition:all .3s;
}
.search-bar input:focus{border-color:var(--wood-light);box-shadow:0 0 0 3px rgba(139,105,20,.1)}
.search-bar button{padding:11px 22px;border-radius:24px;border:none;background:var(--wood);color:#fff;font-weight:600;cursor:pointer}

/* === Section === */
.section{max-width:1200px;margin:0 auto;padding:50px 24px}
.section-title{text-align:center;font-size:26px;font-weight:700;color:var(--wood-dark);font-family:var(--font-serif);margin-bottom:32px}
.section-title span{color:var(--green)}

/* === Category Chips === */
.cat-chips{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-bottom:32px}
.chip{
  padding:8px 18px;border-radius:22px;font-size:14px;font-weight:500;
  cursor:pointer;transition:all .25s;
  background:#fff;border:1px solid var(--border);color:var(--text-dim);
  display:flex;align-items:center;gap:6px;
}
.chip:hover,.chip.active{background:var(--wood);color:#fff;border-color:var(--wood)}
.chip .count{font-size:11px;background:rgba(0,0,0,.08);padding:1px 7px;border-radius:10px}

/* === Book Cards === */
.book-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:20px}
.book-card{
  background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);
  overflow:hidden;cursor:pointer;transition:all .3s;box-shadow:var(--shadow);
}
.book-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-hover)}
.book-cover{
  height:220px;display:flex;align-items:center;justify-content:center;
  position:relative;overflow:hidden;background:var(--warm-white);
}
.book-body{padding:14px 16px 18px}
.book-body h3{font-size:15px;font-weight:600;color:var(--text);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.book-body .author{font-size:12px;color:var(--text-dim);margin-bottom:8px}
.book-body .meta{display:flex;justify-content:space-between;align-items:center}
.book-body .stock{font-size:11px;padding:3px 8px;border-radius:10px;font-weight:600}
.stock-ok{background:#d4edda;color:#155724}
.stock-low{background:#fff3cd;color:#856404}
.stock-out{background:#f8d7da;color:#721c24}

/* === Detail === */
.detail-wrap{display:grid;grid-template-columns:300px 1fr;gap:36px;align-items:start}
.detail-cover{
  height:340px;border-radius:12px;display:flex;align-items:center;
  justify-content:center;font-size:80px;
}
.detail-info h1{font-size:26px;color:var(--text);font-family:var(--font-serif);margin-bottom:6px}
.detail-info .author{font-size:16px;color:var(--text-dim);margin-bottom:12px}
.detail-info .desc{color:var(--text-dim);line-height:1.8;margin-bottom:18px}
.detail-meta{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:18px}
.meta-item{background:var(--warm-white);padding:10px 14px;border-radius:8px;border:1px solid var(--border)}
.meta-item .lbl{font-size:11px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px}
.meta-item .val{font-size:15px;font-weight:600;color:var(--text)}

/* === Auth === */
.auth-wrap{
  max-width:400px;margin:60px auto;padding:36px 32px;
  background:var(--card-bg);border:1px solid var(--border);
  border-radius:12px;box-shadow:var(--shadow);
}
.auth-wrap h2{text-align:center;font-family:var(--font-serif);color:var(--wood-dark);margin-bottom:6px}
.auth-wrap .sub{text-align:center;color:var(--text-dim);font-size:13px;margin-bottom:26px}
.form-group{margin-bottom:16px}
.form-group label{display:block;font-size:13px;font-weight:600;color:var(--text);margin-bottom:4px}
.form-group input{
  width:100%;padding:10px 14px;border-radius:7px;
  border:1.5px solid var(--border);background:#fff;color:var(--text);
  font-size:14px;outline:none;transition:all .25s;font-family:var(--font-sans);
}
.form-group input:focus{border-color:var(--wood-light);box-shadow:0 0 0 3px rgba(139,105,20,.08)}
.form-actions{margin-top:24px}
.form-actions .btn{width:100%;justify-content:center;padding:11px}
.auth-switch{text-align:center;margin-top:18px;font-size:13px;color:var(--text-dim)}
.auth-switch a{color:var(--wood);font-weight:600}
.form-err{color:var(--red);font-size:12px;margin-top:3px;display:none}
.form-err.show{display:block}

/* === Borrows Table === */
.borrow-table{width:100%;border-collapse:collapse;background:var(--card-bg);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
.borrow-table th{background:var(--wood);color:#fff;padding:12px 16px;text-align:left;font-size:13px;font-weight:600}
.borrow-table td{padding:12px 16px;border-bottom:1px solid var(--border);font-size:14px}
.borrow-table tr:hover td{background:var(--warm-white)}
.badge{display:inline-block;padding:3px 10px;border-radius:12px;font-size:11px;font-weight:600}
.badge-active{background:#d4edda;color:#155724}
.badge-returned{background:#e2e3e5;color:#383d41}
.badge-overdue{background:#f8d7da;color:#721c24}

/* === Admin === */
.admin-header{background:linear-gradient(135deg,var(--green-dark),var(--green));color:#fff;padding:28px 32px;border-radius:12px;margin-bottom:28px}
.admin-header h2{font-size:22px;margin-bottom:4px}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;margin-bottom:28px}
.stat-card{background:var(--card-bg);padding:20px;border-radius:var(--radius);text-align:center;border:1px solid var(--border);box-shadow:var(--shadow)}
.stat-card .num{font-size:32px;font-weight:700;color:var(--wood-dark)}
.stat-card .lbl{font-size:13px;color:var(--text-dim);margin-top:4px}
.stat-card .icon{font-size:28px;margin-bottom:4px}

.admin-table-wrap{overflow-x:auto}
.admin-table{width:100%;border-collapse:collapse;background:var(--card-bg);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
.admin-table th{background:var(--green-dark);color:#fff;padding:10px 12px;text-align:left;font-size:12px}
.admin-table td{padding:10px 12px;border-bottom:1px solid var(--border);font-size:13px}
.admin-table tr:hover td{background:var(--warm-white)}

.modal-overlay{
  position:fixed;inset:0;z-index:999;
  background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;
}
.modal{
  background:var(--card-bg);border-radius:12px;padding:28px 32px;
  max-width:480px;width:90%;max-height:85vh;overflow-y:auto;
  box-shadow:0 20px 60px rgba(0,0,0,.3);
}
.modal h3{font-family:var(--font-serif);color:var(--wood-dark);margin-bottom:18px}

/* === Footer === */
.footer{text-align:center;padding:32px;border-top:1px solid var(--border);color:var(--text-dim);font-size:13px}

/* === Toast === */
.toast{
  position:fixed;top:80px;right:24px;z-index:9999;
  padding:12px 22px;border-radius:8px;font-size:13px;font-weight:600;color:#fff;
  animation:toastIn .4s ease,toastOut .4s ease 2.4s forwards;
  box-shadow:0 6px 24px rgba(0,0,0,.2);
}
.toast-ok{background:var(--green)}
.toast-err{background:var(--red)}
@keyframes toastIn{from{transform:translateX(120%);opacity:0}to{transform:translateX(0);opacity:1}}
@keyframes toastOut{from{transform:translateX(0);opacity:1}to{transform:translateX(120%);opacity:0}}

/* === Spinner === */
.spinner{width:32px;height:32px;border:2px solid var(--border);border-top-color:var(--wood);border-radius:50%;animation:spin .6s linear infinite;margin:0 auto 12px}
@keyframes spin{to{transform:rotate(360deg)}}
.loading{text-align:center;padding:40px;color:var(--text-dim)}

@media(max-width:768px){
  .detail-wrap{grid-template-columns:1fr}
  .navbar{padding:0 12px;overflow-x:auto}
  .book-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}
  .section{padding:32px 12px}
}
