:root{
  --bg:#0d0d0f; --panel:#141418; --panel2:#1b1b21; --line:#26262e;
  --ink:#f4f3f0; --mute:#8d8a96; --faint:#5b5963; --accent:#e9e7e2;
  --radius:14px;
}
*{box-sizing:border-box;}
html,body{margin:0;height:100%;}
body{
  background:var(--bg); color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Inter,Helvetica,Arial,sans-serif;
  -webkit-font-smoothing:antialiased; overflow:hidden;
}
button{font:inherit;cursor:pointer;border:0;background:none;color:inherit;}

/* ---------- login ---------- */
#login{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--bg);z-index:50;}
#login .box{width:300px;text-align:center;}
#login h1{font-size:20px;letter-spacing:.5px;font-weight:600;margin:0 0 4px;}
#login p{color:var(--mute);font-size:13px;margin:0 0 22px;}
#login input{width:100%;padding:13px 14px;border-radius:10px;background:var(--panel);border:1px solid var(--line);color:var(--ink);font-size:15px;margin:0 0 10px;}
#login button{width:100%;padding:13px;border-radius:10px;background:var(--ink);color:#0d0d0f;font-weight:600;}
#login .err{color:#e0726a;font-size:12px;height:16px;margin-top:8px;}

/* ---------- layout ---------- */
.app{display:none;height:100%;grid-template-columns:230px 1fr 250px;}
.app.on{display:grid;}
aside{background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:18px 14px;gap:4px;overflow:hidden;}
.brand{font-size:15px;font-weight:700;letter-spacing:.4px;padding:4px 8px 16px;display:flex;align-items:center;gap:8px;}
.brand .dot{width:9px;height:9px;border-radius:50%;background:#e8d44d;box-shadow:0 0 10px #e8d44d99;}
.side-h{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--faint);padding:14px 8px 6px;}
.side-row{display:flex;justify-content:space-between;align-items:center;}
.addproj{width:18px;height:18px;border-radius:5px;color:var(--mute);font-size:15px;line-height:1;display:flex;align-items:center;justify-content:center;}
.addproj:hover{background:var(--panel2);color:var(--ink);}
.projects{max-height:30vh;overflow-y:auto;margin:0 -6px 2px;padding:0 6px;}
.projects::-webkit-scrollbar{width:6px;} .projects::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px;}
.proj-item{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:8px;cursor:pointer;font-size:13px;color:var(--mute);}
.proj-item:hover{background:var(--panel2);}
.proj-item.on{background:var(--panel2);color:var(--ink);font-weight:600;}
.proj-item svg{flex:none;opacity:.7;}
.hist{flex:1;overflow-y:auto;margin:0 -6px;padding:0 6px;}
.hist::-webkit-scrollbar{width:6px;} .hist::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px;}
.hist-item{display:flex;gap:9px;align-items:center;padding:6px;border-radius:9px;cursor:pointer;}
.hist-item:hover{background:var(--panel2);}
.hist-item img{width:34px;height:34px;border-radius:6px;object-fit:cover;flex:none;background:var(--panel2);}
.hist-item span{font-size:12px;color:var(--mute);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

.spend{border-top:1px solid var(--line);margin:6px -14px -18px;padding:14px 18px;background:var(--panel);}
.spend .row{display:flex;justify-content:space-between;align-items:baseline;}
.spend .big{font-size:18px;font-weight:600;}
.spend .lbl{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--faint);}
.spend .sub{font-size:11px;color:var(--mute);margin-top:3px;}

