/* =============================================================
   南林淮校区资源分享平台 —— 自包含 Tailwind 风格样式
   （无 CDN 依赖，可离线运行）
   ============================================================= */

:root {
  --slate-50:#f8fafc; --slate-100:#f1f5f9; --slate-200:#e2e8f0; --slate-300:#cbd5e1;
  --slate-400:#94a3b8; --slate-500:#64748b; --slate-600:#475569; --slate-700:#334155;
  --slate-800:#1e293b; --slate-900:#0f172a;
  --gray-50:#f9fafb; --gray-100:#f3f4f6; --gray-200:#e5e7eb; --gray-400:#9ca3af;
  --gray-500:#6b7280; --gray-600:#4b5563; --gray-700:#374151; --gray-900:#111827;
  --red-50:#fef2f2; --red-100:#fee2e2; --red-500:#ef4444; --red-600:#dc2626; --red-700:#b91c1c;
  --orange-100:#ffedd5; --orange-500:#f97316; --orange-600:#ea580c;
  --amber-50:#fffbeb; --amber-100:#fef3c7; --amber-500:#f59e0b; --amber-600:#d97706; --amber-700:#b45309;
  --emerald-50:#ecfdf5; --emerald-100:#d1fae5; --emerald-500:#10b981; --emerald-600:#059669; --emerald-700:#047857;
  --blue-50:#eff6ff; --blue-100:#dbeafe; --blue-500:#3b82f6; --blue-600:#2563eb; --blue-700:#1d4ed8;
  --indigo-50:#eef2ff; --indigo-100:#e0e7ff; --indigo-200:#c7d2fe; --indigo-500:#6366f1;
  --indigo-600:#4f46e5; --indigo-700:#4338ca; --indigo-800:#3730a3;
  --purple-50:#faf5ff; --purple-100:#f3e8ff; --purple-500:#a855f7; --purple-600:#9333ea; --purple-700:#7e22ce;
  --pink-100:#fce7f3; --pink-500:#ec4899; --pink-600:#db2777;
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
    "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;
  background-color: var(--slate-100);
  color: var(--slate-800);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
img { max-width: 100%; display: block; }
button, input, select, textarea { font: inherit; color: inherit; }
ul, ol { list-style: none; }

.container { width: 100%; max-width: 1152px; margin-left: auto; margin-right: auto; padding-left: 1rem; padding-right: 1rem; }

/* ===== 弹性 / 网格 ===== */
.flex { display: flex; }
.inline-flex { display: inline-flex; }
.block { display: block; }
.inline-block { display: inline-block; }
.grid { display: grid; }
.hidden { display: none; }
.flex-col { flex-direction: column; }
.flex-row { flex-direction: row; }
.flex-wrap { flex-wrap: wrap; }
.flex-1 { flex: 1 1 0%; }
.flex-none { flex: none; }
.items-center { align-items: center; }
.items-start { align-items: flex-start; }
.items-end { align-items: flex-end; }
.items-stretch { align-items: stretch; }
.justify-center { justify-content: center; }
.justify-between { justify-content: space-between; }
.justify-end { justify-content: flex-end; }
.justify-start { justify-content: flex-start; }
.mx-auto { margin-left: auto; margin-right: auto; }
.ml-auto { margin-left: auto; }
.mr-auto { margin-right: auto; }
.w-full { width: 100%; }
.w-auto { width: auto; }
.max-w-xs { max-width: 20rem; }
.max-w-sm { max-width: 24rem; }
.max-w-md { max-width: 28rem; }
.max-w-lg { max-width: 32rem; }
.max-w-xl { max-width: 36rem; }
.max-w-2xl { max-width: 42rem; }
.max-w-3xl { max-width: 48rem; }
.max-w-4xl { max-width: 56rem; }
.min-h-screen { min-height: 100vh; }
.min-w-0 { min-width: 0; }
.h-16 { height: 4rem; }
.h-12 { height: 3rem; }
.h-10 { height: 2.5rem; }
.h-9 { height: 2.25rem; }
.h-8 { height: 2rem; }
.w-16 { width: 4rem; }
.w-12 { width: 3rem; }
.w-10 { width: 2.5rem; }
.w-9 { width: 2.25rem; }
.w-8 { width: 2rem; }
.text-center { text-align: center; }
.text-left { text-align: left; }
.text-right { text-align: right; }
.relative { position: relative; }
.absolute { position: absolute; }
.sticky { position: sticky; }
.fixed { position: fixed; }
.top-0 { top: 0; }
.right-0 { right: 0; }
.left-0 { left: 0; }
.bottom-0 { bottom: 0; }
.z-50 { z-index: 50; }
.z-10 { z-index: 10; }
.overflow-hidden { overflow: hidden; }
.overflow-x-auto { overflow-x: auto; }
.truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
.grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }

