:root{--p:#7c3aed;--pd:#4c1d95;--g:#22c55e;--bg:#f6f5fb;--t:#111827;--m:#6b7280;--b:#e5e7eb;--y:#f59e0b;--dark:#111827}
*{box-sizing:border-box;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif}
body{background:var(--bg);color:var(--t)}
header{background:rgba(255,255,255,.94);border-bottom:1px solid #eceaf7;position:sticky;top:0;z-index:10;backdrop-filter:blur(6px)}
.top{max-width:1240px;margin:auto;padding:12px 22px;display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap}
.logo{display:flex;gap:10px;align-items:center;cursor:pointer;text-decoration:none;color:inherit}
.logo-icon{width:42px;height:42px;border-radius:13px;background:linear-gradient(135deg,#7c3aed,#6366f1);color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px;box-shadow:0 8px 20px rgba(124,58,237,.18)}
.logo h1{font-size:24px;color:var(--pd);letter-spacing:.2px}
.logo small{color:#7a7a8c;font-size:13px}
nav{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
nav a{background:#fff;border:1px solid #eceaf7;border-radius:12px;padding:10px 16px;font-weight:600;cursor:pointer;text-decoration:none;color:#3a3553;transition:all .2s ease;box-shadow:0 1px 0 rgba(17,24,39,.02)}
nav a:hover{background:#f7f4ff;color:var(--pd);border-color:#ddd5ff;transform:translateY(-1px)}
nav a:active{transform:translateY(0)}
.container{max-width:1240px;margin:auto;padding:24px}
.page{display:none}
.page.active{display:block}
.hero{background:linear-gradient(135deg,#7c3aed,#ec4899);color:#fff;border-radius:24px;padding:42px 28px;text-align:center;box-shadow:0 12px 30px rgba(124,58,237,.25)}
.hero h2{font-size:42px;margin-bottom:12px}
.hero p{font-size:18px;margin-bottom:24px}
.search{background:#fff;color:var(--t);max-width:920px;margin:auto;border-radius:18px;padding:16px;display:grid;grid-template-columns:1.4fr 1fr auto;gap:10px}
input,select,textarea{width:100%;padding:13px;border:1px solid var(--b);border-radius:10px;font-size:15px;background:#fff}
textarea{min-height:110px;resize:vertical}
.primary{background:var(--p);color:#fff;border:none;border-radius:10px;padding:13px 18px;font-weight:900;cursor:pointer}
.primary:hover{background:var(--pd)}
.green{background:var(--g);color:#fff;border:none;border-radius:10px;padding:13px 18px;font-weight:900;cursor:pointer}
.title{font-size:24px;margin:34px 0 10px}
.sub{color:var(--m);margin-bottom:16px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}
.card,.party,.cat,.supplier{background:#fff;border:1px solid var(--b);border-radius:18px;padding:18px;box-shadow:0 4px 16px rgba(0,0,0,.06)}
.party,.cat,.supplier{transition:.2s}
.party:hover,.cat:hover,.supplier:hover{transform:translateY(-3px)}
.icon{font-size:38px;margin-bottom:10px}
.muted{color:var(--m)}
.checklist{display:none;background:#fff;border:1px solid var(--b);border-radius:20px;padding:22px;margin-top:22px}
.checklist.active{display:block}
.check-items{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-top:16px}
.check{border:1px solid var(--b);border-radius:14px;padding:14px;display:flex;justify-content:space-between;align-items:center;gap:12px}
.mini{border:none;border-radius:8px;background:#ede9fe;color:var(--pd);font-weight:900;padding:9px 11px;cursor:pointer}
.layout{display:grid;grid-template-columns:260px 1fr;gap:20px}
.filters{background:#fff;border:1px solid var(--b);border-radius:18px;padding:18px;height:max-content;position:sticky;top:90px}
.filters label{font-weight:900;font-size:14px;margin:14px 0 6px;display:block}
.suppliers{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:16px}
.img{height:170px;border-radius:14px;background:linear-gradient(135deg,#e5e7eb,#f5d0fe);display:flex;align-items:center;justify-content:center;font-weight:900;color:#4b5563;text-align:center;margin-bottom:14px}
.supplier-card-image{width:100%;height:100%;object-fit:cover;border-radius:14px;display:block}
.img-empty{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-weight:900;color:#4b5563;text-align:center}
.tag{display:inline-block;background:#f3f0ff;color:var(--pd);padding:5px 9px;border-radius:999px;font-size:12px;font-weight:900;margin-bottom:8px}
.supplier p{font-size:14px;line-height:1.35;margin:7px 0;color:#4b5563}
.rating{color:var(--y);font-weight:900;margin:8px 0}
.buttons{display:flex;gap:9px;margin-top:14px}
.btn{flex:1;border:none;border-radius:10px;padding:11px;font-weight:900;cursor:pointer}
.secondary{background:#f3f4f6}
.contact{background:var(--g);color:#fff}
.detail-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:22px}
.gallery-main{height:320px;border-radius:18px;background:linear-gradient(135deg,#ddd6fe,#fbcfe8);display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:900;color:#4b5563;overflow:hidden}
.detail-main-photo{width:100%;height:100%;object-fit:cover;display:block;cursor:pointer}
.gallery-small{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:10px}
.gallery-thumb-btn{height:90px;border:none;border-radius:12px;background:#ede9fe;padding:0;overflow:hidden;cursor:pointer}
.gallery-thumb-image{width:100%;height:100%;object-fit:cover;display:block}
.sticky{background:#fff;border:1px solid var(--b);border-radius:18px;padding:20px;position:sticky;top:90px}
.row{display:flex;justify-content:space-between;border-bottom:1px solid #eee;padding:10px 0;gap:12px}
.comment{background:#f9fafb;border:1px solid var(--b);border-radius:14px;padding:14px;margin-top:10px}
.admin-layout{display:grid;grid-template-columns:240px 1fr;gap:20px}
.side{background:var(--dark);color:#fff;border-radius:20px;padding:16px;height:max-content}
.side button{width:100%;text-align:left;margin-bottom:8px;border:none;background:rgba(255,255,255,.08);color:#fff;padding:12px;border-radius:10px;font-weight:900;cursor:pointer}
.side button:hover{background:var(--p)}
.admin-section{display:none}
.admin-section.active{display:block}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}
.kpi{background:#fff;border:1px solid var(--b);border-radius:16px;padding:18px}
.kpi strong{font-size:30px;color:var(--pd)}
.kpi h3{color:var(--m);font-size:15px}
.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.full{grid-column:1/-1}
.table{overflow-x:auto;border:1px solid var(--b);border-radius:16px;background:#fff}
table{width:100%;border-collapse:collapse;min-width:760px;background:#fff}
th,td{padding:13px;border-bottom:1px solid var(--b);text-align:left;font-size:14px}
th{background:#ede9fe}
.login-wrap{max-width:520px;margin:30px auto}
.login-card{background:#fff;border:1px solid var(--b);border-radius:18px;padding:18px;box-shadow:0 4px 16px rgba(0,0,0,.06)}
.login-card h2{margin-bottom:8px}
.login-card p{color:var(--m);margin-bottom:18px}
.login-card input{margin-bottom:12px}
.preview-photos{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin-top:12px}
.photo-box{height:110px;border:1px dashed var(--p);border-radius:12px;background:#f3f0ff;display:flex;align-items:center;justify-content:center;color:var(--pd);font-weight:900;position:relative;overflow:hidden}
.photo-label{padding:8px;text-align:center}
.photo-preview{width:100%;height:100%;object-fit:cover;display:block}
.remove-photo{position:absolute;right:6px;top:6px;border:none;background:rgba(0,0,0,.68);color:#fff;padding:4px 8px;border-radius:8px;cursor:pointer;font-size:11px;font-weight:700}
.remove-photo:hover{background:#dc2626}
.modal{display:none;position:fixed;inset:0;background:rgba(0,0,0,.58);align-items:center;justify-content:center;padding:20px;z-index:99}
.modal-content{background:#fff;max-width:530px;width:100%;border-radius:20px;padding:24px;position:relative}
.close-x{position:absolute;right:18px;top:14px;border:none;background:#f3f4f6;width:34px;height:34px;border-radius:50%;font-size:20px;font-weight:900;cursor:pointer;color:#333}
.close-x:hover{background:#fee2e2;color:#991b1b}
.modal-content h2{margin-bottom:8px}
.modal-content p{color:var(--m);margin-bottom:18px}
.modal-content input,.modal-content select{margin-bottom:12px}
.image-modal-content{max-width:920px;padding:18px;display:flex;align-items:center;justify-content:center;background:#111827}
.carousel-image{width:100%;max-height:78vh;object-fit:contain;border-radius:16px}
.carousel-btn{position:absolute;top:50%;transform:translateY(-50%);border:none;background:rgba(255,255,255,.18);color:#fff;width:44px;height:44px;border-radius:999px;font-size:24px;cursor:pointer}
.carousel-btn.prev{left:14px}
.carousel-btn.next{right:14px}
.carousel-btn:hover{background:rgba(255,255,255,.3)}
.success{display:none;background:#ecfdf5;border:1px solid #86efac;border-radius:14px;padding:14px;margin-top:14px;color:#166534}
.success a{display:block;background:var(--g);color:#fff;text-decoration:none;padding:12px;border-radius:10px;text-align:center;margin-top:12px;font-weight:900}
.hidden{display:none}
.badge{display:inline-block;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:900;background:#ecfdf5;color:#166534}
.badge-ok{background:#dcfce7;color:#166534}
.badge-warn{background:#fef3c7;color:#92400e}
.badge-stop{background:#fee2e2;color:#991b1b}
.btn-brand{background:var(--p);color:#fff;border:none;border-radius:10px;padding:13px 18px;font-weight:900;cursor:pointer}
.btn-alt{background:var(--g);color:#fff;border:none;border-radius:10px;padding:13px 18px;font-weight:900;cursor:pointer}
.action-approve{padding:6px 10px;background:#16a34a;color:#fff;border:none;border-radius:8px;font-size:12px;font-weight:700;cursor:pointer;margin-right:6px}
.action-reject{padding:6px 10px;background:#dc2626;color:#fff;border:none;border-radius:8px;font-size:12px;font-weight:700;cursor:pointer}
@media(max-width:850px){.search,.layout,.detail-grid,.admin-layout,.form-grid{grid-template-columns:1fr}.filters,.sticky{position:static}.hero h2{font-size:30px}.gallery-small{grid-template-columns:repeat(2,1fr)}}
