:root{--navy:#10263b;--blue:#1776d2;--blue2:#0e64b7;--bg:#f4f7fa;--panel:#fff;--line:#dce5ed;--text:#142231;--muted:#687786;--danger:#b42318;--green:#138a52;--shadow:0 12px 35px rgba(20,34,49,.08)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.topbar{display:flex;justify-content:space-between;gap:24px;align-items:center;padding:26px clamp(20px,4vw,64px);background:#fff;border-bottom:1px solid var(--line)}.topbar h1{margin:5px 0 2px;font-size:30px}.topbar p{margin:0;color:var(--muted)}.back{color:var(--blue);text-decoration:none;font-weight:700;font-size:14px}.brand{font-weight:900;letter-spacing:2px;color:var(--navy)}.shell{padding:26px clamp(16px,3vw,48px) 60px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow)}.manager-grid{display:grid;grid-template-columns:minmax(310px,390px) minmax(0,1fr);gap:24px;align-items:start}.uploader{padding:24px;position:sticky;top:18px}.library{padding:24px}.eyebrow{font-size:11px;letter-spacing:1.7px;color:var(--blue);font-weight:900}.panel h2{margin:5px 0 8px}.panel p{color:var(--muted);line-height:1.55}.hidden{display:none!important}label{display:grid;gap:6px;font-size:13px;font-weight:750;margin:14px 0}input,textarea,select{width:100%;border:1px solid #ccd7e1;border-radius:10px;padding:10px 12px;font:inherit;background:#fff;color:var(--text);outline:none}input:focus,textarea:focus,select:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(23,118,210,.12)}textarea{resize:vertical}.optional{font-weight:500;color:var(--muted)}.dropzone{border:2px dashed #b8c9d8;border-radius:14px;padding:22px;text-align:center;cursor:pointer;background:#f8fbfd}.dropzone strong,.dropzone span{display:block}.dropzone span{font-weight:500;color:var(--muted);margin-top:4px;font-size:12px}.dropzone input{margin-top:12px;border:0;padding:0}.checks{display:grid;gap:8px;margin:15px 0}.checks label{display:flex;align-items:center;gap:8px;margin:0;font-weight:650}.checks input{width:auto}.primary,.secondary,.danger{border-radius:10px;padding:10px 14px;font:inherit;font-weight:800;cursor:pointer;border:1px solid transparent}.primary{background:var(--blue);color:#fff}.primary:hover{background:var(--blue2)}.secondary{background:#fff;border-color:#c9d6e1;color:var(--text)}.danger{background:#fff0ef;border-color:#f2c7c3;color:var(--danger)}.full{width:100%}.msg{min-height:18px;margin-top:9px;font-size:12px;color:var(--muted)}.msg.ok{color:var(--green)}.msg.err{color:var(--danger)}.library-head{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:18px}.head-actions{display:flex;gap:8px;align-items:center}.head-actions select{min-width:170px;margin:0}.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(220px,1fr));gap:16px}.photo-card{overflow:hidden;border:1px solid var(--line);border-radius:14px;background:#fff}.image-wrap{height:190px;background:#e9eef3;position:relative}.preview{width:100%;height:100%;object-fit:cover;display:block}.live-badge{position:absolute;top:10px;left:10px;padding:5px 8px;border-radius:999px;font-size:10px;font-weight:900;background:#eef2f6;color:#647484}.live-badge.on{background:#e6f6ed;color:var(--green)}.card-body{padding:14px}.card-body label{margin:8px 0;font-size:11px}.card-body input,.card-body textarea,.card-body select{padding:8px 9px;font-size:12px}.compact{grid-template-columns:1fr 1fr;margin:10px 0}.card-actions{display:grid;grid-template-columns:auto auto 1fr 1fr;gap:6px;margin-top:11px}.card-actions button{padding:8px}.empty{text-align:center;padding:80px 20px;color:var(--muted)}.login-panel{max-width:430px;margin:60px auto;padding:28px}
@media(max-width:1200px){.photo-grid{grid-template-columns:repeat(2,minmax(220px,1fr))}}@media(max-width:850px){.topbar{align-items:flex-start}.brand{display:none}.manager-grid{grid-template-columns:1fr}.uploader{position:static}.library-head{align-items:flex-start;flex-direction:column}.head-actions{width:100%}.head-actions select{flex:1}.photo-grid{grid-template-columns:1fr}} 

/* Upload workspace: readable controls, selected-photo feedback and progress. */
.manager-grid{grid-template-columns:minmax(300px,380px) minmax(0,1fr)}
.photo-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}
.dropzone.drag-over{border-color:var(--blue);background:#e8f3ff}
.queue-panel{border-top:1px solid var(--line);padding-top:10px;margin-top:18px}
.queue-panel h3{font-size:14px;margin:0 0 10px}
.queue-item{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}
.queue-item img{width:52px;height:52px;object-fit:cover;border-radius:8px;flex-shrink:0}
.queue-info{flex:1;min-width:0;display:grid;gap:4px}
.queue-info strong{font-size:14px;overflow-wrap:anywhere}
.queue-info span,.queue-info small{font-size:12px;line-height:1.4;overflow-wrap:anywhere}
.queue-info small,.queue-status.failed{color:var(--danger)}
.queue-status.complete{color:var(--green)}
.queue-item button{font-size:12px;padding:8px}
progress{width:100%;height:12px;accent-color:var(--blue)}
button:disabled{opacity:.6;cursor:wait}
.uploader label,.card-body label{font-size:14px}
.card-body input,.card-body textarea,.card-body select,.msg{font-size:14px}
.head-actions{flex-wrap:wrap}.head-actions select{min-width:0}
@media(max-width:1000px){.manager-grid{grid-template-columns:1fr}.uploader{position:static}.library-head{align-items:flex-start;flex-wrap:wrap}}
@media(max-width:850px){.topbar{flex-direction:column;align-items:stretch}.gallery-top-actions{min-width:0;max-width:100%}.gallery-session-actions{min-width:0}}
html[data-theme="dark"] .queue-status.failed,html[data-theme="dark"] .queue-info small{color:#ff9ca6!important}
html[data-theme="dark"] .queue-status.complete{color:#73e0b0!important}