/* ===== 间距 ===== */
.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}
.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-10{padding:2.5rem}
.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}
.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}
.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}
.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}
.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}
.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}
.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}
.py-8{padding-top:2rem;padding-bottom:2rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}
.py-12{padding-top:3rem;padding-bottom:3rem}
.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}
.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pb-8{padding-bottom:2rem}
.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pr-4{padding-right:1rem}
.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-4{margin:1rem}
.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}
.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}
.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}
.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}
.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}
.mb-10{margin-bottom:2.5rem}
.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}
.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}
.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}
.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-4{margin-left:1rem;margin-right:1rem}
.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}
.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}
.gap-0{gap:0}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}
.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}
.space-y-1>*+*{margin-top:.25rem}.space-y-2>*+*{margin-top:.5rem}.space-y-3>*+*{margin-top:.75rem}
.space-y-4>*+*{margin-top:1rem}.space-y-6>*+*{margin-top:1.5rem}
.space-x-2>*+*{margin-left:.5rem}.space-x-3>*+*{margin-left:.75rem}.space-x-4>*+*{margin-left:1rem}
.divide-y>*+*{border-top:1px solid var(--slate-100)}

/* ===== 排版 ===== */
.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}
.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}
.text-xl{font-size:1.25rem;line-height:1.75rem}.text-2xl{font-size:1.5rem;line-height:2rem}
.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}
.font-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}
.leading-tight{line-height:1.25}.leading-relaxed{line-height:1.625}
.uppercase{text-transform:uppercase}.tracking-wide{letter-spacing:.025em}
.break-all{word-break:break-all}.whitespace-pre-wrap{white-space:pre-wrap}

