*{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:"Microsoft YaHei",sans-serif;background:linear-gradient(180deg,#f5f7fb 0%,#eef1f6 100%);color:#333}
.layout{display:flex;min-height:100vh}
.sidebar{width:240px;background:#2c3e50;color:#fff;display:flex;flex-direction:column}
.logo{padding:18px;font-weight:600;text-align:center;border-bottom:1px solid #34495e}
.menu{list-style:none;margin:0;padding:0;flex:1;overflow:auto}
.menu a{display:block;padding:12px 16px;color:#bdc3c7;text-decoration:none;border-bottom:1px solid #34495e}
.menu a:hover,.menu a.active{background:#34495e;color:#fff}
.content{flex:1;padding:20px}
.topbar{background:#fff;border-radius:8px;padding:12px 16px;margin-bottom:16px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 4px rgba(0,0,0,.05)}
.cards{display:flex;gap:16px;flex-wrap:wrap}
.card{background:#fff;border-radius:12px;padding:16px;box-shadow:0 10px 16px rgba(28,39,57,.08);border:1px solid #e9edf3;width:100%;transition:transform .15s ease, box-shadow .15s ease}
.cards .card{width:220px}
.card:hover{transform:translateY(-2px);box-shadow:0 14px 22px rgba(28,39,57,.12)}
.card h3{margin:0 0 10px;font-size:16px;color:#2c3e50;border-bottom:1px dashed #e9edf3;padding-bottom:6px}
.btn{display:inline-block;padding:8px 14px;background:#c0392b;color:#fff;text-decoration:none;border-radius:4px}
.btn:hover{background:#e74c3c;box-shadow:0 6px 12px rgba(192,57,43,.25)}
.btn:active{transform:translateY(1px)}
table{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 2px 4px rgba(0,0,0,.05)}
th,td{padding:12px 14px;text-align:left;border-bottom:1px solid #eee}
th{background:#fafafa;color:#666;font-weight:600}
.form{background:#fff;padding:20px;border-radius:10px;box-shadow:0 12px 18px rgba(28,39,57,.08);border:1px solid #e9edf3;width:100%;margin:0 auto}
.form-group{margin-bottom:12px}
.form-group label{display:block;margin-bottom:6px;color:#666}
.form-group input,.form-group select,.form-group textarea{width:100%;padding:8px;border:1px solid #ddd;border-radius:4px}
.muted{color:#888}
@media(max-width:900px){.sidebar{position:fixed;left:-240px;top:0;bottom:0;transition:left .3s}.sidebar.open{left:0}.content{padding:12px}.topbar{position:sticky;top:0}}
@media print{
  body{background:#fff}
  .sidebar,.user,.no-print{display:none!important}
  .content{padding:0}
  .btn{display:none!important}
  .print-header{display:block!important}
}
.print-header{display:none;background:#fff;border-radius:8px;padding:12px 16px;margin-bottom:12px}
/* Mobile bottom nav */
.mobile-nav{position:fixed;bottom:0;left:0;right:0;background:#ffffffcc;backdrop-filter:saturate(180%) blur(8px);border-top:1px solid #e9edf3;z-index:999}
.mobile-nav-inner{max-width:640px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;flex-wrap:nowrap}
.mobile-nav-inner a{display:block;flex:1;padding:10px 0;text-align:center;color:#555;text-decoration:none;font-weight:600}
.mobile-nav-inner a.active{color:#2c3e50}
.icon{display:inline-block;margin-right:8px;font-size:16px;line-height:1}
.card-primary{border-color:#4e73df;background:linear-gradient(180deg,#fff 0%,#f3f6ff 100%)}
.card-success{border-color:#1cc88a;background:linear-gradient(180deg,#fff 0%,#eefaf5 100%)}
.card-warning{border-color:#f6c23e;background:linear-gradient(180deg,#fff 0%,#fff8e6 100%)}
.card-info{border-color:#36b9cc;background:linear-gradient(180deg,#fff 0%,#eafaff 100%)}
.card-danger{border-color:#e74a3b;background:linear-gradient(180deg,#fff 0%,#fdecea 100%)}
.card-muted{border-color:#e9edf3;background:linear-gradient(180deg,#fff 0%,#f7f9fc 100%)}
/* Lightbox */
.lightbox-backdrop{position:fixed;left:0;top:0;right:0;bottom:0;background:rgba(0,0,0,.6);display:none;align-items:center;justify-content:center;z-index:1000}
.lightbox-backdrop.open{display:flex}
.lightbox-img{max-width:92vw;max-height:92vh;border-radius:10px;box-shadow:0 10px 20px rgba(0,0,0,.3);border:1px solid #e9edf3;background:#fff}
.hw-thumb{cursor:pointer;transition:transform .1s ease}
.hw-thumb:active{transform:scale(0.98)}
