/* ============================================================
   FUD TEK — green phosphor CRT terminal
   ============================================================ */
:root{
  --bg:#060a06; --panel:#080d08;
  --green:#33e06a; --green-hi:#6effa0; --green-dim:#1f7a3a; --green-soft:#2aa84f;
  --ink:#4fe07f; --muted:#2f8f4a; --dim:#1e6334; --line:#15381f;
  --amber:#e3c73a; --red-hi:#ff5a5a; --white:#d8ffe4;
  --glow:0 0 6px rgba(51,224,106,.45);
  --sel:rgba(51,224,106,.3);
  --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
*{ box-sizing:border-box; }
html,body{ margin:0; height:100%; }
body{
  background:
    radial-gradient(1100px 600px at 50% 0%,#0b140c 0%,var(--bg) 60%),
    var(--bg);
  color:var(--ink); font-family:var(--mono); font-size:15px; line-height:1.55;
  -webkit-font-smoothing:antialiased;
  display:flex; flex-direction:column; align-items:center; padding:26px 16px 14px; min-height:100vh;
}
::selection{ background:var(--sel); color:#eaffef; }

.scanlines{ position:fixed; inset:0; pointer-events:none; z-index:50;
  background:repeating-linear-gradient(0deg,rgba(0,0,0,.18) 0 1px,transparent 1px 3px);
  mix-blend-mode:multiply; opacity:.55; }

/* ---------- framed terminal ---------- */
.frame{
  width:min(1040px,100%);
  background:linear-gradient(180deg,#0a110a,#070b07);
  border:1.5px dashed var(--green-dim);
  border-radius:6px;
  padding:clamp(20px,4vw,40px);
  box-shadow:0 0 0 1px #0c160c, 0 0 60px -20px rgba(51,224,106,.25), inset 0 0 120px -60px rgba(51,224,106,.18);
  position:relative;
}
.frame::after{ /* inner faint corner ticks */
  content:""; position:absolute; inset:7px; border:1px dashed rgba(51,224,106,.12); border-radius:4px; pointer-events:none;
}

/* logo */
.logo{ font-family:"Press Start 2P",var(--mono); font-size:clamp(28px,6vw,58px); line-height:1;
  letter-spacing:4px; margin:4px 0 16px; color:var(--green);
  text-shadow:var(--glow), 2px 2px 0 #03140a; display:flex; gap:.45em; }
.logo-fud{ color:var(--green-hi); text-shadow:0 0 10px rgba(110,255,160,.6),2px 2px 0 #03140a; animation:flick 7s infinite steps(1); }
.logo-tek{ color:var(--green); -webkit-text-stroke:1px var(--green-hi); text-shadow:var(--glow); }
@keyframes flick{ 0%,96%,100%{opacity:1} 96.5%{opacity:.45} 97.5%{opacity:1} 98.5%{opacity:.7} }
.logo.glitch{ animation:glitch .3s steps(2) 2; }
@keyframes glitch{ 0%{transform:translate(0)} 25%{transform:translate(-2px,1px); filter:hue-rotate(40deg)} 50%{transform:translate(2px,-1px)} 75%{transform:translate(-1px,-1px); filter:brightness(1.6)} 100%{transform:translate(0)} }

.rule{ height:0; border-top:1px dashed var(--green-dim); margin:0 0 22px; opacity:.7; }

/* columns */
.cols{ display:grid; grid-template-columns:1fr minmax(0,300px); gap:28px; align-items:start; }
.left{ min-width:0; }

/* prompt lines */
.pline{ color:var(--green); margin:14px 0 8px; text-shadow:var(--glow); }
.pline.sub{ margin-top:22px; }
.usr{ color:var(--green-hi); }

/* boot log */
.log{ white-space:pre-wrap; }
.log div{ margin:2px 0; }
.log .ln,.log .dim{ color:var(--muted); } .log .ok{ color:var(--green-hi); } .log .warn{ color:var(--amber); }

/* agent output */
.out{ margin:8px 0; display:flex; flex-direction:column; gap:14px; }
.say{ white-space:pre-wrap; animation:fadeUp .3s ease both; }
@keyframes fadeUp{ from{opacity:0;transform:translateY(5px)} to{opacity:1;transform:none} }
.say .who{ color:var(--green-hi); } .say b{ color:var(--white); } .say .you{ color:var(--green-hi); }
.say a{ color:var(--green-hi); text-decoration:underline; }
.say code{ background:#0c1a0f; border:1px solid var(--line); padding:0 5px; border-radius:4px; color:var(--green-hi); font-size:.92em; }
.typing i{ display:inline-block; width:6px; height:6px; margin-right:4px; background:var(--green); border-radius:50%; animation:blink 1s infinite; box-shadow:var(--glow); }
.typing i:nth-child(2){ animation-delay:.2s; } .typing i:nth-child(3){ animation-delay:.4s; }
@keyframes blink{ 0%,100%{opacity:.25} 50%{opacity:1} }

/* input box (dashed green, like the reference) */
.inbox{ display:flex; align-items:center; gap:10px; border:1px dashed var(--green-dim);
  border-radius:4px; padding:12px 14px; background:rgba(51,224,106,.04); }
.inbox .gt{ color:var(--green); }
.caretwrap{ position:relative; flex:1; display:flex; }
#input{ flex:1; background:transparent; border:none; outline:none; color:var(--green-hi); font:inherit; caret-color:transparent; }
#input::placeholder{ color:var(--dim); }
.fakecaret{ width:9px; height:1.15em; background:var(--green); align-self:center; box-shadow:var(--glow); animation:caret 1.05s steps(1) infinite; flex:none; }
@keyframes caret{ 0%,100%{opacity:1} 50%{opacity:0} }

/* example chips -> green option pills */
.chips{ display:flex; flex-wrap:wrap; gap:10px; margin-top:8px; }
.chips button{ background:rgba(51,224,106,.1); border:1px solid var(--green-dim); color:var(--green-hi);
  font:inherit; font-size:13px; padding:8px 12px; border-radius:4px; cursor:pointer; transition:.15s; }
.chips button::before{ content:"◯ "; color:var(--green); }
.chips button:hover{ background:rgba(51,224,106,.22); border-color:var(--green); box-shadow:var(--glow); }
.chips button:hover::before{ content:"◉ "; }

.byline{ margin-top:22px; color:var(--dim); font-size:12.5px; }

/* right ascii */
.right{ overflow:visible; }
.ascii{ color:var(--green); font-size:clamp(8px,1.4vw,12px); line-height:1.08; margin:0;
  text-shadow:var(--glow); white-space:pre; display:inline-block;
  animation:ascii-flick 5s infinite, catfloat 2.6s ease-in-out infinite; }
@keyframes ascii-flick{ 0%,94%,100%{opacity:.95} 95%{opacity:.5} 96%{opacity:.98} 97%{opacity:.65} }
@keyframes catfloat{ 0%,100%{transform:translateY(0) rotate(0deg)} 50%{transform:translateY(-7px) rotate(.6deg)} }
.catsub{ margin-top:10px; color:var(--green-hi); font-size:12px; text-shadow:var(--glow); min-height:1.2em; }
.catsub::after{ content:"_"; animation:caret 1s steps(1) infinite; color:var(--green); }

/* ---------- scanning ---------- */
.scanning{ border:1px dashed var(--green-dim); border-radius:4px; background:rgba(51,224,106,.04); padding:14px; overflow:hidden; }
.scanning .txt{ font-size:13px; color:var(--muted); margin-bottom:10px; } .scanning .txt b{ color:var(--green-hi); }
.scanbar{ height:6px; background:#0c1a0f; border-radius:3px; overflow:hidden; position:relative; }
.scanbar > i{ position:absolute; inset:0 auto 0 0; width:0; background:linear-gradient(90deg,var(--green-dim),var(--green-hi)); animation:fill 1.25s cubic-bezier(.3,.7,.2,1) forwards; box-shadow:var(--glow); }
.scanbar::after{ content:""; position:absolute; inset:0; width:40%; background:linear-gradient(90deg,transparent,rgba(110,255,160,.4),transparent); animation:sweep 1s linear infinite; }
@keyframes fill{ to{width:100%} } @keyframes sweep{ from{transform:translateX(-120%)} to{transform:translateX(320%)} }

/* ---------- result card ---------- */
.card{ border:1px dashed var(--green-dim); border-radius:6px; background:rgba(51,224,106,.03); overflow:hidden; animation:fadeUp .4s ease both; }
.card-top{ display:grid; grid-template-columns:auto 1fr; gap:18px; padding:18px; align-items:center; }
.gauge{ position:relative; width:132px; height:132px; flex:none; }
.gauge svg{ transform:rotate(-90deg); display:block; }
.gauge .track{ fill:none; stroke:#102a18; stroke-width:12; }
.gauge .arc{ fill:none; stroke-width:12; stroke-linecap:round; stroke-dasharray:377; stroke-dashoffset:377; transition:stroke-dashoffset 1.1s cubic-bezier(.2,.7,.2,1); filter:drop-shadow(0 0 4px currentColor); }
.gauge .mid{ position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; }
.gauge .n{ font-family:"Press Start 2P",var(--mono); font-size:28px; line-height:1; text-shadow:var(--glow); }
.gauge .lab{ font-size:9px; letter-spacing:2px; color:var(--muted); margin-top:7px; }
.v-low .arc{ stroke:var(--green-hi); } .v-low .n,.v-low .verdict{ color:var(--green-hi); }
.v-elev .arc{ stroke:var(--amber); } .v-elev .n,.v-elev .verdict{ color:var(--amber); }
.v-high .arc{ stroke:var(--red-hi); } .v-high .n,.v-high .verdict{ color:var(--red-hi); }
.meta{ min-width:0; }
.meta .sym{ font-family:"Press Start 2P",var(--mono); font-size:14px; color:var(--green-hi); margin-bottom:7px; word-break:break-word; text-shadow:var(--glow); }
.meta .verdict{ font-weight:700; font-size:15px; letter-spacing:1px; }
.meta .addr{ color:var(--dim); font-size:11.5px; margin-top:6px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* bubbles */
.bubbles{ padding:0 18px 6px; } .bubbles svg{ width:100%; height:120px; display:block; }
.bmlab{ font-size:10px; letter-spacing:2px; color:var(--dim); margin:0 0 4px; }
.bub{ transform-box:fill-box; transform-origin:center; animation:pop .5s cubic-bezier(.2,1.4,.4,1) both; }
@keyframes pop{ from{transform:scale(0);opacity:0} to{transform:scale(1);opacity:1} }
.link{ stroke:var(--red-hi); stroke-width:1; opacity:0; animation:lnk .4s ease forwards; } @keyframes lnk{ to{opacity:.5} }

/* pills */
.pills{ display:flex; flex-wrap:wrap; gap:8px; padding:4px 18px 16px; }
.pill{ display:flex; align-items:center; gap:7px; font-size:12.5px; padding:6px 11px; border-radius:4px; border:1px solid var(--line); background:rgba(51,224,106,.05); animation:fadeUp .3s both; }
.pill .v{ color:var(--white); } .pill .k{ color:var(--muted); } .pill .mk{ font-weight:700; }
.pill.good{ border-color:#1c5531; } .pill.good .mk{ color:var(--green-hi); }
.pill.warn{ border-color:#4a3c0c; } .pill.warn .mk{ color:var(--amber); }
.pill.bad{ border-color:#4a1818; } .pill.bad .mk{ color:var(--red-hi); }

/* ---------- swap ---------- */
.swap{ border-top:1px dashed var(--green-dim); background:rgba(51,224,106,.04); padding:14px 18px 16px; }
.swap-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; font-size:12.5px; color:var(--muted); margin-bottom:11px; }
.swap-head b{ color:var(--green-hi); }
.feechip{ font-size:11px; color:var(--amber); border:1px solid #4a3c0c; background:rgba(227,199,58,.08); padding:3px 8px; border-radius:4px; }
.swap-grid{ display:grid; grid-template-columns:1fr auto; gap:12px; align-items:center; }
.amt{ display:flex; align-items:center; gap:8px; background:#0a140d; border:1px dashed var(--green-dim); border-radius:4px; padding:9px 13px; }
.amt input{ background:none; border:none; outline:none; color:var(--green-hi); font:inherit; font-size:18px; width:100%; }
.amt .unit{ color:var(--muted); font-size:13px; }
.get{ text-align:right; font-size:12px; color:var(--muted); } .get b{ display:block; color:var(--green-hi); font-size:15px; }
.reward{ margin:10px 0; font-size:12.5px; color:var(--muted); display:flex; justify-content:space-between; } .reward b{ color:var(--green-hi); }
.swapbtn{ width:100%; background:var(--green); color:#04140a; border:1px solid var(--green-hi); font:inherit; font-weight:700; font-size:14px;
  padding:12px; border-radius:5px; cursor:pointer; box-shadow:0 0 18px -4px rgba(51,224,106,.5); transition:.15s; }
.swapbtn:hover{ background:var(--green-hi); transform:translateY(-1px); }
.swapbtn:disabled{ opacity:.6; transform:none; }
.swap-note{ margin-top:9px; font-size:11px; color:var(--dim); text-align:center; }

/* footer */
.footer{ width:min(1040px,100%); margin-top:14px; padding:11px 14px; color:var(--muted); font-size:12px;
  border:1px dashed var(--green-dim); border-radius:4px; background:rgba(51,224,106,.03); display:flex; gap:10px; align-items:center; }
.footer b{ color:var(--green-hi); }
.footer .dot{ width:8px; height:8px; flex:none; border-radius:50%; background:var(--green); box-shadow:var(--glow); animation:pulse 2s infinite; }
@keyframes pulse{ 0%,100%{opacity:1} 50%{opacity:.4} }

@media (max-width:720px){
  .cols{ grid-template-columns:1fr; } .right{ order:-1; text-align:center; }
  .ascii{ font-size:11px; }
  .card-top{ grid-template-columns:1fr; justify-items:center; text-align:center; }
}
@media (prefers-reduced-motion:reduce){ *{ animation:none !important; transition:none !important; } }