/* ===== 颜色：文字 ===== */
.text-slate-50{color:var(--slate-50)}.text-slate-100{color:var(--slate-100)}.text-slate-200{color:var(--slate-200)}
.text-slate-300{color:var(--slate-300)}.text-slate-400{color:var(--slate-400)}.text-slate-500{color:var(--slate-500)}
.text-slate-600{color:var(--slate-600)}.text-slate-700{color:var(--slate-700)}.text-slate-800{color:var(--slate-800)}.text-slate-900{color:var(--slate-900)}
.text-gray-400{color:var(--gray-400)}.text-gray-500{color:var(--gray-500)}.text-gray-600{color:var(--gray-600)}.text-gray-700{color:var(--gray-700)}.text-gray-900{color:var(--gray-900)}
.text-red-500{color:var(--red-500)}.text-red-600{color:var(--red-600)}.text-red-700{color:var(--red-700)}
.text-orange-500{color:var(--orange-500)}.text-orange-600{color:var(--orange-600)}
.text-amber-500{color:var(--amber-500)}.text-amber-600{color:var(--amber-600)}.text-amber-700{color:var(--amber-700)}
.text-emerald-500{color:var(--emerald-500)}.text-emerald-600{color:var(--emerald-600)}.text-emerald-700{color:var(--emerald-700)}
.text-blue-500{color:var(--blue-500)}.text-blue-600{color:var(--blue-600)}.text-blue-700{color:var(--blue-700)}
.text-indigo-500{color:var(--indigo-500)}.text-indigo-600{color:var(--indigo-600)}.text-indigo-700{color:var(--indigo-700)}
.text-purple-500{color:var(--purple-500)}.text-purple-600{color:var(--purple-600)}.text-purple-700{color:var(--purple-700)}
.text-pink-500{color:var(--pink-500)}.text-pink-600{color:var(--pink-600)}
.text-white{color:#fff}.text-black{color:#000}

/* ===== 颜色：背景 ===== */
.bg-slate-50{background-color:var(--slate-50)}.bg-slate-100{background-color:var(--slate-100)}.bg-slate-200{background-color:var(--slate-200)}.bg-slate-300{background-color:var(--slate-300)}
.bg-slate-500{background-color:var(--slate-500)}.bg-slate-600{background-color:var(--slate-600)}.bg-slate-700{background-color:var(--slate-700)}.bg-slate-800{background-color:var(--slate-800)}.bg-slate-900{background-color:var(--slate-900)}
.bg-gray-50{background-color:var(--gray-50)}.bg-gray-100{background-color:var(--gray-100)}.bg-gray-200{background-color:var(--gray-200)}.bg-gray-900{background-color:var(--gray-900)}
.bg-red-50{background-color:var(--red-50)}.bg-red-100{background-color:var(--red-100)}.bg-red-500{background-color:var(--red-500)}.bg-red-600{background-color:var(--red-600)}
.bg-orange-100{background-color:var(--orange-100)}.bg-orange-500{background-color:var(--orange-500)}.bg-orange-600{background-color:var(--orange-600)}
.bg-amber-50{background-color:var(--amber-50)}.bg-amber-100{background-color:var(--amber-100)}.bg-amber-500{background-color:var(--amber-500)}.bg-amber-600{background-color:var(--amber-600)}
.bg-emerald-50{background-color:var(--emerald-50)}.bg-emerald-100{background-color:var(--emerald-100)}.bg-emerald-500{background-color:var(--emerald-500)}.bg-emerald-600{background-color:var(--emerald-600)}
.bg-blue-50{background-color:var(--blue-50)}.bg-blue-100{background-color:var(--blue-100)}.bg-blue-500{background-color:var(--blue-500)}.bg-blue-600{background-color:var(--blue-600)}.bg-blue-700{background-color:var(--blue-700)}
.bg-indigo-50{background-color:var(--indigo-50)}.bg-indigo-100{background-color:var(--indigo-100)}.bg-indigo-200{background-color:var(--indigo-200)}.bg-indigo-500{background-color:var(--indigo-500)}.bg-indigo-600{background-color:var(--indigo-600)}.bg-indigo-700{background-color:var(--indigo-700)}.bg-indigo-800{background-color:var(--indigo-800)}
.bg-purple-50{background-color:var(--purple-50)}.bg-purple-100{background-color:var(--purple-100)}.bg-purple-500{background-color:var(--purple-500)}.bg-purple-600{background-color:var(--purple-600)}
.bg-pink-100{background-color:var(--pink-100)}.bg-pink-500{background-color:var(--pink-500)}.bg-pink-600{background-color:var(--pink-600)}
.bg-white{background-color:#fff}.bg-transparent{background-color:transparent}

/* ===== 颜色：边框 ===== */
.border-slate-100{border-color:var(--slate-100)}.border-slate-200{border-color:var(--slate-200)}.border-slate-300{border-color:var(--slate-300)}.border-slate-400{border-color:var(--slate-400)}
.border-gray-200{border-color:var(--gray-200)}.border-gray-300{border-color:var(--gray-300)}
.border-red-200{border-color:var(--red-100)}.border-red-300{border-color:var(--red-500)}
.border-amber-200{border-color:var(--amber-100)}.border-amber-300{border-color:var(--amber-500)}
.border-emerald-200{border-color:var(--emerald-100)}.border-emerald-300{border-color:var(--emerald-500)}
.border-blue-200{border-color:var(--blue-100)}.border-blue-300{border-color:var(--blue-500)}
.border-indigo-200{border-color:var(--indigo-200)}.border-indigo-300{border-color:var(--indigo-500)}
.border-purple-200{border-color:var(--purple-100)}.border-purple-300{border-color:var(--purple-500)}
.border-white{border-color:#fff}

.border{border-width:1px;border-style:solid}.border-0{border-width:0}
.border-t{border-top-width:1px;border-top-style:solid}.border-b{border-bottom-width:1px;border-bottom-style:solid}
.border-b-2{border-bottom-width:2px;border-bottom-style:solid}
.rounded{border-radius:.25rem}.rounded-sm{border-radius:.125rem}.rounded-md{border-radius:.375rem}
.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}
.shadow-sm{box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}
.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1)}
.shadow-md{box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1)}
.shadow-lg{box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1)}
.shadow-xl{box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1)}

