:root{
  --bg:#060912; --glass:rgba(10,16,32,.62); --glass2:rgba(18,28,54,.72); --line:rgba(140,170,255,.14);
  --txt:#e8eeff; --muted:#93a1c4; --acc:#4f8cff; --acc2:#7fb2ff; --accGlow:rgba(79,140,255,.45);
  --ok:#3ddc97; --bad:#ff5d73; --warn:#ffc35d; --r:16px;
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--txt);font:15px/1.45 Sora,system-ui,sans-serif;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
.hidden{display:none!important}
.muted{color:var(--muted)} .tiny{font-size:12px} .err{color:var(--bad);min-height:1.2em;margin:.6em 0 0;font-size:13px}

#bgVideo{position:fixed;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;opacity:.75}
#bgShade{position:fixed;inset:0;z-index:-1;background:
  radial-gradient(1200px 600px at 15% -10%,rgba(79,140,255,.22),transparent 60%),
  linear-gradient(180deg,rgba(4,7,15,.15),rgba(4,7,15,.6))}
body.unlocked #bgVideo{opacity:.55;filter:blur(1px)}

.glass{background:var(--glass);border:1px solid var(--line);backdrop-filter:blur(18px) saturate(1.3);-webkit-backdrop-filter:blur(18px) saturate(1.3);border-radius:var(--r)}

