/* ═══ tw-local.css — 本地 Tailwind 子集 ═══
   原因：index.html 原本依赖 https://cdn.tailwindcss.com
   在部分浏览器/网络（如 360极速浏览器、国内网络）该 CDN 被拦截或加载失败，
   导致 SPA 动态注入的 class 生效不稳定（侧栏条目消失等现象）。
   这里把 app.js 实际用到的工具类全部内联，做到零外部依赖。 */

/* ── display / layout ── */
.flex{display:flex}
.inline-flex{display:inline-flex}
.grid{display:grid}
.hidden{display:none}
.block{display:block}
.flex-1{flex:1 1 0%}
.flex-col{flex-direction:column}
.flex-wrap{flex-wrap:wrap}
.shrink-0{flex-shrink:0}
.min-w-0{min-width:0}
.w-fit{width:fit-content}
.w-full{width:100%}
.w-12{width:3rem}
.overflow-hidden{overflow:hidden}
.overflow-auto{overflow:auto}
.relative{position:relative}
.absolute{position:absolute}
.items-center{align-items:center}
.items-end{align-items:flex-end}
.justify-center{justify-content:center}
.justify-between{justify-content:space-between}
.justify-end{justify-content:flex-end}
.ml-auto{margin-left:auto}
.text-center{text-align:center}
.text-right{text-align:right}
.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ── grid ── */
.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}
.col-span-1{grid-column:span 1/span 1}
.col-span-2{grid-column:span 2/span 2}
.col-span-3{grid-column:span 3/span 3}
.col-span-4{grid-column:span 4/span 4}

/* ── gap ── */
.gap-1{gap:.25rem}
.gap-1\.5{gap:.375rem}
.gap-2{gap:.5rem}
.gap-2\.5{gap:.625rem}
.gap-3{gap:.75rem}
.gap-4{gap:1rem}

/* ── padding ── */
.p-1{padding:.25rem}
.p-3\.5{padding:.875rem}
.p-4{padding:1rem}
.p-5{padding:1.25rem}
.p-6{padding:1.5rem}
.p-7{padding:1.75rem}
.p-8{padding:2rem}
.px-2{padding-left:.5rem;padding-right:.5rem}
.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}
.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}
.py-3{padding-top:.75rem;padding-bottom:.75rem}
.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}
.py-4{padding-top:1rem;padding-bottom:1rem}
.py-10{padding-top:2.5rem;padding-bottom:2.5rem}
.py-\[2px\]{padding-top:2px;padding-bottom:2px}

/* ── margin ── */
.mb-1{margin-bottom:.25rem}
.mb-2{margin-bottom:.5rem}
.mb-3{margin-bottom:.75rem}
.mb-3\.5{margin-bottom:.875rem}
.mb-4{margin-bottom:1rem}
.mb-5{margin-bottom:1.25rem}
.mb-6{margin-bottom:1.5rem}
.mb-7{margin-bottom:1.75rem}
.mt-0\.5{margin-top:.125rem}
.mt-1{margin-top:.25rem}
.mt-1\.5{margin-top:.375rem}
.mt-3{margin-top:.75rem}
.mt-4{margin-top:1rem}
.mt-5{margin-top:1.25rem}
.mt-6{margin-top:1.5rem}
.mt-7{margin-top:1.75rem}
.mt-8{margin-top:2rem}
.mt-9{margin-top:2.25rem}

/* ── space-y ── */
.space-y-2>*+*{margin-top:.5rem}
.space-y-4>*+*{margin-top:1rem}

/* ── 尺寸 ── */
.w-\[26px\]{width:26px}
.w-\[34px\]{width:34px}
.h-\[26px\]{height:26px}
.h-\[34px\]{height:34px}
.h-\[38px\]{height:38px}
.h-12{height:3rem}

/* ── 圆角 ── */
.rounded-\[5px\]{border-radius:5px}
.rounded-\[6px\]{border-radius:6px}
.rounded-\[7px\]{border-radius:7px}
.rounded-\[8px\]{border-radius:8px}
.rounded-\[9px\]{border-radius:9px}
.rounded-\[10px\]{border-radius:10px}

/* ── 字体 ── */
.font-medium{font-weight:500}
.font-semibold{font-weight:600}
.text-\[12px\]{font-size:12px}
.text-\[12\.5px\]{font-size:12.5px}
.text-\[13px\]{font-size:13px}
.text-\[13\.5px\]{font-size:13.5px}
.text-\[14px\]{font-size:14px}
.text-\[14\.5px\]{font-size:14.5px}
.text-\[15px\]{font-size:15px}
.text-\[15\.5px\]{font-size:15.5px}
.text-\[16px\]{font-size:16px}
.text-\[20px\]{font-size:20px}
.text-\[22px\]{font-size:22px}

/* ── 响应式（md: 768px+）── */
@media (min-width:768px){
  .md\:col-span-2{grid-column:span 2/span 2}
  .md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
}