/* ===== 交互 ===== */
.hover\:bg-slate-50:hover{background-color:var(--slate-50)}
.hover\:bg-slate-100:hover{background-color:var(--slate-100)}
.hover\:bg-slate-200:hover{background-color:var(--slate-200)}
.hover\:bg-indigo-50:hover{background-color:var(--indigo-50)}
.hover\:bg-indigo-100:hover{background-color:var(--indigo-100)}
.hover\:bg-indigo-700:hover{background-color:var(--indigo-700)}
.hover\:bg-blue-700:hover{background-color:var(--blue-700)}
.hover\:bg-red-700:hover{background-color:var(--red-700)}
.hover\:bg-red-50:hover{background-color:var(--red-50)}
.hover\:bg-gray-100:hover{background-color:var(--gray-100)}
.hover\:text-indigo-600:hover{color:var(--indigo-600)}
.hover\:text-indigo-700:hover{color:var(--indigo-700)}
.hover\:text-blue-600:hover{color:var(--blue-600)}
.hover\:text-red-600:hover{color:var(--red-600)}
.hover\:text-white:hover{color:#fff}
.hover\:border-indigo-300:hover{border-color:var(--indigo-300)}
.hover\:shadow-md:hover{box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1)}
.hover\:shadow-lg:hover{box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1)}
.transition{transition:all .15s ease}
.transition-colors{transition:color .15s ease,background-color .15s ease,border-color .15s ease}
.duration-200{transition-duration:.2s}