/* Buttons + Inputs */
.btn{display:inline-flex;align-items:center;gap:.4em;border:1px solid var(--line);background:rgba(255,255,255,.05);padding:.55em .95em;border-radius:12px;cursor:pointer;transition:.15s;white-space:nowrap}
.btn:hover{background:rgba(255,255,255,.1);transform:translateY(-1px)}
.btn:active{transform:none}
.btn.primary{background:linear-gradient(135deg,#3d7bff,#6a5cff);border-color:transparent;box-shadow:0 6px 22px var(--accGlow);font-weight:600}
.btn.primary:hover{filter:brightness(1.12)}
.btn.danger{color:var(--bad);border-color:rgba(255,93,115,.35)}
.btn.icon{padding:.55em .7em}
.btn.big{width:100%;justify-content:center;padding:.85em;font-size:16px;margin-top:6px}
.btn:disabled{opacity:.5;cursor:default;transform:none}
.inp{width:100%;background:rgba(0,0,0,.35);border:1px solid var(--line);border-radius:12px;padding:.7em .9em;outline:none;transition:.15s}
.inp:focus{border-color:var(--acc);box-shadow:0 0 0 3px rgba(79,140,255,.2)}
textarea.inp{min-height:90px;resize:vertical}
select.inp{appearance:none;cursor:pointer}
select.inp option{background:#101830}

/* Sperrbildschirm */
.screen{min-height:100%}
#lock{display:grid;place-items:center;padding:24px 16px}
.lockcard{width:min(400px,100%);padding:30px 26px 22px;text-align:center;display:flex;flex-direction:column;gap:12px;box-shadow:0 30px 80px rgba(0,0,0,.5)}
.lockLogo{height:64px;margin:0 auto;filter:drop-shadow(0 0 18px var(--accGlow))}
#clock{font-family:Orbitron,monospace;font-weight:800;font-size:46px;letter-spacing:2px;text-shadow:0 0 24px var(--accGlow)}
.lockcard h1{margin:0;font-size:22px;font-weight:600}
.lockcard p{margin:0}
.pwwrap{position:relative}
.pwwrap .inp{padding-right:44px}
.eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:0;cursor:pointer;opacity:.7;font-size:16px;padding:6px}
.meter{height:5px;border-radius:5px;background:rgba(255,255,255,.08);overflow:hidden;margin-top:10px}
.meter i{display:block;height:100%;width:0;transition:.25s;background:var(--bad)}
#setupRows .inp{margin-top:0}
#setupRows{display:flex;flex-direction:column;gap:4px}
.shake{animation:shake .4s}
@keyframes shake{20%,60%{transform:translateX(-8px)}40%,80%{transform:translateX(8px)}}

/* App */
.top{position:sticky;top:10px;z-index:10;margin:10px;display:flex;align-items:center;gap:14px;padding:10px 12px}
.brand{display:flex;align-items:center;gap:10px;font-family:Orbitron;font-weight:800;letter-spacing:1px}
.brand img{height:34px;filter:drop-shadow(0 0 10px var(--accGlow))}
.search{flex:1;display:flex;align-items:center;gap:8px;background:rgba(0,0,0,.3);border:1px solid var(--line);border-radius:12px;padding:0 12px;max-width:520px}
.search svg{width:18px;height:18px;fill:none;stroke:var(--muted);stroke-width:2;flex:none}
.search input{flex:1;border:0;background:none;outline:none;padding:.6em 0;min-width:0}
.actions{display:flex;gap:8px;margin-left:auto}
.dd{position:relative}
.menu{position:absolute;right:0;top:calc(100% + 8px);min-width:220px;padding:6px;z-index:20;background:var(--glass2)}
.menu button{display:flex;width:100%;gap:10px;align-items:center;background:none;border:0;padding:.6em .8em;border-radius:10px;cursor:pointer;text-align:left}
.menu button:hover{background:rgba(255,255,255,.08)}
.menu hr{border:0;border-top:1px solid var(--line);margin:4px 0}

.layout{display:grid;grid-template-columns:220px 1fr;gap:12px;padding:0 10px 30px}
#cats{align-self:start;position:sticky;top:84px;padding:8px;display:flex;flex-direction:column;gap:2px}
#cats button{display:flex;align-items:center;justify-content:space-between;gap:8px;background:none;border:0;padding:.55em .8em;border-radius:10px;cursor:pointer;text-align:left}
#cats button:hover{background:rgba(255,255,255,.06)}
#cats button.on{background:linear-gradient(90deg,rgba(79,140,255,.28),rgba(79,140,255,.06));color:#fff}
#cats .n{font-size:12px;color:var(--muted);background:rgba(255,255,255,.06);padding:1px 8px;border-radius:20px}
#cats .sep{height:1px;background:var(--line);margin:6px 4px}

#list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;align-content:start}
.card{display:flex;align-items:center;gap:12px;padding:14px;cursor:pointer;transition:.18s;position:relative}
.card:hover{transform:translateY(-2px);border-color:rgba(127,178,255,.4);box-shadow:0 10px 30px rgba(0,0,0,.35)}
.card.sel{border-color:var(--acc);box-shadow:0 0 0 1px var(--acc),0 10px 30px rgba(0,0,0,.35)}
.av{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;font-weight:700;font-size:18px;flex:none;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.4)}
.card .meta{min-width:0;flex:1}
.card .t{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card .s{font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card .qa{display:flex;gap:4px;opacity:0;transition:.15s}
.card:hover .qa{opacity:1}
.qa button{background:rgba(255,255,255,.07);border:0;border-radius:9px;padding:6px 8px;cursor:pointer;font-size:13px}
.qa button:hover{background:rgba(79,140,255,.35)}
.star{position:absolute;top:6px;right:9px;font-size:12px;color:var(--warn)}
.empty{grid-column:1/-1;text-align:center;padding:60px 20px}
.empty .big{font-size:48px}
.empty h2{margin:.3em 0;font-weight:600}

#dropHint{position:fixed;inset:0;z-index:50;display:grid;place-items:center;background:rgba(10,20,50,.55);backdrop-filter:blur(6px)}
#dropHint div{border:2px dashed var(--acc2);border-radius:24px;padding:50px 70px;font-size:22px;font-weight:600}

/* Detail-Panel */
.drawer{position:fixed;top:10px;right:10px;bottom:10px;width:min(440px,calc(100% - 20px));z-index:30;display:flex;flex-direction:column;overflow:hidden;background:var(--glass2);animation:slide .22s ease-out;box-shadow:-20px 0 60px rgba(0,0,0,.45)}
@keyframes slide{from{transform:translateX(30px);opacity:0}}
.dhead{display:flex;align-items:center;gap:12px;padding:18px;border-bottom:1px solid var(--line)}
.dhead .av{width:50px;height:50px;font-size:22px}
.dhead h2{margin:0;font-size:19px;word-break:break-word}
.dhead .x{margin-left:auto}
.dbody{flex:1;overflow:auto;padding:14px 18px;display:flex;flex-direction:column;gap:10px}
.frow{background:rgba(0,0,0,.25);border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.frow .fl{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px}
.frow .fv{display:flex;align-items:center;gap:8px;margin-top:2px}
.frow .fv span{flex:1;word-break:break-all;font-family:ui-monospace,Consolas,monospace;font-size:14.5px}
.frow .fv span.note{white-space:pre-wrap;font-family:inherit;word-break:break-word}
.frow .fv button,.frow .fv a{background:rgba(255,255,255,.07);border:0;border-radius:9px;padding:5px 9px;cursor:pointer;font-size:13px;text-decoration:none;color:inherit}
.frow .fv button:hover,.frow .fv a:hover{background:rgba(79,140,255,.35)}
.dfoot{display:flex;gap:8px;padding:14px 18px;border-top:1px solid var(--line)}
.chip{display:inline-block;font-size:12px;padding:2px 10px;border-radius:20px;background:rgba(79,140,255,.18);color:var(--acc2)}

/* Modal */
#modalBack{position:fixed;inset:0;z-index:40;background:rgba(2,4,10,.6);display:grid;place-items:center;padding:16px;backdrop-filter:blur(4px)}
#modal{width:min(640px,100%);max-height:calc(100vh - 32px);overflow:auto;padding:22px;background:var(--glass2);animation:pop .18s ease-out}
@keyframes pop{from{transform:scale(.96);opacity:0}}
#modal h2{margin:0 0 14px;font-size:20px;display:flex;align-items:center;gap:10px}
.grid2{display:grid;grid-template-columns:1fr 170px;gap:10px}
.lab{font-size:12px;color:var(--muted);margin:10px 0 4px;display:block}
.fedit{display:grid;grid-template-columns:22px 1fr 120px auto;gap:6px;align-items:center;background:rgba(0,0,0,.2);border:1px solid var(--line);border-radius:12px;padding:8px;margin-bottom:8px}
.fedit .val{grid-column:2/-1;display:flex;gap:6px}
.fedit .val .inp{flex:1}
.fedit .mv{display:flex;flex-direction:column;gap:2px;grid-row:span 2}
.fedit .mv button,.mini{background:rgba(255,255,255,.06);border:0;border-radius:7px;cursor:pointer;padding:3px 6px;font-size:12px}
.mini:hover{background:rgba(79,140,255,.35)}
.fedit .lbl{font-size:13px;padding:.5em .7em}
.fedit select{padding:.5em .6em;font-size:13px}
.addrow{display:flex;gap:6px;flex-wrap:wrap;margin:4px 0 6px}
.addrow .mini{padding:6px 10px;font-size:13px}
.mfoot{display:flex;gap:8px;justify-content:flex-end;margin-top:18px;flex-wrap:wrap}
.mfoot .left{margin-right:auto}
.aiBadge{font-size:12px;padding:3px 10px;border-radius:20px;background:linear-gradient(135deg,rgba(61,123,255,.35),rgba(140,92,255,.35));color:#dfe6ff}

/* Scan */
.drop{border:2px dashed rgba(127,178,255,.4);border-radius:16px;padding:30px 16px;text-align:center;cursor:pointer;transition:.15s;background:rgba(0,0,0,.2)}
.drop:hover,.drop.over{border-color:var(--acc2);background:rgba(79,140,255,.1)}
.drop .big{font-size:40px}
.drop img{max-width:100%;max-height:300px;border-radius:10px;display:block;margin:0 auto}
.scanning{position:relative;overflow:hidden}
.scanning::after{content:"";position:absolute;left:0;right:0;height:60px;top:-60px;background:linear-gradient(180deg,transparent,rgba(79,140,255,.45),transparent);animation:scan 1.4s linear infinite}
@keyframes scan{to{top:100%}}
.found{display:flex;align-items:center;gap:10px;padding:10px;border-radius:12px;background:rgba(0,0,0,.25);border:1px solid var(--line);margin-bottom:8px}
.found .meta{flex:1;min-width:0}
.found input[type=checkbox]{width:18px;height:18px;accent-color:var(--acc)}

/* Toasts */
#toasts{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);z-index:60;display:flex;flex-direction:column;gap:8px;align-items:center}
.toast{background:rgba(14,22,44,.95);border:1px solid var(--line);padding:.6em 1.1em;border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.5);animation:pop .2s}
.toast.bad{border-color:rgba(255,93,115,.5)}

.set{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
.set:last-child{border:0}
.set b{display:block;font-weight:600}

@media (max-width:820px){
  .layout{grid-template-columns:1fr}
  #cats{position:static;flex-direction:row;overflow-x:auto;padding:6px;scrollbar-width:none}
  #cats button{flex:none}
  #cats .sep{display:none}
  .lbl{display:none}
  .top{flex-wrap:wrap;top:0;margin:0 0 10px;border-radius:0 0 var(--r) var(--r)}
  .brand span{display:none}
  .search{order:3;flex-basis:100%;max-width:none}
  .card .qa{opacity:1}
  .grid2{grid-template-columns:1fr}
  .fedit{grid-template-columns:22px 1fr 100px auto}
  .drawer{top:0;right:0;bottom:0;width:100%;border-radius:0}
}
