/* ============================================================
   HALriser - Adminbereich (Werkstatt-Terminal)
   Baut auf den Variablen und Komponenten aus style.css auf.
   ============================================================ */

body.admin{
  min-height:100vh;
  padding-bottom:60px;
}

/* Dezenter CRT-Rasterschleier ueber allem. */
.crt-grid{
  position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.5;
  background:
    repeating-linear-gradient(0deg, rgba(77,255,138,.035) 0 1px, transparent 1px 3px),
    radial-gradient(1200px 700px at 50% -10%, rgba(58,111,224,.10), transparent 60%);
  mix-blend-mode:screen;
}
body.admin > *{position:relative;z-index:1}

/* ---------- Terminal-Login (Direktaufruf /admin) ---------- */
.term-login{
  min-height:100vh;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:18px;padding:40px 20px;
}
.term-login-frame{
  position:relative;width:min(440px,100%);
  background:linear-gradient(180deg, rgba(12,26,16,.92), rgba(10,12,10,.96));
  border:1px solid var(--pipdim);
  box-shadow:0 0 40px rgba(77,255,138,.12), inset 0 0 60px rgba(0,0,0,.6);
  overflow:hidden;
}
/* Wandernder Scan-Strahl. */
.term-login-frame .scanbar{
  position:absolute;left:0;right:0;top:0;height:2px;z-index:3;
  background:linear-gradient(90deg,transparent,rgba(77,255,138,.8),transparent);
  box-shadow:0 0 14px rgba(77,255,138,.7);
  animation:scanmove 4.2s linear infinite;
}
@keyframes scanmove{0%{top:-2%}100%{top:102%}}
/* Ecken-Winkel wie ein Zielsucher. */
.term-login-frame .corner{position:absolute;width:16px;height:16px;border:2px solid var(--pip);opacity:.7}
.corner.tl{top:6px;left:6px;border-right:0;border-bottom:0}
.corner.tr{top:6px;right:6px;border-left:0;border-bottom:0}
.corner.bl{bottom:6px;left:6px;border-right:0;border-top:0}
.corner.br{bottom:6px;right:6px;border-left:0;border-top:0}

