*{box-sizing:border-box}body{margin:0;background:#f3f6fb;color:#1f2937;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,'Microsoft YaHei',sans-serif}.layout{display:flex;min-height:100vh}.sidebar{width:250px;background:linear-gradient(180deg,#0f172a,#1e293b);color:white;padding:24px;position:fixed;top:0;bottom:0;left:0}.brand{font-size:24px;font-weight:800;margin-bottom:28px;display:flex;gap:10px;align-items:center}.brand span{letter-spacing:.5px}.sidebar a{display:block;color:#dbeafe;text-decoration:none;padding:13px 15px;border-radius:12px;margin:8px 0;transition:.2s}.sidebar a:hover{background:#334155;color:white;transform:translateX(3px)}.main{margin-left:250px;width:calc(100% - 250px);padding:28px}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.topbar h1{margin:0;font-size:28px}.topbar p{margin:8px 0 0;color:#64748b}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:22px}.card,.panel{background:white;border-radius:20px;box-shadow:0 8px 24px rgba(15,23,42,.08);padding:22px}.stat b{font-size:38px;color:#2563eb;display:block}.stat span{color:#64748b}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:20px}.panel{margin-bottom:20px}.panel h2{margin:0 0 16px;font-size:20px}.section-title{font-weight:700;margin-bottom:12px}table{width:100%;border-collapse:collapse}th{background:#eff6ff;color:#334155;text-align:left;padding:13px;font-size:14px}td{border-bottom:1px solid #eef2f7;padding:12px;vertical-align:middle}tr:hover td{background:#fafcff}.thumb{width:64px;height:64px;object-fit:cover;border-radius:14px}.muted,small{color:#64748b}.badge{display:inline-block;background:#dcfce7;color:#166534;padding:6px 10px;border-radius:999px;font-size:13px}.badge.off{background:#fee2e2;color:#991b1b}.btn{display:inline-block;border:0;border-radius:10px;padding:10px 15px;text-decoration:none;color:white;cursor:pointer;font-weight:600;line-height:1;background:#2563eb}.btn.primary{background:#2563eb}.btn.success{background:#16a34a}.btn.secondary{background:#64748b}.btn.warn{background:#f59e0b}.btn.danger{background:#dc2626}.btn.small{font-size:12px;padding:7px 9px}.btn.full{width:100%;margin-top:16px}.filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.filters input,.filters select{height:42px;border:1px solid #d1d5db;border-radius:10px;padding:0 12px;background:white}.filters input[name=q]{min-width:260px}.actions{display:flex;gap:6px;flex-wrap:wrap}.actions form{display:inline}.pager{display:flex;gap:8px;margin-top:18px;flex-wrap:wrap}.pager a{padding:8px 12px;border-radius:9px;background:#e2e8f0;color:#334155;text-decoration:none}.pager a.active{background:#2563eb;color:white}.form-panel{max-width:1000px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-grid .full{grid-column:1/-1}.form-grid label{display:block;font-weight:700;margin-bottom:7px}.form-grid input,.form-grid select,.form-grid textarea{width:100%;border:1px solid #d1d5db;border-radius:12px;padding:12px;font-size:15px}.form-grid textarea{min-height:150px}.preview{max-width:220px;border-radius:16px;box-shadow:0 5px 16px rgba(0,0,0,.15)}.preview-box{background:#f8fafc;border-radius:14px;padding:14px}.file-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:18px}.file-card{background:white;border-radius:18px;padding:14px;box-shadow:0 8px 24px rgba(15,23,42,.08)}.file-card img{width:100%;height:130px;object-fit:cover;border-radius:14px}.file-card p{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#475569;font-size:13px}.flash-wrap{margin-bottom:18px}.flash{padding:12px 14px;border-radius:12px;margin-bottom:8px}.flash.success{background:#dcfce7;color:#166534}.flash.danger{background:#fee2e2;color:#991b1b}.login-body{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at top left,#38bdf8,#0f172a 55%,#020617)}.login-card{width:390px;background:rgba(255,255,255,.95);border-radius:28px;padding:34px;box-shadow:0 24px 80px rgba(0,0,0,.35)}.login-logo{text-align:center;font-size:52px}.login-card h1{text-align:center;margin:10px 0 4px}.login-card p{text-align:center;color:#64748b;margin-bottom:22px}.login-card label{display:block;margin-top:14px;font-weight:700}.login-card input{width:100%;border:1px solid #d1d5db;border-radius:12px;padding:13px;margin-top:7px}@media(max-width:900px){.sidebar{position:relative;width:100%;height:auto}.layout{display:block}.main{margin-left:0;width:100%;padding:18px}.cards,.grid2{grid-template-columns:1fr}.topbar{display:block}.form-grid{grid-template-columns:1fr}.filters input[name=q]{min-width:100%}.merchant-table{font-size:13px}.actions{display:block}.actions .btn{margin:3px 0}}

.flash-wrap{
    margin: 0 0 16px 0;
}

.flash{
    padding: 12px 16px;
    border-radius: 8px;
    font-weight: 600;
    margin-bottom: 10px;
}

.flash.success{
    background: #e8f7e9;
    color: #1b5e20;
    border: 1px solid #81c784;
}

.flash.danger{
    background: #ffebee;
    color: #b71c1c;
    border: 1px solid #ef9a9a;
}

.merchant-table{
    width:100%;
    border-collapse:collapse;
}

.merchant-table th,
.merchant-table td{
    padding:12px;
    border-bottom:1px solid #eef2f7;
    vertical-align:middle;
}

.merchant-table th:first-child,
.merchant-table td:first-child{
    width:52px;
    text-align:center;
    padding-left:12px;
    padding-right:12px;
}

.merchant-table th:last-child,
.merchant-table td:last-child{
    width:130px;
}

.merchant-table tr:hover td{
    background:#fafcff;
}

.mobile-menu-btn,
.mobile-mask{
    display:none;
}

@media(max-width:900px){
    .mobile-menu-btn{
        display:block;
        position:fixed;
        top:12px;
        left:12px;
        z-index:2001;
        border:0;
        border-radius:12px;
        padding:10px 14px;
        background:#2563eb;
        color:white;
        font-weight:700;
    }

    .mobile-mask{
        display:none;
        position:fixed;
        inset:0;
        background:rgba(0,0,0,.45);
        z-index:1999;
    }

    .mobile-mask.show{
        display:block;
    }

    .sidebar{
        position:fixed;
        left:-260px;
        top:0;
        bottom:0;
        width:250px;
        z-index:2000;
        transition:.25s ease;
    }

    .sidebar.show{
        left:0;
    }

    .main{
        margin-left:0;
        width:100%;
        padding:70px 18px 18px;
    }
}

@media(min-width:901px){
    .sidebar{
        left:0;
    }

    .main{
        margin-left:250px;
        width:calc(100% - 250px);
    }
}