:root{--ink:#152338;--muted:#687386;--line:#dce2ea;--bg:#f4f7fb;--panel:#fff;--brand:#154f7d;--brand2:#237b8e;--danger:#b42318;--shadow:0 12px 34px rgba(30,55,80,.08)}*{box-sizing:border-box}html{font-size:16px}body{margin:0;background:var(--bg);color:var(--ink);font-family:"Microsoft YaHei",system-ui,sans-serif;line-height:1.55}button,input{font:inherit}a{color:var(--brand)}.topbar{background:linear-gradient(115deg,#123451,#176072);color:#fff;padding:20px 0}.wrap{width:min(1120px,calc(100% - 32px));margin:auto}.brand{font-size:1.35rem;font-weight:800}.toprow{display:flex;align-items:center;justify-content:space-between;gap:16px}.nav{display:flex;align-items:center;gap:12px}.nav button{color:#fff;background:transparent;border:0;cursor:pointer}.main{padding:28px 0 60px}.grid{display:grid;grid-template-columns:1.2fr .8fr;gap:20px}.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:22px;box-shadow:var(--shadow);margin-bottom:20px}.card h1,.card h2{margin:0 0 16px;line-height:1.25}.card h1{font-size:1.55rem}.card h2{font-size:1.15rem}.muted{color:var(--muted)}.row{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.field{display:flex;flex-direction:column;gap:6px;flex:1;min-width:210px}.field+ .field{margin-top:14px}label{font-weight:700}input[type=text],input[type=password]{width:100%;min-height:44px;border:1px solid #bfc9d6;border-radius:9px;padding:9px 12px}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;border:0;border-radius:9px;padding:9px 16px;background:var(--brand);color:#fff;font-weight:700;text-decoration:none;cursor:pointer}.btn:disabled{opacity:.5}.btn.secondary{background:#e9f0f6;color:var(--ink)}.btn.danger{background:var(--danger)}.btn.small{min-height:36px;padding:6px 11px;font-size:.9rem}.notice{padding:12px 14px;border-radius:9px;margin:0 auto 16px;background:#e9f7f0;color:#0c5a38}.notice.error{background:#fff0ef;color:#8d1d15}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.stat{padding:16px;border-radius:11px;background:#eef4f8}.stat strong{display:block;font-size:1.45rem}.products{display:grid;gap:10px}.product{display:grid;grid-template-columns:1fr auto auto;gap:14px;align-items:center;border:1px solid var(--line);border-radius:10px;padding:14px;text-decoration:none;color:inherit}.dropzone{border:2px dashed #8ea9ba;border-radius:12px;padding:28px;text-align:center;background:#f8fbfd}.dropzone.drag{border-color:var(--brand2);background:#e9f7f8}.progress{height:10px;background:#e2e8ef;border-radius:99px;overflow:hidden;margin-top:12px}.progress>span{display:block;height:100%;width:0;background:var(--brand2)}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px}.image-card{border:1px solid var(--line);border-radius:11px;overflow:hidden;background:#fff}.image-card img{width:100%;aspect-ratio:1/1;object-fit:cover;background:#edf1f4;display:block}.image-meta{padding:10px}.actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:8px}.actions form{margin:0}.codebox{width:100%;min-height:180px;border:1px solid var(--line);border-radius:9px;padding:12px;font-family:Consolas,monospace;font-size:.85rem}.login{max-width:480px;margin:48px auto}.empty{text-align:center;padding:34px;color:var(--muted)}.file-preview{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:20px;text-align:left}.file-preview-card{min-width:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff;box-shadow:0 4px 12px rgba(30,55,80,.08);cursor:grab;transition:border-color .15s,transform .15s,opacity .15s}.file-preview-card:active{cursor:grabbing}.file-preview-card.dragging{opacity:.45}.file-preview-card.drag-target{border-color:var(--brand2);transform:translateY(-3px)}.file-preview-card img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:#edf1f4}.file-preview-meta{display:grid;grid-template-columns:auto minmax(0,1fr);gap:5px 8px;align-items:center;padding:9px}.file-preview-meta span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.85rem}.file-preview-actions{grid-column:1/-1;display:flex;gap:6px}.file-preview-actions button{min-width:36px;border:1px solid #c9d3de;border-radius:7px;padding:4px 8px;background:#edf3f7;color:var(--ink);cursor:pointer}.file-preview-actions button:disabled{opacity:.35;cursor:default}.file-preview-actions .remove{margin-left:auto;color:var(--danger);background:#fff3f2;border-color:#efc7c3}@media(max-width:760px){.grid{grid-template-columns:1fr}.stats{grid-template-columns:1fr}.product{grid-template-columns:1fr}.wrap{width:min(100% - 20px,1120px)}.card{padding:17px}.toprow{align-items:flex-start;flex-direction:column}.file-preview{grid-template-columns:repeat(2,minmax(0,1fr))}}

.bulk-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:14px;margin:18px 0}.bulk-select{display:flex;align-items:center;gap:7px}.bulk-toolbar [data-selected-count]{color:var(--muted)}.bulk-toolbar .btn{margin-left:auto}.product-row{display:flex;align-items:stretch;gap:10px}.product-row .product{flex:1;min-width:0}.product-check{display:flex;align-items:center;padding:0 8px;cursor:pointer}.product-check input,.bulk-select input{width:18px;height:18px;accent-color:var(--brand)}.product-row:has(input:checked) .product{border-color:var(--brand);background:#eef6fb}
