/* ===========================================================================
   Aerie — shared stylesheet. OrbitUI: dark space, amber-gold, glass, static orbit.
   =========================================================================== */
@import url('https://fonts.googleapis.com/css2?family=Sora:wght@500;600;700;800&family=Inter:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap');

:root{
  --accent:#F5A623; --accent-hi:#FFC94D; --danger:#FF5C5C; --danger-hi:#ff8080;
  --clean:#3DDC97; --warn:#FFB020; --info:#7aa2ff; --violet:#c58cff;
  --bg:#05070d; --bg-2:#0a0e16; --panel:rgba(255,255,255,.035);
  --panel-2:rgba(255,255,255,.055); --line:rgba(255,255,255,.09);
  --ink:#e8edf5; --dim:#8ea0b5; --dim-2:#5f6d80;
  --r:14px;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:var(--bg); color:var(--ink); min-height:100vh;
  font-family:'Inter',system-ui,sans-serif; overflow-x:hidden; position:relative;
}
a{color:inherit;}
button{font-family:inherit;}
.mono{font-family:'IBM Plex Mono',monospace;}
.mono-sm{font-family:'IBM Plex Mono',monospace;font-size:11px;}
.dim{color:var(--dim);}

/* ambient background */
.starfield{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.5;
  background-image:radial-gradient(1px 1px at 20% 30%,#fff6 0,transparent 40%),
    radial-gradient(1px 1px at 70% 60%,#fff5 0,transparent 40%),
    radial-gradient(1px 1px at 40% 80%,#fff4 0,transparent 40%),
    radial-gradient(1.5px 1.5px at 85% 20%,#fff7 0,transparent 40%),
    radial-gradient(1px 1px at 55% 15%,#fff5 0,transparent 40%);}
.glow{position:fixed;border-radius:50%;filter:blur(90px);z-index:0;pointer-events:none;}
.glow-a{width:520px;height:520px;top:-120px;right:-80px;background:radial-gradient(circle,#F5A62322,transparent 70%);}
.glow-b{width:480px;height:480px;bottom:-140px;left:-100px;background:radial-gradient(circle,#3a6bff18,transparent 70%);}

/* ---------------------------------- chrome -------------------------------- */
.topbar{position:relative;z-index:5;display:flex;align-items:center;justify-content:space-between;
  padding:16px 26px;border-bottom:1px solid var(--line);gap:16px;}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink);}
.hawk{filter:drop-shadow(0 0 8px #F5A62355);flex:none;}
.brand-name{font-family:'Sora';font-weight:800;letter-spacing:.28em;font-size:16px;}
.brand-sub{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim);}
.usermenu{display:flex;align-items:center;gap:12px;}
.role-pill{font-size:10px;text-transform:uppercase;letter-spacing:.1em;padding:3px 9px;border-radius:999px;
  border:1px solid var(--line);color:var(--accent-hi);background:#F5A62312;}
.role-pill.admin{color:#ffd27a;border-color:#F5A62355;}
.uname{font-size:13px;color:var(--ink);}
.linkbtn{background:none;border:0;color:var(--dim);cursor:pointer;font-size:12.5px;padding:6px 8px;border-radius:8px;}
.linkbtn:hover{color:var(--accent-hi);}

.rail{position:relative;z-index:4;display:flex;gap:4px;padding:10px 18px;border-bottom:1px solid var(--line);
  overflow-x:auto;align-items:center;}
.rail a{display:flex;align-items:center;gap:8px;padding:9px 13px;border-radius:10px;text-decoration:none;
  color:var(--dim);font-size:13px;border:1px solid transparent;white-space:nowrap;transition:.15s;}
.rail a:hover{color:var(--ink);background:var(--panel);}
.rail a.active{color:var(--accent-hi);background:#F5A62312;border-color:#F5A62344;}
.rail .sep{flex:1;}

/* --------------------------------- layout --------------------------------- */
.wrap{position:relative;z-index:2;max-width:1180px;margin:0 auto;padding:28px 24px 80px;}
.phead{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap;}
.phead-l{display:flex;gap:14px;align-items:center;}
.phead-icon{width:44px;height:44px;border-radius:13px;display:grid;place-items:center;color:var(--accent-hi);
  background:#F5A62314;border:1px solid #F5A62333;flex:none;}
.phead h1{font-family:'Sora';font-weight:700;font-size:22px;margin:0;}
.phead p{margin:3px 0 0;color:var(--dim);font-size:12.5px;}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:7px;padding:9px 15px;border-radius:10px;font-size:13px;
  background:var(--panel);border:1px solid var(--line);color:var(--ink);cursor:pointer;transition:.15s;white-space:nowrap;text-decoration:none;}
.btn:hover{border-color:#F5A62366;color:var(--accent-hi);}
.btn:disabled{opacity:.5;cursor:default;}
.btn-accent{background:#F5A6231c;border-color:#F5A62355;color:var(--accent-hi);}
.btn-accent:hover{background:#F5A6232e;}
.btn-danger{background:#FF5C5C18;border-color:#FF5C5C44;color:var(--danger-hi);}
.btn-sm{padding:6px 11px;font-size:12px;border-radius:8px;}

/* inputs */
input,select,textarea{font-family:inherit;}
.field{width:100%;padding:12px 14px;border-radius:11px;background:var(--panel);border:1px solid var(--line);
  color:var(--ink);font-size:14px;outline:none;transition:.15s;}
.field:focus{border-color:#F5A62366;background:var(--panel-2);}
.field.mono{font-family:'IBM Plex Mono',monospace;}
.row{display:flex;gap:10px;align-items:center;}

/* chips + badges */
.chips{display:flex;gap:8px;flex-wrap:wrap;}
.chip{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:999px;font-size:12px;
  background:var(--panel);border:1px solid var(--line);color:var(--dim);cursor:pointer;transition:.15s;text-transform:capitalize;}
.chip:hover{color:var(--ink);}
.chip.on{color:var(--accent-hi);border-color:#F5A62366;background:#F5A62314;}
.badge{display:inline-flex;align-items:center;padding:3px 9px;border-radius:6px;font-size:10.5px;font-weight:500;border:1px solid;letter-spacing:.02em;}
.tag{font-size:10px;padding:2px 8px;border-radius:5px;background:rgba(255,255,255,.06);color:var(--dim);}
.tags{display:flex;gap:5px;flex-wrap:wrap;}
.copy{width:26px;height:26px;border-radius:7px;display:inline-grid;place-items:center;background:var(--panel);
  border:1px solid var(--line);color:var(--dim);cursor:pointer;flex:none;}
.copy:hover{color:var(--accent-hi);border-color:#F5A62355;}

/* cards + tables */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:16px;}
.grid{display:grid;gap:14px;}
.cols-auto{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));}
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px;flex-wrap:wrap;}
.search{display:flex;align-items:center;gap:9px;padding:9px 13px;border-radius:10px;background:var(--panel);
  border:1px solid var(--line);color:var(--dim);flex:1;min-width:200px;}
.search input{background:none;border:0;outline:none;color:var(--ink);font-size:13px;width:100%;}
.table-wrap{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--panel);}
table.tbl{width:100%;border-collapse:collapse;font-size:12.5px;}
.tbl th{text-align:left;padding:12px 14px;color:var(--dim);font-weight:500;font-size:11px;text-transform:uppercase;
  letter-spacing:.08em;border-bottom:1px solid var(--line);background:rgba(255,255,255,.02);}
.tbl td{padding:11px 14px;border-bottom:1px solid rgba(255,255,255,.05);vertical-align:middle;}
.tbl tr:last-child td{border-bottom:0;}
.tbl tr:hover td{background:rgba(255,255,255,.02);}
.host-cell{color:var(--accent-hi);max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.empty{padding:40px;text-align:center;color:var(--dim);font-size:13px;}
.spin{animation:spin360 .8s linear infinite;}
@keyframes spin360{to{transform:rotate(360deg);}}
.note{font-size:11.5px;color:var(--dim);margin-top:8px;}

/* --------------------------------- deck ----------------------------------- */
.deck{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;
  min-height:calc(100vh - 66px);padding:20px;}
.orbit-wrap{position:relative;width:600px;height:600px;max-width:94vw;max-height:74vh;
  display:flex;align-items:center;justify-content:center;}
.orbit-ring{position:absolute;width:440px;height:440px;border-radius:50%;border:1px solid var(--line);
  box-shadow:inset 0 0 60px #F5A6230c;}
.orbit-ring.r2{width:362px;height:362px;border-style:dashed;opacity:.5;}
.satellite{position:absolute;left:50%;top:50%;width:78px;height:78px;margin:-39px;text-decoration:none;}
.sat-face{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;width:78px;height:78px;
  border-radius:50%;color:var(--ink);background:rgba(12,16,26,.78);border:1px solid var(--line);
  backdrop-filter:blur(6px);transition:transform .2s,border-color .2s,box-shadow .2s,color .2s;}
.satellite:hover .sat-face{transform:scale(1.12);border-color:#F5A623aa;box-shadow:0 0 22px #F5A62344;color:var(--accent-hi);}
.sat-label{font-size:9px;letter-spacing:.05em;text-transform:uppercase;color:var(--dim);}
.satellite:hover .sat-label{color:var(--accent-hi);}
.hub{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  width:200px;height:200px;border-radius:50%;
  background:radial-gradient(circle at 50% 38%,rgba(245,166,35,.10),rgba(8,11,18,.9) 70%);
  border:1px solid #F5A62344;box-shadow:0 0 40px #F5A62322,inset 0 0 30px #F5A62312;}
.hub .hawk{width:32px;height:32px;margin-bottom:2px;}
.hub-stat{font-family:'Sora';font-weight:800;font-size:38px;line-height:1;color:var(--accent-hi);}
.hub-stat-label{font-size:9.5px;text-transform:uppercase;letter-spacing:.14em;color:var(--dim);}
.hub-line{width:44px;height:1px;background:var(--line);margin:9px 0 4px;}
.hub-hint{font-size:9px;text-transform:uppercase;letter-spacing:.18em;color:#F5A623aa;}
.deck-cap{position:relative;z-index:2;color:var(--dim);font-size:13px;text-align:center;max-width:540px;margin-top:10px;}

/* --------------------------------- auth ----------------------------------- */
.auth{min-height:100vh;display:grid;place-items:center;padding:24px;position:relative;z-index:2;}
.auth-card{width:100%;max-width:420px;background:rgba(10,14,22,.72);border:1px solid var(--line);
  border-radius:22px;padding:34px 30px;backdrop-filter:blur(10px);box-shadow:0 30px 80px rgba(0,0,0,.5);}
.auth-logo{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:24px;}
.auth-logo .brand-name{font-size:20px;}
.auth h2{font-family:'Sora';font-weight:600;font-size:17px;margin:0 0 4px;text-align:center;}
.auth .sub{color:var(--dim);font-size:12.5px;text-align:center;margin-bottom:22px;}
.auth .field{margin-bottom:12px;}
.auth .btn-accent{width:100%;justify-content:center;padding:12px;margin-top:6px;}
.auth-switch{text-align:center;margin-top:18px;font-size:12.5px;color:var(--dim);}
.auth-switch button{background:none;border:0;color:var(--accent-hi);cursor:pointer;font-size:12.5px;}
.auth-err{background:#FF5C5C14;border:1px solid #FF5C5C44;color:var(--danger-hi);font-size:12.5px;
  padding:10px 12px;border-radius:10px;margin-bottom:14px;}
.auth-hint{font-size:11px;color:var(--dim-2);text-align:center;margin-top:16px;}

/* --------------------------- manual hunt / scan --------------------------- */
.hunt-input{display:flex;align-items:center;gap:10px;position:relative;}
.type-chip{position:absolute;right:120px;font-size:10px;text-transform:uppercase;letter-spacing:.08em;
  padding:3px 8px;border-radius:6px;background:#F5A62318;color:var(--accent-hi);border:1px solid #F5A62344;}
.verdict{margin-top:16px;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;}
.verdict-head{display:flex;align-items:center;gap:12px;padding:15px 18px;font-size:14px;}
.v-bad{background:#FF5C5C10;color:var(--danger-hi);}
.v-clean{background:#3DDC9710;color:#a8f0d0;}
.v-warn{background:#FFB02010;color:#ffd27a;}
.src-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;padding:16px;}
.src-card{border:1px solid var(--line);border-radius:10px;padding:12px 14px;}
.src-hit{border-color:#FF5C5C44;background:#FF5C5C0c;}

/* drop zone */
.drop{display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
.drop-label{flex:1;min-width:260px;display:flex;flex-direction:column;gap:5px;align-items:center;justify-content:center;
  padding:30px;border:1.5px dashed var(--line);border-radius:16px;cursor:pointer;text-align:center;transition:.15s;}
.drop-label:hover,.drop-label.over{border-color:#F5A62366;color:var(--accent-hi);background:#F5A6230a;}
.tabs{display:flex;gap:8px;margin-bottom:18px;}

/* scan progress */
.scan-progress{display:flex;flex-direction:column;gap:10px;margin-top:22px;}
.scan-bar{height:6px;border-radius:4px;background:rgba(255,255,255,.07);overflow:hidden;}
.scan-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-hi));transition:width .5s ease;}

/* =========================== FILESCAN REPORT ============================== */
.report{display:flex;flex-direction:column;gap:16px;animation:fadeup .5s ease both;}
@keyframes fadeup{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:none;}}
.rep-hero{display:flex;gap:26px;align-items:center;padding:26px;border-radius:20px;position:relative;overflow:hidden;
  border:1px solid var(--line);background:linear-gradient(135deg,rgba(255,255,255,.04),rgba(255,255,255,.01));}
.rep-hero::before{content:'';position:absolute;inset:0;opacity:.5;pointer-events:none;
  background:radial-gradient(400px 200px at 12% 0%,var(--hero-glow,#F5A62322),transparent 70%);}
.gauge{--score:0;--c:var(--accent);width:118px;height:118px;border-radius:50%;flex:none;display:grid;place-items:center;
  position:relative;background:conic-gradient(var(--c) calc(var(--score)*1%),rgba(255,255,255,.06) 0);}
.gauge::before{content:'';position:absolute;inset:9px;border-radius:50%;background:var(--bg-2);}
.gauge-inner{position:relative;z-index:1;text-align:center;}
.gauge-num{font-family:'Sora';font-weight:800;font-size:30px;line-height:1;}
.gauge-lbl{font-size:9px;text-transform:uppercase;letter-spacing:.12em;color:var(--dim);margin-top:2px;}
.rep-hero-main{flex:1;min-width:0;position:relative;z-index:1;}
.rep-verdict{font-family:'Sora';font-weight:800;font-size:26px;letter-spacing:.02em;}
.rep-sub{color:var(--dim);font-size:12.5px;margin-top:4px;display:flex;gap:14px;flex-wrap:wrap;align-items:center;}
.rep-file{margin-top:12px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.rep-hash{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--dim);word-break:break-all;}
.rep-actions{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap;}

.rep-section{border:1px solid var(--line);border-radius:var(--r);background:var(--panel);overflow:hidden;}
.rep-section > h3{font-family:'Sora';font-weight:600;font-size:13px;margin:0;padding:14px 18px;
  display:flex;align-items:center;gap:9px;border-bottom:1px solid var(--line);text-transform:uppercase;letter-spacing:.06em;color:var(--ink);}
.rep-section > h3 .count{margin-left:auto;font-size:11px;color:var(--dim);letter-spacing:0;text-transform:none;}
.rep-body{padding:16px 18px;}
.rep-cols{display:grid;gap:16px;}
@media(min-width:820px){.rep-cols{grid-template-columns:1fr 1fr;}}

.ai-summary{white-space:pre-wrap;font-size:13px;line-height:1.6;color:#dfe6f0;}
.signal{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid rgba(255,255,255,.05);}
.signal:last-child{border-bottom:0;}
.signal-desc{flex:1;font-size:12.5px;}
.sbar{width:90px;height:5px;border-radius:3px;background:rgba(255,255,255,.08);overflow:hidden;flex:none;}
.sbar > span{display:block;height:100%;border-radius:3px;}
.ioc-list{max-height:230px;overflow:auto;}
.ioc-row{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.05);}
.ioc-row:last-child{border-bottom:0;}
.ioc-val{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:#cdd8e6;word-break:break-all;flex:1;}
.mitre-chip{border-color:#c58cff55!important;color:#d8bcff!important;background:#c58cff14!important;}
.yara-item{padding:10px 0;border-bottom:1px solid rgba(255,255,255,.05);}
.yara-item:last-child{border-bottom:0;}
.yara-rule{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--accent-hi);}
.raw-toggle{cursor:pointer;user-select:none;}
.raw-json{max-height:360px;overflow:auto;font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--dim);
  white-space:pre;padding:14px;background:#070a11;border-radius:10px;margin-top:10px;}

/* --------------------------------- solutions ------------------------------ */
.sol{display:flex;gap:12px;text-align:left;padding:14px;border-radius:13px;background:var(--panel);
  border:1px solid var(--line);cursor:pointer;color:var(--ink);transition:.15s;width:100%;}
.sol:hover{border-color:#F5A62355;}
.sol.on{border-color:#F5A62388;background:#F5A62312;}
.sol-name{font-size:13px;font-weight:600;display:flex;align-items:center;gap:7px;}
.sol-meta{font-size:11px;margin:3px 0 8px;display:flex;gap:6px;align-items:center;color:var(--ink);}

/* --------------------------------- campaigns ------------------------------ */
.camp-card{display:block;text-decoration:none;color:var(--ink);}
.camp-card:hover{border-color:#F5A62355;}
.camp-name{font-family:'Sora';font-weight:600;font-size:15px;}
.camp-meta{display:flex;gap:14px;margin-top:8px;font-size:12px;color:var(--dim);flex-wrap:wrap;}
.status-tag{font-size:10px;text-transform:uppercase;letter-spacing:.08em;padding:3px 9px;border-radius:6px;border:1px solid;}
.st-open{color:var(--info);border-color:#7aa2ff55;background:#7aa2ff12;}
.st-active{color:var(--clean);border-color:#3DDC9755;background:#3DDC9712;}
.st-closed{color:var(--dim);border-color:var(--line);}
.matrix-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);}
.matrix{border-collapse:collapse;width:100%;font-size:12px;}
.matrix th,.matrix td{padding:10px 12px;border-bottom:1px solid rgba(255,255,255,.05);text-align:center;}
.matrix th:first-child,.matrix td:first-child{text-align:left;position:sticky;left:0;background:var(--bg-2);z-index:1;}
.matrix thead th{background:rgba(255,255,255,.03);color:var(--dim);font-weight:500;font-size:11px;}
.cell{width:26px;height:26px;border-radius:7px;display:inline-grid;place-items:center;font-size:12px;}
.c-detected{background:#3DDC9722;color:#a8f0d0;}
.c-missed{background:#FF5C5C22;color:var(--danger-hi);}
.c-suspicious{background:#FFB02022;color:#ffd27a;}
.c-none{background:rgba(255,255,255,.05);color:var(--dim-2);}
.rate-bar{height:6px;border-radius:3px;background:rgba(255,255,255,.08);overflow:hidden;margin-top:6px;}
.rate-bar>span{display:block;height:100%;background:linear-gradient(90deg,var(--clean),#7fe9c0);}
.mark-btns{display:flex;gap:6px;}
.mark{padding:5px 10px;border-radius:8px;font-size:11.5px;border:1px solid var(--line);background:var(--panel);
  color:var(--dim);cursor:pointer;}
.mark.on.detected{background:#3DDC9722;color:#a8f0d0;border-color:#3DDC9755;}
.mark.on.missed{background:#FF5C5C22;color:var(--danger-hi);border-color:#FF5C5C55;}
.mark.on.suspicious{background:#FFB02022;color:#ffd27a;border-color:#FFB02055;}

/* settings */
.status-row{display:flex;align-items:center;gap:14px;padding:14px 0;border-bottom:1px solid rgba(255,255,255,.05);}
.status-row>div{flex:1;}
.status-dot{width:9px;height:9px;border-radius:50%;flex:none;}
.status-dot.ok{background:var(--clean);box-shadow:0 0 8px var(--clean);}
.status-dot.off{background:#3a4150;}

/* responsive */
@media(max-width:640px){
  .wrap{padding:20px 14px 60px;}
  .rep-hero{flex-direction:column;text-align:center;}
  .type-chip{display:none;}
  .brand-sub{display:none;}
}
@media(prefers-reduced-motion:reduce){
  .report{animation:none;}
}

/* ===========================================================================
   AERIE v2 — cinematic animation layer (appended; overrides where needed)
   =========================================================================== */

/* ---- ambient animated background (moving SVGs + particles + nebula) ------ */
.ambient{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none;}
.ambient .starfield{animation:drift 120s linear infinite;opacity:.55;}
@keyframes drift{from{transform:translateY(0)}to{transform:translateY(-40px)}}

.glow{will-change:transform,opacity;}
.glow-a{animation:breatheA 14s ease-in-out infinite;}
.glow-b{animation:breatheB 18s ease-in-out infinite;}
.glow-c{width:420px;height:420px;top:35%;left:42%;
  background:radial-gradient(circle,#7a5bff14,transparent 70%);animation:breatheC 22s ease-in-out infinite;}
@keyframes breatheA{0%,100%{transform:translate(0,0) scale(1);opacity:.9}50%{transform:translate(-30px,20px) scale(1.15);opacity:1}}
@keyframes breatheB{0%,100%{transform:translate(0,0) scale(1);opacity:.8}50%{transform:translate(30px,-24px) scale(1.2);opacity:1}}
@keyframes breatheC{0%,100%{transform:translate(-50%,-50%) scale(1);opacity:.7}50%{transform:translate(-46%,-54%) scale(1.25);opacity:1}}

.orbit-bg{position:absolute;inset:0;width:100%;height:100%;opacity:.6;}
.orbit-bg .ring{fill:none;stroke:rgba(245,166,35,.14);stroke-width:.15;}
.orbit-bg .ring.dash{stroke:rgba(122,162,255,.14);stroke-dasharray:.8 1.2;}
.orbit-bg .orb{fill:#F5A623;filter:drop-shadow(0 0 1px #F5A623);}
.orbit-bg .orb.b{fill:#7aa2ff;}
.orbit-bg .pt{fill:#ffffff;opacity:.25;animation:twinkle 6s ease-in-out infinite;}
@keyframes twinkle{0%,100%{opacity:.08}50%{opacity:.5}}
.ring-spin{animation:spin 60s linear infinite;}
.ring-spin.ring-rev{animation-direction:reverse;animation-duration:80s;}
@keyframes spin{to{transform:rotate(360deg)}}

.grain{position:absolute;inset:0;opacity:.03;pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");}

/* ---- sticky chrome + persistent scan bar --------------------------------- */
.chrome-sticky{position:sticky;top:0;z-index:50;
  background:linear-gradient(180deg,rgba(5,7,13,.92),rgba(5,7,13,.72));
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);box-shadow:0 10px 40px -20px rgba(0,0,0,.8);}
.chrome-sticky .topbar,.chrome-sticky .rail{border-bottom:0;}

.scanbar{display:none;align-items:center;gap:10px;padding:0 20px;max-height:0;overflow-x:auto;overflow-y:hidden;
  transition:max-height .35s ease,padding .35s ease;border-top:1px solid transparent;}
.scanbar.show{display:flex;max-height:60px;padding:10px 20px;border-top:1px solid var(--line);
  background:linear-gradient(90deg,rgba(245,166,35,.05),transparent);animation:slideDown .35s ease;}
@keyframes slideDown{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.scanbar-lbl{display:inline-flex;align-items:center;gap:6px;font-size:11px;text-transform:uppercase;
  letter-spacing:.1em;color:var(--dim);white-space:nowrap;flex:none;}
.scan-pill{display:inline-flex;align-items:center;gap:8px;padding:6px 8px 6px 12px;border-radius:999px;
  background:var(--panel-2);border:1px solid var(--line);cursor:pointer;white-space:nowrap;flex:none;
  transition:.15s;animation:pillIn .3s ease both;}
.scan-pill:hover{border-color:#F5A62366;transform:translateY(-1px);}
@keyframes pillIn{from{opacity:0;transform:scale(.9)}to{opacity:1;transform:none}}
.sp-dot{width:9px;height:9px;border-radius:50%;flex:none;background:var(--dim);}
.sp-dot.running{background:var(--accent);animation:pulseDot 1.1s ease-in-out infinite;}
.sp-dot.err{background:var(--danger);}
@keyframes pulseDot{0%,100%{box-shadow:0 0 0 0 #F5A62366;opacity:1}50%{box-shadow:0 0 0 5px #F5A62300;opacity:.6}}
.sp-name{font-size:12px;max-width:150px;overflow:hidden;text-overflow:ellipsis;}
.sp-meta{font-size:11px;color:var(--dim);}
.sp-x{width:18px;height:18px;border-radius:50%;border:0;background:transparent;color:var(--dim-2);cursor:pointer;font-size:14px;line-height:1;}
.sp-x:hover{color:var(--danger-hi);background:rgba(255,255,255,.06);}
.sp-clear{flex:none;}

/* ---- brand shimmer ------------------------------------------------------- */
.brand-name{background:linear-gradient(90deg,#fff 0%,#FFC94D 30%,#F5A623 50%,#FFC94D 70%,#fff 100%);
  background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;
  animation:shine 6s linear infinite;}
@keyframes shine{to{background-position:200% center}}
.hawk{animation:hawkGlow 4s ease-in-out infinite;}
@keyframes hawkGlow{0%,100%{filter:drop-shadow(0 0 6px #F5A62355)}50%{filter:drop-shadow(0 0 14px #F5A623aa)}}

/* ---- page content entrance + card polish --------------------------------- */
.wrap{animation:pageIn .5s ease both;}
@keyframes pageIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.phead{animation:pageIn .5s ease both;}
.card,.sol,.camp-card,.rep-section,.table-wrap{transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease;}
.grid .card{animation:cardIn .5s ease both;}
.grid .card:nth-child(2){animation-delay:.04s}.grid .card:nth-child(3){animation-delay:.08s}
.grid .card:nth-child(4){animation-delay:.12s}.grid .card:nth-child(5){animation-delay:.16s}
.grid .card:nth-child(6){animation-delay:.2s}.grid .card:nth-child(n+7){animation-delay:.24s}
@keyframes cardIn{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}
.card:hover{transform:translateY(-2px);border-color:#F5A62344;box-shadow:0 14px 40px -24px #F5A62366;}

/* accent buttons get a sheen sweep on hover */
.btn-accent{position:relative;overflow:hidden;}
.btn-accent::after{content:"";position:absolute;top:0;left:-60%;width:40%;height:100%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.28),transparent);transform:skewX(-18deg);transition:left .5s ease;}
.btn-accent:hover::after{left:130%;}

.phead-icon{animation:iconGlow 3.5s ease-in-out infinite;}
@keyframes iconGlow{0%,100%{box-shadow:0 0 0 0 #F5A62300}50%{box-shadow:0 0 22px -4px #F5A62366}}

/* ---- LOGIN: living hero -------------------------------------------------- */
.auth-card{animation:authIn .6s cubic-bezier(.2,.8,.2,1) both;position:relative;}
@keyframes authIn{from{opacity:0;transform:translateY(20px) scale(.97)}to{opacity:1;transform:none}}
.auth-logo .hawk{width:44px;height:44px;}
.auth-card::before{content:"";position:absolute;inset:-1px;border-radius:23px;padding:1px;pointer-events:none;
  background:linear-gradient(130deg,#F5A62366,transparent 40%,transparent 60%,#7aa2ff44);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude;opacity:.7;}

/* ---- DECK: living orrery ------------------------------------------------- */
.deck{animation:pageIn .6s ease both;}
.orbit-wrap{animation:deckIn .8s cubic-bezier(.2,.8,.2,1) both;}
@keyframes deckIn{from{opacity:0;transform:scale(.9)}to{opacity:1;transform:none}}
.orbit-ring{overflow:visible;}
.orbit-ring::before{content:"";position:absolute;inset:-1px;border-radius:50%;
  background:conic-gradient(from 0deg,transparent 0deg,#F5A62366 40deg,transparent 80deg);
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 2px),#000 calc(100% - 2px));
  mask:radial-gradient(farthest-side,transparent calc(100% - 2px),#000 calc(100% - 2px));
  animation:spin 14s linear infinite;}
.orbit-ring.r2::before{animation-duration:20s;animation-direction:reverse;
  background:conic-gradient(from 0deg,transparent 0deg,#7aa2ff55 30deg,transparent 70deg);}
.sat-face{animation:floaty 6s ease-in-out infinite;}
.satellite:nth-child(4) .sat-face{animation-delay:-1s}
.satellite:nth-child(5) .sat-face{animation-delay:-2s}
.satellite:nth-child(6) .sat-face{animation-delay:-3s}
.satellite:nth-child(7) .sat-face{animation-delay:-4s}
.satellite:nth-child(8) .sat-face{animation-delay:-5s}
.satellite:nth-child(9) .sat-face{animation-delay:-2.5s}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
.hub{animation:hubPulse 5s ease-in-out infinite;}
@keyframes hubPulse{0%,100%{box-shadow:0 0 40px #F5A62322,inset 0 0 30px #F5A62312}
  50%{box-shadow:0 0 70px #F5A62344,inset 0 0 40px #F5A62322}}
.hub-stat{background:linear-gradient(180deg,#FFC94D,#F5A623);-webkit-background-clip:text;background-clip:text;color:transparent;}

/* ---- REPORT: gauge glow + bars fill -------------------------------------- */
.rep-hero{animation:heroIn .55s ease both;}
@keyframes heroIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.gauge{animation:gaugeGlow 4s ease-in-out infinite;}
@keyframes gaugeGlow{0%,100%{filter:drop-shadow(0 0 0 transparent)}50%{filter:drop-shadow(0 0 14px var(--c))}}
.sbar>span{animation:barFill .8s cubic-bezier(.2,.8,.2,1) both;}
@keyframes barFill{from{width:0 !important}}
.rep-section{animation:cardIn .5s ease both;}

/* ---- footer credit ------------------------------------------------------- */
.credit{position:relative;z-index:2;display:flex;flex-wrap:wrap;gap:10px 18px;align-items:center;justify-content:center;
  padding:26px 20px 34px;margin-top:20px;color:var(--dim);font-size:12px;text-align:center;
  border-top:1px solid var(--line);background:linear-gradient(180deg,transparent,rgba(245,166,35,.03));}
.credit b{color:var(--ink);font-weight:600;}
.credit-brand{display:inline-flex;align-items:center;gap:8px;}
.credit-brand .hawk{width:20px;height:20px;}
.credit-brand b{background:linear-gradient(90deg,#FFC94D,#F5A623);-webkit-background-clip:text;background-clip:text;color:transparent;}

/* ---- honour reduced motion ---------------------------------------------- */
@media(prefers-reduced-motion:reduce){
  *{animation-duration:.001ms !important;animation-iteration-count:1 !important;}
  .ring-spin,.orbit-ring::before,.sat-face,.glow{animation:none !important;}
}