/* ---------- selectie-lichtbak (rechts) ---------- */
.tray{background:var(--panel);border-left:1px solid var(--line);display:flex;flex-direction:column;padding:18px 14px;overflow:hidden;}
.tray.drag{background:var(--panel2);box-shadow:inset 0 0 0 2px var(--mute);}
.tcount{background:var(--panel2);color:var(--ink);font-size:11px;font-weight:600;border-radius:10px;padding:1px 8px;}
.tray-grid{flex:1;overflow-y:auto;display:grid;grid-template-columns:1fr 1fr;gap:8px;align-content:start;margin:8px -6px 0;padding:0 6px;}
.tray-grid::-webkit-scrollbar{width:6px;} .tray-grid::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px;}
.tray-empty{grid-column:1/-1;color:var(--faint);font-size:12px;line-height:1.5;text-align:center;padding:30px 6px;border:1px dashed var(--line);border-radius:10px;}
.tcell{position:relative;aspect-ratio:1/1;border-radius:8px;overflow:hidden;border:1px solid var(--line);background:var(--panel2);}
.tcell img{width:100%;height:100%;object-fit:cover;cursor:pointer;}
.tcell .x{position:absolute;top:2px;right:3px;width:16px;height:16px;border-radius:50%;background:#000b;color:#fff;font-size:12px;line-height:14px;text-align:center;cursor:pointer;opacity:0;}
.tcell:hover .x{opacity:1;}
.tray-foot{display:flex;flex-direction:column;gap:7px;padding-top:12px;border-top:1px solid var(--line);margin-top:8px;}
.tray-foot button{padding:11px;border-radius:10px;background:var(--ink);color:#0d0d0f;font-size:13px;font-weight:600;}
.tray-foot button:disabled{opacity:.35;cursor:default;}
.tray-foot .ghost{background:var(--panel2);color:var(--mute);font-weight:500;border:1px solid var(--line);}
.tile[draggable]{cursor:grab;}
.tile.dragging{opacity:.5;}

/* ---------- main ---------- */
main{display:flex;flex-direction:column;min-width:0;position:relative;}
.feed{flex:1;overflow-y:auto;padding:26px 28px 140px;}
.feed::-webkit-scrollbar{width:9px;} .feed::-webkit-scrollbar-thumb{background:var(--line);border-radius:5px;}
.empty{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--faint);gap:10px;text-align:center;}
.empty svg{opacity:.5;}

.batch{margin:0 0 28px;}
.batch-h{display:flex;gap:10px;align-items:center;color:var(--mute);font-size:12px;margin:0 0 11px;}
.batch-h .m{color:var(--ink);font-weight:600;}
.grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));}
.tile{position:relative;aspect-ratio:1/1;border-radius:12px;overflow:hidden;background:var(--panel2);border:1px solid var(--line);}
.tile img,.tile video{width:100%;height:100%;object-fit:cover;display:block;}
.tile.load{display:flex;align-items:center;justify-content:center;}
.tile.load::after{content:"";width:26px;height:26px;border:2px solid var(--line);border-top-color:var(--mute);border-radius:50%;animation:spin .8s linear infinite;}
.tile.fail{display:flex;align-items:center;justify-content:center;color:#e0726a;font-size:12px;text-align:center;padding:10px;}
.tovl{position:absolute;top:7px;right:7px;display:flex;gap:5px;opacity:0;transition:opacity .12s;}
.tile:hover .tovl{opacity:1;}
.tovl button,.tovl a{width:29px;height:29px;border-radius:8px;background:#000a;color:#fff;display:flex;align-items:center;justify-content:center;font-size:15px;line-height:1;text-decoration:none;border:0;cursor:pointer;}
.tovl button:hover,.tovl a:hover{background:#000e;}
@keyframes spin{to{transform:rotate(360deg);}}

/* ---------- composer ---------- */
.composer{position:absolute;left:0;right:0;bottom:0;padding:16px 28px 22px;background:linear-gradient(to top,var(--bg) 60%,transparent);}
.cwrap{max-width:880px;margin:0 auto;}
.modelrow{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:0 0 10px;}
.models{display:flex;gap:6px;}
.gridtog{padding:7px 13px;border-radius:20px;font-size:13px;color:var(--mute);border:1px solid var(--line);background:var(--panel);flex:none;}
.gridtog.on{color:#0d0d0f;background:#e8d44d;border-color:#e8d44d;font-weight:600;}
.models button{padding:7px 13px;border-radius:20px;font-size:13px;color:var(--mute);border:1px solid var(--line);background:var(--panel);}
.models button.on{color:#0d0d0f;background:var(--ink);border-color:var(--ink);font-weight:600;}
.refs{display:flex;gap:8px;margin:0 0 8px;flex-wrap:wrap;}
.refs:empty{display:none;}
.ref{position:relative;width:52px;height:52px;border-radius:9px;overflow:hidden;border:1px solid var(--line);background:var(--panel2);flex:none;}
.ref img{width:100%;height:100%;object-fit:cover;}
.ref.up{display:flex;align-items:center;justify-content:center;}
.ref.up::after{content:"";width:16px;height:16px;border:2px solid var(--line);border-top-color:var(--mute);border-radius:50%;animation:spin .8s linear infinite;}
.ref .tag{position:absolute;left:3px;bottom:3px;background:#000a;color:#fff;font-size:10px;font-weight:600;padding:1px 5px;border-radius:5px;}
.ref .del{position:absolute;top:2px;right:3px;color:#fff;background:#000a;width:15px;height:15px;border-radius:50%;font-size:12px;line-height:13px;text-align:center;cursor:pointer;}
.bar{display:flex;align-items:flex-end;gap:8px;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:10px 10px 10px 12px;transition:border-color .15s;}
.bar.drag{border-color:var(--mute);background:var(--panel2);}
.clip{flex:none;width:38px;height:38px;border-radius:10px;color:var(--mute);display:flex;align-items:center;justify-content:center;}
.clip:hover{background:var(--panel2);color:var(--ink);}
.bar textarea{flex:1;background:none;border:0;color:var(--ink);font-size:15px;resize:none;outline:none;max-height:120px;line-height:1.5;padding:6px 0;font-family:inherit;}
.bar textarea::placeholder{color:var(--faint);}
.ctrl{display:flex;align-items:center;gap:7px;}
.ctrl select{background:var(--panel2);border:1px solid var(--line);color:var(--mute);border-radius:9px;padding:8px 8px;font-size:12px;outline:none;}
.go{width:42px;height:42px;border-radius:11px;background:var(--ink);color:#0d0d0f;display:flex;align-items:center;justify-content:center;flex:none;}
.go:disabled{opacity:.4;cursor:default;}
.hint{text-align:center;color:var(--faint);font-size:11px;margin-top:9px;}

/* ---------- detail-paneel ---------- */
#lb{position:fixed;inset:0;background:#000d;backdrop-filter:blur(8px);display:none;align-items:center;justify-content:center;z-index:60;padding:34px;}
#lb.on{display:flex;}
.lbgrid{display:grid;grid-template-columns:1fr 320px;gap:20px;max-width:1100px;max-height:88vh;width:100%;align-items:start;}
.lbmedia{display:flex;align-items:center;justify-content:center;max-height:88vh;}
.lbmedia img,.lbmedia video{max-width:100%;max-height:88vh;border-radius:12px;display:block;}
.lbinfo{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:20px;max-height:88vh;overflow-y:auto;}
.pinfo-h{font-size:15px;font-weight:600;margin:0 0 12px;}
.pprompt{font-size:13.5px;line-height:1.55;color:var(--ink);background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:12px;margin:0 0 16px;}
.pprompt .copy{display:block;margin-top:10px;font-size:11px;color:var(--mute);background:none;border:0;padding:0;cursor:pointer;text-decoration:underline;}
.prow{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid var(--line);font-size:12.5px;}
.prow .pk{color:var(--faint);} .prow .pv{color:var(--ink);}
.pacts{display:flex;flex-direction:column;gap:8px;margin-top:16px;}
.pacts a,.pacts button{padding:10px 14px;border-radius:10px;background:var(--panel2);border:1px solid var(--line);color:var(--ink);font-size:13px;text-decoration:none;text-align:center;cursor:pointer;}
.pacts a:hover,.pacts button:hover{background:#23232b;}
.pacts .danger{color:#e0726a;border-color:#5a2a2a;}
.pacts .danger:hover{background:#2a1818;}
.pcrop{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px;align-items:center;}
.pcrop .pk{color:var(--faint);font-size:12px;}
.pcrop a{padding:5px 9px;border-radius:7px;background:var(--panel2);border:1px solid var(--line);color:var(--ink);font-size:12px;text-decoration:none;}
#lb .x{position:fixed;top:20px;right:24px;font-size:26px;color:var(--mute);cursor:pointer;z-index:61;}
/* project trash */
.proj-item .pn{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.proj-item .ptrash{opacity:0;font-size:12px;flex:none;}
.proj-item:hover .ptrash{opacity:.6;}
.proj-item .ptrash:hover{opacity:1;}
