/* Enhanced UI: risk gauge, follow gate, page preview, history, generator. */

/* --- risk gauge ---------------------------------------------------- */
.scoreRow{display:flex;gap:18px;align-items:center;padding:16px 17px;
  border-bottom:1px solid var(--line);background:#ffffff04}
.gauge{position:relative;width:118px;height:118px;flex:0 0 118px}
.gauge svg{width:100%;height:100%;display:block}
.gTrack{fill:none;stroke:#1d2b38;stroke-width:9}
.gFill{fill:none;stroke-width:9;stroke-linecap:round;
  transition:stroke-dasharray 1s cubic-bezier(.2,.9,.25,1)}
.gNum{position:absolute;inset:0;display:grid;place-content:center;
  font:800 30px/1 ui-sans-serif,system-ui;letter-spacing:-.03em}
.gNum small{font-size:12px;opacity:.55;font-weight:700}
.gLabel{position:absolute;left:0;right:0;bottom:-2px;text-align:center;
  font-size:9px;font-weight:900;letter-spacing:.14em}
.scoreMeta{flex:1;min-width:0}

.countStrip{display:flex;gap:7px;flex-wrap:wrap;margin-top:11px}
.cnt{padding:4px 10px;border-radius:999px;font-size:11px;font-weight:700;
  background:#ffffff08;border:1px solid #ffffff14;color:var(--dim)}
.cnt b{font-weight:900}
.cnt.critical{background:#ff5d6c18;border-color:#ff5d6c3a;color:#ff8d98}
.cnt.warning{background:#ffb64818;border-color:#ffb6483a;color:#ffc877}
.cnt.good{background:#3fd9b014;border-color:#3fd9b033;color:var(--ok)}

/* --- follow gate ---------------------------------------------------- */
.followBox{display:flex;gap:14px;align-items:center;flex-wrap:wrap;
  padding:15px;border-radius:14px;margin-bottom:17px;border:1px solid}
.followBox.ok{background:#3fd9b00e;border-color:#3fd9b038}
.followBox.warn{background:#ffb64810;border-color:#ffb64838}
.followBox.danger{background:#ff5d6c12;border-color:#ff5d6c3d}
.fbText{flex:1;min-width:190px}
.fbText strong{display:block;font-size:14.5px;margin-bottom:3px}
.fbText small{color:var(--dim);font-size:12.5px;line-height:1.5}
.fbText b{color:var(--ink)}

.followBtn{padding:12px 20px;border:0;border-radius:12px;font-weight:800;
  font-size:14px;cursor:pointer;white-space:nowrap}
.followBtn.go{background:var(--accent);color:#04231c}
.followBtn.go:hover{filter:brightness(1.1)}
.followBtn.caution{background:#ffb648;color:#2e1e00}
.followBtn.caution.armed{background:#ff8c42;animation:nudge .4s ease}
@keyframes nudge{25%{transform:translateX(-3px)}75%{transform:translateX(3px)}}

.followBtn.hold{position:relative;overflow:hidden;background:#2a1116;
  color:#ff9aa4;border:1px solid #ff5d6c55;min-width:210px}
.followBtn.hold .holdFill{position:absolute;left:0;top:0;bottom:0;width:0;
  background:#ff5d6c3a;transition:none}
.followBtn.hold .holdLbl{position:relative;z-index:1}
.followBtn.hold.holding{border-color:#ff5d6c}

/* --- destination preview -------------------------------------------- */
.preview{padding:14px;border:1px solid var(--line);border-radius:13px;
  background:#070c12}
.pvHead{display:flex;gap:12px;align-items:center}
.favi{width:40px;height:40px;flex:0 0 40px;border-radius:10px;display:grid;
  place-items:center;background:linear-gradient(145deg,#1d3a4a,#122230);
  color:var(--accent2);font-weight:900;font-size:17px}
.pvHead strong{display:block;font-size:14.5px}
.pvHead small{color:var(--dim);font-size:12px}
.pvDesc{margin:11px 0 0;color:var(--dim);font-size:13px;line-height:1.5}
.pvFlags{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px}
.pvFlag{padding:4px 10px;border-radius:999px;font-size:11px;font-weight:700;
  background:#ffffff08;border:1px solid #ffffff14;color:var(--dim)}
.pvFlag.crit{background:#ff5d6c1a;border-color:#ff5d6c40;color:#ff9aa4}
.pvFlag.warn{background:#ffb6481a;border-color:#ffb64840;color:#ffc877}

/* --- hops ------------------------------------------------------------ */
.hopChain{padding:4px 0}
.hop .s.okc{color:var(--ok)}
.hop .s.redir{color:var(--warn)}
.hop .s.bad{color:var(--crit)}
.dest.final{margin-top:9px;border-color:#3fd9b038}

/* --- copy / share ---------------------------------------------------- */
.copyBtn{margin-left:7px;padding:1px 7px;border:1px solid var(--line);
  border-radius:6px;background:#ffffff08;
  color:#5d7384;font-size:11px;cursor:pointer;vertical-align:middle}
.copyBtn:hover{color:var(--accent);border-color:#3fd9b055}
.iconBtn{width:32px;height:32px;border:1px solid var(--line);border-radius:9px;
  background:#ffffff08;color:var(--dim);cursor:pointer;font-size:14px}
.iconBtn:hover{color:var(--accent);border-color:#3fd9b055}
.ghost.small{width:auto;margin-top:9px;padding:7px 13px;font-size:12.5px}

/* --- history --------------------------------------------------------- */
.history{margin-top:22px;border:1px solid var(--line);border-radius:15px;
  background:linear-gradient(160deg,var(--panel),var(--panel2));padding:13px}
.histHead{display:flex;justify-content:space-between;align-items:center;
  color:var(--dim);font-size:10.5px;font-weight:900;letter-spacing:.17em;
  margin-bottom:9px}
.linkBtn{border:0;background:0;color:var(--dim);cursor:pointer;font-size:11px;
  text-decoration:underline;letter-spacing:0;font-weight:700}
.histItem{display:flex;gap:11px;align-items:center;width:100%;text-align:left;
  padding:10px;border:1px solid #ffffff0d;border-radius:11px;background:#ffffff05;
  color:var(--ink);cursor:pointer;margin-bottom:7px}
.histItem:hover{border-color:#3fd9b044;background:#3fd9b00c}
.histItem span{flex:1;min-width:0;display:grid;gap:2px}
.histItem strong{font-size:13px}
.histItem small{color:var(--dim);font-size:11.5px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.histItem em{color:#5d7384;font-size:10.5px;font-style:normal}
.dot{width:9px;height:9px;flex:0 0 9px;border-radius:50%;background:var(--dim)}
.dot.dangerous{background:var(--crit);box-shadow:0 0 9px #ff5d6c88}
.dot.suspicious{background:var(--warn)}
.dot.review{background:var(--info)}
.dot.no_issues_found,.dot.no_network_target{background:var(--ok)}

/* --- generator ------------------------------------------------------- */
.makeRow{display:flex;gap:9px;align-items:center;margin-top:11px;flex-wrap:wrap}
.makeRow label{color:var(--dim);font-size:11.5px;font-weight:800;
  letter-spacing:.09em;text-transform:uppercase}
.makeRow select{flex:1;min-width:150px;padding:10px;border:1px solid var(--line);
  border-radius:10px;background:#070c12;color:var(--ink);font-size:13px}
.makeOut{margin-top:15px;text-align:center}
.qrImg{max-width:min(290px,78vw);width:100%;border-radius:13px;
  background:#fff;padding:11px;animation:pop .4s cubic-bezier(.2,.9,.25,1)}
@keyframes pop{from{opacity:0;transform:scale(.93)}}
.qrMeta{color:var(--dim);font-size:11.5px;margin-top:9px;
  font-family:ui-monospace,monospace}
.qrActions{display:flex;gap:9px;justify-content:center;margin-top:12px;flex-wrap:wrap}
.dl{display:inline-block;text-decoration:none;padding:11px 19px;border-radius:11px}
.muted{color:var(--dim);font-size:13px}

/* --- card entrance --------------------------------------------------- */
.reveal-in{animation:cardIn .45s cubic-bezier(.2,.9,.25,1)}
@keyframes cardIn{from{opacity:0;transform:translateY(14px)}}

@media(max-width:560px){
  .scoreRow{flex-direction:column;align-items:stretch;gap:13px}
  .gauge{align-self:center}
  .followBtn{width:100%}
}


/* --- trust panel ----------------------------------------------------- */
.trustPanel{padding:16px 17px;border-bottom:1px solid var(--line);
  background:linear-gradient(160deg,#ffffff07,#ffffff02)}
.trustHead{display:flex;gap:15px;align-items:center}
.tGrade{position:relative;width:74px;height:74px;flex:0 0 74px;border-radius:19px;
  display:grid;place-content:center;text-align:center;
  background:radial-gradient(circle at 50% 30%,color-mix(in srgb,var(--tc) 26%,transparent),transparent 70%);
  border:2px solid var(--tc)}
.tLetter{display:block;font:900 30px/1 ui-sans-serif,system-ui;color:var(--tc)}
.tPct{display:block;margin-top:3px;font-size:10.5px;font-weight:800;color:var(--dim)}
.tPct i{font-style:normal;opacity:.6}
.tHeadText{flex:1;min-width:0}
.tHeadText strong{display:block;font-size:15px;margin-bottom:3px}
.tHeadText small{color:var(--dim);font-size:12px;line-height:1.5;display:block}

.tCats{display:grid;gap:11px;margin-top:15px}
.tcat.unassessed{opacity:.55}
.tcTop{display:flex;justify-content:space-between;align-items:baseline;
  font-size:12.5px;margin-bottom:5px}
.tcTop b{font-weight:900;font-size:13px}
.tcTop b i{font-style:normal;font-size:10.5px;opacity:.55;font-weight:700}
.tBar{height:6px;border-radius:999px;background:#1d2b38;overflow:hidden}
.tBar span{display:block;height:100%;border-radius:999px;
  transition:width .8s cubic-bezier(.2,.9,.25,1)}
.tcat small{display:block;margin-top:4px;color:#67798a;font-size:11px}

/* --- export bar ------------------------------------------------------ */
.exportBar{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-top:17px;
  padding:12px 15px;border:1px solid var(--line);border-radius:13px;
  background:#ffffff05}
.exportBar>span{flex:1;min-width:120px;color:var(--dim);font-size:11.5px;
  font-weight:800;letter-spacing:.1em;text-transform:uppercase}
.exportBar .ghost.small{margin-top:0}

/* --- shortcuts overlay ----------------------------------------------- */
.shortcuts{position:fixed;right:18px;bottom:18px;z-index:70;padding:15px 17px;
  border:1px solid var(--line);border-radius:14px;
  background:#0d141dee;backdrop-filter:blur(9px);box-shadow:0 18px 50px #000a;
  font-size:12.5px;color:var(--dim);display:grid;gap:6px;min-width:190px}
.shortcuts b{color:var(--ink);font-size:12px;letter-spacing:.06em;
  text-transform:uppercase;margin-bottom:3px}
kbd{display:inline-block;min-width:22px;padding:2px 6px;margin-right:7px;
  border:1px solid var(--line);border-bottom-width:2px;border-radius:6px;
  background:#ffffff0c;color:var(--ink);font:700 11px ui-monospace,monospace;
  text-align:center}
.kbHint{margin:0 0 9px;font-size:11.5px;opacity:.75}
@media(max-width:560px){.shortcuts{display:none!important}.kbHint{display:none}}


/* --- branding -------------------------------------------------------- */
.brand{display:flex;align-items:center;gap:14px;margin-bottom:9px}
.brandMark{flex:0 0 54px;filter:drop-shadow(0 3px 10px #1F4E7955)}
.brandText h1{margin:0;line-height:1.05}
.brandBy{display:block;margin-top:3px;color:var(--dim);font-size:12px;
  text-decoration:none}
.brandBy strong{color:#8FD154;font-weight:800}
.brandBy:hover strong{text-decoration:underline}

.footBrand{display:flex;align-items:center;gap:10px;margin:0 0 11px;
  padding-bottom:11px;border-bottom:1px solid var(--line);
  color:var(--dim);font-size:12.5px}
.footBrand img{flex:0 0 26px;opacity:.9}
.footBrand a{color:#8FD154;text-decoration:none;font-weight:700}
.footBrand a:hover{text-decoration:underline}
@media(max-width:560px){.brandMark{flex:0 0 42px;width:42px;height:42px}}
