*,*::before,*::after{box-sizing:border-box;margin:0;padding:0} :root{ --bg:#0d1117;--bg-card:#161b22;--bg-input:#0d1321; --border:#30363d;--text:#f1f5f9;--muted:#8b949e; --primary:#2DA3F2;--primary-dark:#1a8dd9; --green:#22c55e;--red:#ef4444;--volt:#facc15; --shadow:0 4px 24px rgba(0,0,0,.4); } body{font-family:"Outfit",system-ui,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;font-size:15px} /* Layout */ .app-wrap{display:flex;min-height:100vh} .sidebar{width:220px;background:var(--bg-card);border-right:1px solid var(--border);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100;overflow-y:auto} .sidebar-brand{padding:1.25rem 1rem 1rem;font-size:1.1rem;font-weight:800;background:linear-gradient(135deg,var(--primary),var(--volt));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;border-bottom:1px solid var(--border);text-decoration:none;display:block} .sidebar-nav{flex:1;padding:.5rem} .sidebar-link{display:flex;align-items:center;gap:.6rem;padding:.5rem .75rem;color:var(--muted);text-decoration:none;border-radius:8px;font-size:.875rem;font-weight:500;margin:.1rem 0;transition:all .2s} .sidebar-link i{width:16px;text-align:center;font-size:.8rem} .sidebar-link:hover{background:rgba(45,163,242,.08);color:var(--primary)} .sidebar-link.active{background:rgba(45,163,242,.14);color:var(--primary);border:1px solid rgba(45,163,242,.2)} .sidebar-section{font-size:.62rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:.75rem .75rem .25rem;font-weight:700} .main{margin-left:220px;flex:1;padding:2rem} /* Cards */ .card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:1.5rem} .page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.75rem;flex-wrap:wrap;gap:.75rem} .page-title{font-size:1.4rem;font-weight:800} .page-sub{font-size:.82rem;color:var(--muted);margin-top:.2rem} /* Badges */ .badge{display:inline-flex;align-items:center;padding:.2rem .65rem;border-radius:20px;font-size:.72rem;font-weight:700;gap:.3rem} .badge-muted{background:rgba(139,148,158,.1);color:var(--muted);border:1px solid rgba(139,148,158,.2)} .badge-volt{background:rgba(250,204,21,.1);color:var(--volt);border:1px solid rgba(250,204,21,.2)} .badge-green{background:rgba(34,197,94,.1);color:var(--green);border:1px solid rgba(34,197,94,.2)} .badge-red{background:rgba(239,68,68,.1);color:var(--red);border:1px solid rgba(239,68,68,.2)} .badge-blue{background:rgba(45,163,242,.1);color:var(--primary);border:1px solid rgba(45,163,242,.2)} /* Buttons */ .btn{display:inline-flex;align-items:center;gap:.4rem;padding:.45rem 1rem;border-radius:8px;font-size:.875rem;font-weight:600;cursor:pointer;border:none;text-decoration:none;transition:all .2s;font-family:inherit} .btn-primary{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff} .btn-primary:hover{opacity:.9;box-shadow:0 0 20px rgba(45,163,242,.3)} .btn-secondary{background:transparent;color:var(--muted);border:1px solid var(--border)} .btn-secondary:hover{color:var(--text);border-color:var(--primary)} .btn-danger{background:rgba(239,68,68,.1);color:var(--red);border:1px solid rgba(239,68,68,.25)} .btn-danger:hover{background:rgba(239,68,68,.2)} .btn-success{background:rgba(34,197,94,.12);color:var(--green);border:1px solid rgba(34,197,94,.25)} .btn-success:hover{background:rgba(34,197,94,.22)} .btn-sm{padding:.3rem .7rem;font-size:.8rem} .btn-icon{width:34px;height:34px;padding:0;justify-content:center;border-radius:8px} /* Forms */ .form-group{margin-bottom:1.1rem} label{display:block;font-size:.78rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.4rem} input,select,textarea{background:var(--bg-input);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:.5rem .75rem;font-family:inherit;font-size:.875rem;width:100%;transition:border-color .2s,box-shadow .2s} input:focus,select:focus,textarea:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px rgba(45,163,242,.1)} input::placeholder,textarea::placeholder{color:var(--muted)} select option{background:var(--bg-card)} textarea{resize:vertical;min-height:140px;line-height:1.6} .input-group{display:flex;gap:.5rem;align-items:center} .input-prefix{background:var(--bg-card);border:1px solid var(--border);border-right:none;color:var(--muted);padding:.5rem .75rem;border-radius:8px 0 0 8px;font-size:.875rem;white-space:nowrap} .input-group input{border-radius:0 8px 8px 0} .form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem} .form-row-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1rem} .form-hint{font-size:.74rem;color:var(--muted);margin-top:.3rem} /* Product grid */ .products-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;margin-top:1rem} .product-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;overflow:hidden;text-decoration:none;color:inherit;display:flex;flex-direction:column;transition:border-color .2s,box-shadow .2s,transform .15s} .product-card:hover{border-color:rgba(45,163,242,.3);box-shadow:0 4px 24px rgba(45,163,242,.1);transform:translateY(-2px)} .product-thumb{width:100%;aspect-ratio:1;object-fit:cover;background:var(--bg);display:block} .product-thumb-placeholder{width:100%;aspect-ratio:1;background:var(--bg);display:flex;align-items:center;justify-content:center;color:var(--border);font-size:3rem} .product-body{padding:1rem;flex:1;display:flex;flex-direction:column;gap:.4rem} .product-title{font-weight:700;font-size:.95rem;color:var(--text)} .product-meta{display:flex;justify-content:space-between;align-items:center;margin-top:auto;padding-top:.5rem} .product-price{font-size:1rem;font-weight:800;color:var(--primary)} .product-sku{font-size:.72rem;color:var(--muted)} .product-cat{font-size:.72rem;color:var(--muted)} .product-actions{display:flex;gap:.4rem;padding:.75rem 1rem;border-top:1px solid var(--border);background:rgba(0,0,0,.15)} /* Media gallery */ .media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:.6rem;margin-top:.6rem} .media-item{position:relative;border-radius:8px;overflow:hidden;aspect-ratio:1;background:var(--bg);border:1px solid var(--border)} .media-item img,.media-item video{width:100%;height:100%;object-fit:cover} .media-item .del-btn{position:absolute;top:4px;right:4px;background:rgba(0,0,0,.7);color:#fff;border:none;border-radius:50%;width:22px;height:22px;font-size:.7rem;cursor:pointer;display:none;align-items:center;justify-content:center} .media-item:hover .del-btn{display:flex} .media-item .sort-handle{position:absolute;bottom:4px;left:4px;background:rgba(0,0,0,.7);color:#fff;border-radius:4px;padding:2px 5px;font-size:.65rem;cursor:grab} .media-item.video-item::after{content:'▶';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:1.5rem;color:#fff;pointer-events:none;text-shadow:0 0 8px rgba(0,0,0,.8)} .drop-zone{border:2px dashed var(--border);border-radius:10px;padding:2rem;text-align:center;color:var(--muted);cursor:pointer;transition:all .2s;position:relative} .drop-zone.drag-over{border-color:var(--primary);background:rgba(45,163,242,.05);color:var(--primary)} .drop-zone input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%} .preview-strip{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.6rem} .preview-item{width:72px;height:72px;border-radius:6px;overflow:hidden;border:1px solid var(--border);position:relative;flex-shrink:0} .preview-item img,.preview-item video{width:100%;height:100%;object-fit:cover} .preview-item .rm{position:absolute;top:-5px;right:-5px;background:var(--red);color:#fff;border:none;border-radius:50%;width:16px;height:16px;font-size:.6rem;cursor:pointer;display:flex;align-items:center;justify-content:center} /* Detail view */ .product-detail-grid{display:grid;grid-template-columns:1fr 340px;gap:1.5rem;align-items:start} .media-main img,.media-main video{width:100%;border-radius:10px;aspect-ratio:1;object-fit:cover} .media-thumbs{display:flex;gap:.5rem;margin-top:.6rem;flex-wrap:wrap} .media-thumb{width:64px;height:64px;border-radius:6px;overflow:hidden;border:2px solid transparent;cursor:pointer;flex-shrink:0} .media-thumb.active{border-color:var(--primary)} .media-thumb img,.media-thumb video{width:100%;height:100%;object-fit:cover} .product-info-card{display:flex;flex-direction:column;gap:1rem} .price-block{font-size:2rem;font-weight:800;color:var(--primary)} .shipping-block{font-size:.85rem;color:var(--muted)} .info-row{display:flex;justify-content:space-between;padding:.6rem 0;border-bottom:1px solid var(--border);font-size:.875rem} .info-row:last-child{border:none} .info-label{color:var(--muted);font-weight:600} .desc-block{white-space:pre-wrap;line-height:1.7;font-size:.9rem;color:var(--text)} /* Etsy panel */ .etsy-panel{background:linear-gradient(135deg,rgba(241,90,34,.05),rgba(241,90,34,.02));border:1px solid rgba(241,90,34,.2);border-radius:12px;padding:1.25rem} .etsy-logo{font-size:1.1rem;font-weight:800;color:#f15a22} .etsy-status-ok{color:var(--green);font-size:.85rem} .etsy-status-ko{color:var(--muted);font-size:.85rem} /* Filters */ .filters{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem;align-items:center} .filter-chip{padding:.3rem .75rem;border-radius:20px;font-size:.78rem;font-weight:600;cursor:pointer;border:1px solid var(--border);background:transparent;color:var(--muted);text-decoration:none;transition:all .2s} .filter-chip:hover,.filter-chip.active{background:rgba(45,163,242,.12);color:var(--primary);border-color:rgba(45,163,242,.3)} /* Table */ .table{width:100%;border-collapse:collapse} .table th{text-align:left;padding:.6rem .75rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border-bottom:1px solid var(--border)} .table td{padding:.75rem;border-bottom:1px solid rgba(48,54,61,.5);font-size:.875rem} .table tr:last-child td{border:none} .table tr:hover td{background:rgba(255,255,255,.02)} /* Utils */ .flex{display:flex}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem} .items-center{align-items:center}.justify-between{justify-content:space-between} .flex-wrap{flex-wrap:wrap}.flex-1{flex:1}.flex-col{flex-direction:column} .mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem} .mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem} .text-muted{color:var(--muted)}.text-sm{font-size:.875rem}.text-xs{font-size:.75rem} .font-bold{font-weight:700}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .empty-state{text-align:center;padding:4rem 2rem;color:var(--muted)} .empty-state i{font-size:3rem;opacity:.2;margin-bottom:1rem;display:block} .toast-wrap{position:fixed;bottom:1.5rem;right:1.5rem;z-index:9999;display:flex;flex-direction:column;gap:.5rem} .toast{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:.7rem 1rem;font-size:.875rem;min-width:200px;color:var(--text);box-shadow:var(--shadow);border-left:4px solid var(--primary);animation:slideIn .2s ease} .toast.error{border-left-color:var(--red)} @keyframes slideIn{from{opacity:0;transform:translateX(16px)}to{opacity:1;transform:none}} .sep{border:none;border-top:1px solid var(--border);margin:1.25rem 0} @media(max-width:768px){.sidebar{width:56px}.sidebar .sidebar-brand span,.sidebar .sidebar-section,.sidebar .sidebar-link span{display:none}.main{margin-left:56px;padding:1rem}.form-row,.form-row-3{grid-template-columns:1fr}.product-detail-grid{grid-template-columns:1fr}}