/* ===== 渐变 ===== */
.bg-gradient-primary{background-image:linear-gradient(135deg,#4f46e5 0%,#2563eb 100%)}
.bg-gradient-soft{background-image:linear-gradient(180deg,#eef2ff 0%,#ffffff 100%)}
.text-gradient{background:linear-gradient(135deg,#4f46e5,#2563eb);-webkit-background-clip:text;background-clip:text;color:transparent}

/* ===== 按钮 ===== */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.55rem 1.1rem;border-radius:.5rem;font-weight:600;font-size:.875rem;border:1px solid transparent;cursor:pointer;transition:all .15s ease;white-space:nowrap}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn-primary{background-image:linear-gradient(135deg,#4f46e5,#2563eb);color:#fff;box-shadow:0 4px 14px rgba(79,70,229,.3)}
.btn-primary:hover{box-shadow:0 6px 18px rgba(79,70,229,.45);filter:brightness(1.05)}
.btn-secondary{background-color:var(--slate-800);color:#fff}
.btn-secondary:hover{background-color:var(--slate-900)}
.btn-outline{background-color:#fff;color:var(--slate-700);border-color:var(--slate-300)}
.btn-outline:hover{background-color:var(--slate-50);border-color:var(--slate-400)}
.btn-ghost{background-color:transparent;color:var(--slate-600)}
.btn-ghost:hover{background-color:var(--slate-100);color:var(--slate-800)}
.btn-danger{background-color:var(--red-600);color:#fff}
.btn-danger:hover{background-color:var(--red-700)}
.btn-success{background-color:var(--emerald-600);color:#fff}
.btn-success:hover{background-color:var(--emerald-700)}
.btn-sm{padding:.3rem .7rem;font-size:.8rem;border-radius:.4rem}
.btn-lg{padding:.75rem 1.6rem;font-size:1rem}
.btn-block{width:100%}

/* ===== 卡片 ===== */
.card{background:#fff;border:1px solid var(--slate-200);border-radius:.75rem;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.card-hover{transition:all .18s ease}
.card-hover:hover{box-shadow:0 10px 25px -5px rgba(0,0,0,.1);transform:translateY(-2px);border-color:var(--slate-300)}
.card-body{padding:1.25rem}
.card-header{padding:1rem 1.25rem;border-bottom:1px solid var(--slate-200)}

/* ===== 徽章 ===== */
.badge{display:inline-flex;align-items:center;gap:.25rem;padding:.15rem .6rem;border-radius:9999px;font-size:.72rem;font-weight:600;line-height:1.4}
.badge-blue{background:var(--blue-50);color:var(--blue-700)}
.badge-green{background:var(--emerald-50);color:var(--emerald-700)}
.badge-red{background:var(--red-50);color:var(--red-700)}
.badge-amber{background:var(--amber-50);color:var(--amber-700)}
.badge-gray{background:var(--gray-100);color:var(--gray-600)}
.badge-purple{background:var(--purple-50);color:var(--purple-700)}
.badge-indigo{background:var(--indigo-50);color:var(--indigo-700)}
.badge-pink{background:var(--pink-100);color:var(--pink-600)}
.badge-orange{background:var(--orange-100);color:var(--orange-600)}

/* ===== 提示 ===== */
.alert{display:flex;align-items:flex-start;gap:.6rem;padding:.8rem 1rem;border-radius:.5rem;border:1px solid;font-size:.875rem}
.alert-success{background:var(--emerald-50);border-color:var(--emerald-100);color:var(--emerald-700)}
.alert-error{background:var(--red-50);border-color:var(--red-100);color:var(--red-700)}
.alert-info{background:var(--blue-50);border-color:var(--blue-100);color:var(--blue-700)}
.alert-warning{background:var(--amber-50);border-color:var(--amber-100);color:var(--amber-700)}

/* ===== 表单 ===== */
.form-label{display:block;font-size:.875rem;font-weight:600;color:var(--slate-700);margin-bottom:.4rem}
.form-input,.form-select,.form-textarea{width:100%;padding:.6rem .85rem;border:1px solid var(--slate-300);border-radius:.5rem;background:#fff;font-size:.9rem;transition:border-color .15s,box-shadow .15s;color:var(--slate-800)}
.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:var(--indigo-500);box-shadow:0 0 0 3px rgba(79,70,229,.12)}
.form-textarea{min-height:130px;resize:vertical}
.form-hint{font-size:.78rem;color:var(--slate-500);margin-top:.35rem}
.form-error{font-size:.78rem;color:var(--red-600);margin-top:.35rem}
.form-group{margin-bottom:1.1rem}

/* ===== 表格 ===== */
.table{width:100%;border-collapse:collapse;font-size:.875rem}
.table th{text-align:left;font-weight:600;color:var(--slate-500);font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;padding:.7rem .9rem;border-bottom:1px solid var(--slate-200);background:var(--slate-50)}
.table td{padding:.8rem .9rem;border-bottom:1px solid var(--slate-100);color:var(--slate-700)}
.table tbody tr:hover{background:var(--slate-50)}

/* ===== 头像 ===== */
.avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:9999px;color:#fff;font-weight:700;flex:none;background-image:linear-gradient(135deg,#6366f1,#3b82f6)}
.avatar-sm{width:2rem;height:2rem;font-size:.8rem}
.avatar-md{width:2.5rem;height:2.5rem;font-size:.95rem}
.avatar-lg{width:4rem;height:4rem;font-size:1.5rem}

/* ===== 导航 ===== */
.nav-link{padding:.5rem .85rem;border-radius:.5rem;font-size:.9rem;font-weight:500;color:var(--slate-600);transition:all .15s}
.nav-link:hover{color:var(--slate-900);background:var(--slate-100)}
.nav-link.active{color:var(--indigo-700);background:var(--indigo-50);font-weight:600}

/* ===== 用户菜单 ===== */
.user-menu summary{list-style:none;cursor:pointer}
.user-menu summary::-webkit-details-marker{display:none}
.dropdown{position:absolute;right:0;top:calc(100% + .5rem);min-width:11rem;background:#fff;border:1px solid var(--slate-200);border-radius:.6rem;box-shadow:0 10px 30px rgba(0,0,0,.12);overflow:hidden;z-index:60}
.dropdown a{display:block;padding:.6rem 1rem;font-size:.875rem;color:var(--slate-700)}
.dropdown a:hover{background:var(--slate-50);color:var(--indigo-700)}

/* ===== 分页 ===== */
.pagination{display:flex;gap:.35rem;align-items:center;flex-wrap:wrap}
.pagination a,.pagination span{display:inline-flex;align-items:center;justify-content:center;min-width:2.2rem;height:2.2rem;padding:0 .6rem;border-radius:.5rem;font-size:.85rem;border:1px solid var(--slate-200);color:var(--slate-600);background:#fff}
.pagination a:hover{background:var(--slate-50)}
.pagination .current{background:var(--indigo-600);border-color:var(--indigo-600);color:#fff}
.pagination .disabled{opacity:.5}

/* ===== 统计卡 ===== */
.stat-card{background:#fff;border:1px solid var(--slate-200);border-radius:.75rem;padding:1.1rem 1.25rem;display:flex;align-items:center;gap:.9rem}
.stat-icon{width:3rem;height:3rem;border-radius:.7rem;display:flex;align-items:center;justify-content:center;font-size:1.4rem;flex:none}
.stat-value{font-size:1.5rem;font-weight:700;color:var(--slate-900);line-height:1.2}
.stat-label{font-size:.8rem;color:var(--slate-500)}

/* ===== Hero ===== */
.hero{background-image:linear-gradient(135deg,#4f46e5 0%,#3b82f6 60%,#06b6d4 100%);color:#fff;border-radius:1rem;padding:2.5rem 2rem;position:relative;overflow:hidden}
.hero::after{content:"";position:absolute;right:-60px;top:-60px;width:260px;height:260px;border-radius:9999px;background:rgba(255,255,255,.12)}
.hero::before{content:"";position:absolute;right:80px;bottom:-80px;width:200px;height:200px;border-radius:9999px;background:rgba(255,255,255,.08)}
.hero>*{position:relative;z-index:1}

/* ===== 文件图标 ===== */
.file-icon{width:2.75rem;height:2.75rem;border-radius:.6rem;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.72rem;text-transform:uppercase;flex:none}
.file-icon-blue{background:var(--blue-50);color:var(--blue-700)}
.file-icon-green{background:var(--emerald-50);color:var(--emerald-700)}
.file-icon-red{background:var(--red-50);color:var(--red-700)}
.file-icon-amber{background:var(--amber-50);color:var(--amber-700)}
.file-icon-gray{background:var(--gray-100);color:var(--gray-600)}
.file-icon-purple{background:var(--purple-50);color:var(--purple-700)}
.file-icon-orange{background:var(--orange-100);color:var(--orange-600)}

/* ===== 空状态 ===== */
.empty{text-align:center;padding:3rem 1rem;color:var(--slate-400)}
.empty .empty-icon{font-size:3rem;margin-bottom:.75rem}

/* ===== 正文 ===== */
.prose{line-height:1.8;color:var(--slate-700)}
.prose p{margin-bottom:.8rem}

/* ===== 响应式 ===== */
@media (min-width:640px){
  .sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sm\:block{display:block}
  .sm\:inline-flex{display:inline-flex}
}
@media (min-width:768px){
  .md\:block{display:block}
  .md\:flex{display:flex}
  .md\:inline-flex{display:inline-flex}
  .md\:hidden{display:none}
  .md\:grid{display:grid}
  .md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
  .md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}
  .md\:flex-row{flex-direction:row}
  .md\:col-span-2{grid-column:span 2 / span 2}
  .md\:text-4xl{font-size:2.25rem;line-height:2.5rem}
}
@media (min-width:1024px){
  .lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
  .lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}
  .lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}
  .lg\:flex{display:flex}
  .lg\:col-span-2{grid-column:span 2 / span 2}
  .lg\:pl-60{padding-left:15rem}
  .lg\:flex{display:flex}
}

/* ===== 后台侧边导航 ===== */
.admin-nav{display:block;padding:.6rem .9rem;border-radius:.5rem;font-size:.9rem;color:var(--slate-300);white-space:nowrap}
.admin-nav:hover{background:var(--slate-800);color:#fff}
.admin-nav.active{background:var(--indigo-600);color:#fff}
.w-60{width:15rem}
.inset-y-0{top:0;bottom:0}