.term-login-head{
  display:flex;align-items:center;gap:8px;
  padding:11px 16px;background:#0c1a10;border-bottom:1px solid var(--pipdim);
  font-family:var(--mono);font-size:11px;letter-spacing:1px;color:var(--pip);
}
.term-login-head .dot{width:9px;height:9px;border-radius:50%;background:var(--pipdim)}
.term-login-head .dot.r{background:var(--blood)} .term-login-head .dot.y{background:var(--gold)} .term-login-head .dot.g{background:var(--pip)}
.term-login-title{margin-left:6px}
.term-login-body{padding:22px 22px 24px}
.tl-line{font-family:var(--mono);font-size:13px;color:var(--pip);text-shadow:0 0 6px rgba(77,255,138,.4);margin-bottom:6px}
.tl-line.dim{color:var(--pipdim);text-shadow:none}
.tl-line.foot{margin-top:18px;font-size:11px;opacity:.7}
.tl-form{margin-top:16px}
.term-login-body .field input{background:#0b120d}
.tl-back a{font-family:var(--mono);font-size:12px;color:var(--muted)}
.tl-back a:hover{color:var(--pip)}
.term-login-body code{
  display:inline-block;margin-top:6px;font-family:var(--mono);font-size:12px;
  color:var(--gold);background:rgba(0,0,0,.4);padding:2px 6px;border:1px solid var(--edge);
}

/* ---------- Kopfleiste ---------- */
.admin-bar{
  display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  padding:14px 24px;background:rgba(15,13,10,.9);border-bottom:1px solid var(--edge);
  position:sticky;top:0;z-index:20;backdrop-filter:blur(8px);
}
.admin-brand{display:flex;align-items:center;gap:12px}
.ab-back{font-family:var(--disp);font-size:22px;color:var(--pip);padding:0 6px;line-height:1}
.ab-back:hover{text-shadow:0 0 12px rgba(77,255,138,.6)}
.ab-name{display:flex;flex-direction:column;line-height:1}
.ab-name b{font-family:var(--disp);font-size:14px;letter-spacing:1px;color:#f2ead5}
.ab-name .hal{color:var(--blood)}
.ab-name .tag{font-family:var(--mono);font-size:9px;color:var(--pip);letter-spacing:2px;margin-top:5px}
.admin-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.admin-user{font-family:var(--mono);font-size:12px;letter-spacing:1px;color:var(--gold)}
.inline-form{display:inline}
.admin-actions .btn{padding:10px 16px;font-size:12px}

/* ---------- Inhalt ---------- */
.admin-wrap{max-width:1080px;margin:0 auto;padding:30px 24px 60px}
.admin-wrap .sec-head{flex-wrap:wrap}
.admin-wrap .sec-head h1{font-family:var(--head);font-weight:700;font-size:clamp(24px,4vw,38px);color:#f0e8d3;letter-spacing:1px}
.new-btn{margin-left:auto}
.admin-hint{font-family:var(--mono);font-size:13px;color:var(--muted);margin:-8px 0 22px}

/* Leerer Zustand */
.empty-forge{
  border:1px dashed var(--edge);padding:50px 20px;text-align:center;
  background:repeating-linear-gradient(45deg, rgba(255,138,61,.03) 0 10px, transparent 10px 20px);
}
.empty-forge p{font-family:var(--disp);letter-spacing:3px;color:var(--ember);margin-top:18px;font-size:14px}
.ef-cube{
  width:46px;height:46px;margin:0 auto;border:2px solid var(--ember);
  transform:rotate(45deg);box-shadow:0 0 20px rgba(255,138,61,.4);
  animation:efspin 6s linear infinite;
}
@keyframes efspin{to{transform:rotate(405deg)}}

/* ---------- Projektliste ---------- */
.proj-list{display:flex;flex-direction:column;gap:14px}
.proj-row{
  display:flex;gap:18px;align-items:center;
  background:var(--panel);border:1px solid var(--edge);padding:14px;
  transition:.15s;
}
.proj-row:hover{border-color:var(--pipdim);box-shadow:0 0 22px rgba(0,0,0,.4)}
.proj-row.unpub{opacity:.72}
.pr-thumb{
  position:relative;width:96px;height:96px;flex:none;
  background:#0c0a07;border:1px solid var(--edge);overflow:hidden;
  display:flex;align-items:center;justify-content:center;
}
.pr-thumb img{width:100%;height:100%;object-fit:cover}
.pr-noimg{font-size:34px;color:var(--edge)}
.pr-imgcount{
  position:absolute;bottom:4px;right:4px;font-family:var(--mono);font-size:10px;
  color:var(--pip);background:rgba(0,0,0,.7);padding:1px 5px;border:1px solid rgba(77,255,138,.35);
}
.pr-main{flex:1;min-width:0}
.pr-titles{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.pr-titles h2{font-family:var(--head);font-size:19px;color:#f0e8d3;font-weight:700}
.pr-sub{font-family:var(--mono);font-size:12px;color:var(--muted)}
.pr-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.pr-chip{
  font-family:var(--mono);font-size:11px;letter-spacing:.5px;color:var(--txt);
  border:1px solid var(--edge);padding:3px 8px;background:rgba(0,0,0,.25);
}
.pr-state{font-family:var(--mono);font-size:11px;letter-spacing:1px;padding:3px 8px;border:1px solid}
.pr-state.on{color:var(--pip);border-color:var(--pipdim);background:rgba(77,255,138,.07)}
.pr-state.off{color:var(--muted);border-color:var(--edge)}
.pr-ops{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.pr-sort{display:flex;flex-direction:column;gap:4px}
.icon-btn{
  width:30px;height:22px;font-size:11px;line-height:1;cursor:pointer;
  background:var(--panel2);border:1px solid var(--edge);color:var(--pip);transition:.12s;
}
.icon-btn:hover:not(:disabled){border-color:var(--pip);box-shadow:0 0 10px rgba(77,255,138,.25)}
.icon-btn:disabled{opacity:.3;cursor:not-allowed}
.pr-ops .btn{padding:9px 14px;font-size:12px}
.btn.danger{border-color:#7a2b2b;color:#ff9a9a}
.btn.danger:hover{border-color:var(--blood);box-shadow:0 0 18px rgba(232,58,58,.35),3px 3px 0 rgba(0,0,0,.5)}

/* ---------- Editor ---------- */
.editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px}
.panel-label{
  font-family:var(--mono);font-size:11px;letter-spacing:2px;color:var(--voxel);
  text-transform:uppercase;margin:6px 0 14px;padding-bottom:8px;border-bottom:1px solid var(--edge);
  display:flex;justify-content:space-between;align-items:baseline;gap:8px;
}
.ed-col .panel-label:not(:first-child){margin-top:26px}
.pl-note{color:var(--muted);letter-spacing:1px;font-size:10px}
.spec-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.switch-field{display:flex;align-items:center;gap:10px;margin-top:4px}
.switch-field input{width:18px;height:18px;accent-color:var(--pip);cursor:pointer;flex:none}
.switch-field label{margin:0;font-family:var(--head);font-size:14px;color:var(--txt);text-transform:none;letter-spacing:0}

/* Bildraster */
.img-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:12px;margin-top:6px}
.img-card{position:relative;border:1px solid var(--edge);background:#0c0a07;overflow:hidden}
.img-card img{display:block;width:100%;height:100px;object-fit:cover}
.img-card.marked{outline:2px solid var(--blood);opacity:.5}
.img-ops{display:flex;justify-content:space-between;gap:2px;padding:5px 6px;background:rgba(0,0,0,.55);font-family:var(--mono);font-size:10px}
.img-cover,.img-del{display:flex;align-items:center;gap:4px;cursor:pointer;color:var(--muted)}
.img-cover input,.img-del input{width:13px;height:13px;cursor:pointer}
.img-cover input{accent-color:var(--gold)} .img-del input{accent-color:var(--blood)}
.img-cover input:checked ~ span{color:var(--gold)}
.img-del input:checked ~ span{color:var(--blood)}
.preview .img-card{border-style:dashed;border-color:var(--pipdim)}
.upload-field input[type=file]{
  font-family:var(--mono);font-size:12px;color:var(--txt);width:100%;
  padding:10px;background:#0b120d;border:1px solid var(--edge);cursor:pointer;
}
.upload-field input[type=file]::file-selector-button{
  font-family:var(--disp);font-size:11px;letter-spacing:1px;text-transform:uppercase;
  margin-right:12px;padding:7px 12px;cursor:pointer;
  background:var(--panel2);border:1px solid var(--pipdim);color:var(--pip);
}
.upload-hint{font-family:var(--mono);font-size:11px;color:var(--muted);margin-top:8px}

.editor-actions{display:flex;gap:14px;justify-content:flex-end;margin-top:30px;flex-wrap:wrap}

/* ---------- Kino-Bootsequenz nach dem Login ---------- */
.boot-seq{
  position:fixed;inset:0;z-index:9999;background:#04070a;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  overflow:hidden;animation:bootfade .5s ease 3.4s forwards;
}
.boot-crt{
  position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(120% 120% at 50% 50%, transparent 55%, rgba(0,0,0,.85) 100%);
}
.boot-scan{
  position:absolute;inset:0;pointer-events:none;opacity:.5;
  background:repeating-linear-gradient(0deg, rgba(77,255,138,.06) 0 1px, transparent 1px 3px);
  animation:bootroll 6s linear infinite;
}
@keyframes bootroll{to{background-position:0 60px}}
.boot-log{
  font-family:var(--mono);font-size:14px;line-height:1.7;color:var(--pip);
  text-shadow:0 0 8px rgba(77,255,138,.5);width:min(680px,90vw);min-height:230px;
  white-space:pre-wrap;position:relative;z-index:2;
}
.boot-granted{
  position:relative;z-index:2;display:flex;align-items:center;gap:16px;margin-top:10px;
  opacity:0;transform:scale(.9);
}
.boot-granted.show{animation:grantpop .6s cubic-bezier(.2,1.4,.4,1) forwards}
.bg-line{height:2px;width:70px;background:linear-gradient(90deg,transparent,var(--gold));box-shadow:0 0 12px var(--gold)}
.bg-line:last-child{background:linear-gradient(90deg,var(--gold),transparent)}
.bg-text{font-family:var(--disp);font-weight:900;letter-spacing:4px;font-size:clamp(20px,4vw,34px);color:var(--gold);text-shadow:0 0 28px rgba(255,194,74,.7)}
@keyframes grantpop{to{opacity:1;transform:scale(1)}}
@keyframes bootfade{to{opacity:0;visibility:hidden}}

/* ---------- Responsiv ---------- */
@media(max-width:760px){
  .editor-grid{grid-template-columns:1fr}
  .proj-row{flex-wrap:wrap}
  .pr-main{flex:1 1 55%}
  .pr-ops{width:100%;justify-content:flex-start}
  .new-btn{margin-left:0;width:100%;text-align:center}
}
@media(max-width:440px){
  .spec-grid{grid-template-columns:1fr}
  .admin-bar{padding:12px 16px}
  .admin-wrap{padding:22px 16px 50px}
}

/* Reduced motion: keine wandernden Effekte. */
@media(prefers-reduced-motion:reduce){
  .scanbar,.ef-cube,.boot-scan{animation:none}
  .boot-seq{animation:bootfade .3s ease 3.4s forwards}
}
