/* ========== Forge — design tokens ========== */
:root{
  --bg:#0a0b10; --bg-1:#0e1017; --bg-2:#12141d; --bg-3:#171a24; --bg-4:#1d2130;
  --line:#242838; --line-2:#2f3446; --line-soft:#1b1e2b;
  --fg:#e8eaf2; --fg-2:#a7adc2; --fg-3:#6f7691; --fg-4:#4c5268;
  --accent:#7c6cff; --accent-2:#a78bfa; --accent-soft:rgba(124,108,255,.14);
  --cyan:#39d0d8; --green:#3fb950; --green-soft:rgba(63,185,80,.14);
  --red:#f85149; --red-soft:rgba(248,81,73,.13);
  --amber:#e3b341; --pink:#f778ba; --blue:#58a6ff;
  --radius:14px; --radius-sm:9px; --radius-lg:20px;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 8px 30px rgba(0,0,0,.32);
  --shadow-lg:0 24px 70px rgba(0,0,0,.55);
  --mono:'SFMono-Regular',ui-monospace,'JetBrains Mono',Menlo,Consolas,monospace;
  --sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;
  --nav-h:58px;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  background:var(--bg); color:var(--fg); font-family:var(--sans);
  font-size:14px; line-height:1.55; -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
body::before{
  content:''; position:fixed; inset:0; pointer-events:none; z-index:0;
  background:
    radial-gradient(900px 480px at 12% -8%, rgba(124,108,255,.16), transparent 62%),
    radial-gradient(760px 420px at 92% 4%, rgba(57,208,216,.10), transparent 60%),
    radial-gradient(700px 500px at 50% 105%, rgba(247,120,186,.06), transparent 60%);
}
a{color:inherit;text-decoration:none}
button,input,textarea,select{font:inherit;color:inherit}
::selection{background:rgba(124,108,255,.35)}
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--bg-4);border-radius:8px;border:3px solid var(--bg)}
::-webkit-scrollbar-thumb:hover{background:#2c3145}

/* ========== primitives ========== */
.btn{
  display:inline-flex;align-items:center;gap:7px;justify-content:center;
  padding:7px 14px;border-radius:var(--radius-sm);border:1px solid var(--line-2);
  background:linear-gradient(180deg,var(--bg-3),var(--bg-2));
  font-weight:530;font-size:13px;cursor:pointer;white-space:nowrap;
  transition:.15s border-color,.15s background,.15s transform,.15s box-shadow;
}
.btn:hover{border-color:#3d4459;background:linear-gradient(180deg,var(--bg-4),var(--bg-3))}
.btn:active{transform:translateY(1px)}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}
.btn-primary{
  border-color:transparent;color:#fff;
  background:linear-gradient(180deg,#8b7bff,#6d5aef);
  box-shadow:0 1px 0 rgba(255,255,255,.14) inset,0 6px 18px rgba(109,90,239,.35);
}
.btn-primary:hover{background:linear-gradient(180deg,#9a8cff,#7967f5)}
.btn-green{border-color:transparent;color:#04140a;background:linear-gradient(180deg,#4fd268,#35a848);font-weight:620}
.btn-green:hover{background:linear-gradient(180deg,#5ade73,#3cb851)}
.btn-danger{border-color:rgba(248,81,73,.4);color:#ff8b85;background:var(--red-soft)}
.btn-danger:hover{background:rgba(248,81,73,.22);border-color:rgba(248,81,73,.6)}
.btn-ghost{background:transparent;border-color:transparent;color:var(--fg-2)}
.btn-ghost:hover{background:var(--bg-3);color:var(--fg);border-color:transparent}
.btn-sm{padding:4px 10px;font-size:12px;border-radius:7px}
.btn-lg{padding:10px 20px;font-size:14px}
.btn-icon{padding:7px;width:32px}

input[type=text],input[type=password],input[type=email],input[type=search],textarea,select{
  width:100%;padding:9px 12px;background:var(--bg-1);border:1px solid var(--line-2);
  border-radius:var(--radius-sm);outline:none;transition:.15s border-color,.15s box-shadow;
}
input:focus,textarea:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
input::placeholder,textarea::placeholder{color:var(--fg-4)}
textarea{resize:vertical;min-height:90px;font-family:inherit}
select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 5l3 3 3-3' stroke='%236f7691' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 10px center;padding-right:30px}
label.field{display:block;margin-bottom:16px}
label.field>span{display:block;font-size:12.5px;font-weight:600;color:var(--fg-2);margin-bottom:6px}
label.field>small{display:block;color:var(--fg-3);font-size:12px;margin-top:5px}

.card{background:linear-gradient(180deg,rgba(23,26,36,.9),rgba(18,20,29,.9));
  border:1px solid var(--line);border-radius:var(--radius);backdrop-filter:blur(8px)}
.card-pad{padding:18px}
.muted{color:var(--fg-3)}
.dim{color:var(--fg-2)}
.mono{font-family:var(--mono);font-size:12.5px}
.row{display:flex;align-items:center;gap:10px}
.row-wrap{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.spacer{flex:1}
.stack{display:flex;flex-direction:column;gap:14px}
.hidden{display:none !important}
.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:999px;
  font-size:11.5px;font-weight:600;border:1px solid var(--line-2);color:var(--fg-2);background:var(--bg-2)}
.badge-open{color:#7ee787;background:var(--green-soft);border-color:rgba(63,185,80,.35)}
.badge-closed{color:#ff9b95;background:var(--red-soft);border-color:rgba(248,81,73,.35)}
.badge-merged{color:#c9b6ff;background:var(--accent-soft);border-color:rgba(124,108,255,.4)}
.badge-accent{color:var(--accent-2);background:var(--accent-soft);border-color:rgba(124,108,255,.3)}
.topic{padding:2px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent-2);
  font-size:11.5px;font-weight:600;border:1px solid rgba(124,108,255,.22);cursor:pointer}
.topic:hover{background:rgba(124,108,255,.24)}
.add{color:var(--green)} .del{color:var(--red)}

.avatar{width:28px;height:28px;border-radius:50%;flex:none;display:grid;place-items:center;
  font-weight:700;font-size:11px;color:#fff;letter-spacing:.02em;user-select:none;
  box-shadow:0 0 0 1px rgba(255,255,255,.09) inset}
.avatar-lg{width:104px;height:104px;font-size:38px;border-radius:26px}
.avatar-md{width:40px;height:40px;font-size:15px}

/* ========== nav ========== */
.nav{position:sticky;top:0;z-index:60;height:var(--nav-h);display:flex;align-items:center;gap:16px;
  padding:0 22px;background:rgba(10,11,16,.82);backdrop-filter:blur(18px) saturate(1.3);
  border-bottom:1px solid var(--line-soft)}
.brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:15.5px;letter-spacing:-.015em}
.brand .mark{width:27px;height:27px;border-radius:9px;background:linear-gradient(140deg,#8b7bff,#5b4ae0 55%,#39d0d8);
  display:grid;place-items:center;box-shadow:0 3px 14px rgba(124,108,255,.5)}
.nav-links{display:flex;gap:2px}
.nav-links a{padding:6px 11px;border-radius:8px;color:var(--fg-2);font-size:13.5px;font-weight:500}
.nav-links a:hover{background:var(--bg-3);color:var(--fg)}
.nav-links a.on{color:var(--fg);background:var(--bg-3)}
.searchbox{position:relative;flex:1;max-width:400px}
.searchbox input{padding-left:32px;background:var(--bg-2);font-size:13px;height:34px}
.searchbox .ico{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--fg-4);pointer-events:none}
.searchbox kbd{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-family:var(--mono);
  font-size:10.5px;padding:2px 6px;border-radius:5px;background:var(--bg-4);color:var(--fg-3);border:1px solid var(--line-2)}

.menu{position:absolute;top:calc(100% + 8px);right:0;min-width:210px;background:var(--bg-2);
  border:1px solid var(--line-2);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:6px;z-index:100}
.menu a,.menu button{display:flex;align-items:center;gap:9px;width:100%;padding:8px 10px;border-radius:8px;
  background:none;border:none;text-align:left;cursor:pointer;font-size:13px;color:var(--fg-2)}
.menu a:hover,.menu button:hover{background:var(--bg-4);color:var(--fg)}
.menu hr{border:none;border-top:1px solid var(--line);margin:5px 2px}
.menu .head{padding:9px 10px 7px;font-size:12px;color:var(--fg-3)}
.menu .head b{display:block;color:var(--fg);font-size:13.5px}

/* ========== layout ========== */
main{position:relative;z-index:1;max-width:1300px;margin:0 auto;padding:26px 22px 120px}
main.wide{max-width:1500px}
h1{font-size:26px;font-weight:700;letter-spacing:-.02em}
h2{font-size:18px;font-weight:650;letter-spacing:-.01em}
h3{font-size:14.5px;font-weight:640}
.page-head{display:flex;align-items:flex-end;gap:16px;margin-bottom:22px;flex-wrap:wrap}
.section-title{display:flex;align-items:center;gap:10px;font-size:12px;font-weight:700;
  text-transform:uppercase;letter-spacing:.09em;color:var(--fg-3);margin-bottom:12px}
.empty{text-align:center;padding:52px 20px;color:var(--fg-3)}
.empty svg{opacity:.35;margin-bottom:14px}
.empty h3{color:var(--fg-2);margin-bottom:6px}
.grid{display:grid;gap:14px}
.grid-2{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}
.grid-3{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}

/* ========== hero (landing) ========== */
.hero{padding:70px 0 46px;text-align:center;position:relative}
.hero h1{font-size:clamp(38px,6vw,64px);line-height:1.04;letter-spacing:-.035em;margin-bottom:18px}
.hero h1 .grad{background:linear-gradient(100deg,#a78bfa,#7c6cff 40%,#39d0d8);
  -webkit-background-clip:text;background-clip:text;color:transparent}
.hero p{font-size:17px;color:var(--fg-2);max-width:600px;margin:0 auto 30px}
.pill{display:inline-flex;align-items:center;gap:8px;padding:5px 14px 5px 6px;border-radius:999px;
  background:var(--bg-2);border:1px solid var(--line-2);font-size:12.5px;color:var(--fg-2);margin-bottom:26px}
.pill b{background:var(--accent-soft);color:var(--accent-2);padding:2px 9px;border-radius:999px;font-size:11px}
.feature{padding:20px;border-radius:var(--radius);border:1px solid var(--line);
  background:linear-gradient(180deg,rgba(23,26,36,.75),rgba(14,16,23,.75));transition:.2s}
.feature:hover{border-color:var(--line-2);transform:translateY(-2px)}
.feature .fico{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;
  background:var(--accent-soft);color:var(--accent-2);margin-bottom:12px}
.feature h3{margin-bottom:5px}
.feature p{color:var(--fg-3);font-size:13px}
.statbar{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:1px;
  background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin:34px 0}
.statbar div{background:var(--bg-1);padding:16px 12px;text-align:center}
.statbar b{display:block;font-size:22px;font-weight:700;letter-spacing:-.02em}
.statbar span{font-size:11.5px;color:var(--fg-3);text-transform:uppercase;letter-spacing:.07em}

/* ========== repo card ========== */
.repo-card{padding:16px 17px;border:1px solid var(--line);border-radius:var(--radius);
  background:linear-gradient(180deg,rgba(23,26,36,.7),rgba(14,16,23,.7));transition:.18s;display:flex;flex-direction:column;gap:9px}
.repo-card:hover{border-color:var(--line-2);background:linear-gradient(180deg,rgba(29,33,48,.8),rgba(18,20,29,.8))}
.repo-card .name{font-weight:640;font-size:14.5px;color:var(--accent-2)}
.repo-card .name:hover{text-decoration:underline}
.repo-card .desc{color:var(--fg-3);font-size:13px;flex:1;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.repo-card .meta{display:flex;gap:14px;font-size:12px;color:var(--fg-3);align-items:center;flex-wrap:wrap}
.dot{width:9px;height:9px;border-radius:50%;flex:none}

/* ========== repo header ========== */
.repo-head{border-bottom:1px solid var(--line-soft);
  background:linear-gradient(180deg,rgba(18,20,29,.6),transparent);position:relative;z-index:1}
.repo-head .inner{max-width:1300px;margin:0 auto;padding:20px 22px 0}
.repo-title{display:flex;align-items:center;gap:8px;font-size:19px;flex-wrap:wrap}
.repo-title a{color:var(--accent-2)}
.repo-title a:hover{text-decoration:underline}
.repo-title .sep{color:var(--fg-4);font-weight:300}
.repo-title b{font-weight:680}
.tabs{display:flex;gap:2px;margin-top:16px;overflow-x:auto}
.tabs a{padding:9px 13px;border-radius:8px 8px 0 0;font-size:13.5px;color:var(--fg-2);
  border-bottom:2px solid transparent;display:flex;align-items:center;gap:7px;white-space:nowrap}
.tabs a:hover{background:var(--bg-2);color:var(--fg)}
.tabs a.on{color:var(--fg);border-bottom-color:var(--accent);font-weight:560}
.tabs .count{background:var(--bg-4);border-radius:999px;padding:0 7px;font-size:11px;color:var(--fg-2);min-width:20px;text-align:center}

/* ========== file browser ========== */
.filebar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.filelist{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--bg-1)}
.filelist .head{display:flex;align-items:center;gap:10px;padding:11px 15px;background:var(--bg-2);
  border-bottom:1px solid var(--line);font-size:12.5px;color:var(--fg-3)}
.frow{display:grid;grid-template-columns:1fr minmax(0,2fr) 96px;gap:14px;align-items:center;
  padding:9px 15px;border-bottom:1px solid var(--line-soft);font-size:13.5px;transition:background .12s}
.frow:last-child{border-bottom:none}
.frow:hover{background:var(--bg-2)}
.frow .fname{display:flex;align-items:center;gap:9px;min-width:0}
.frow .fname a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.frow .fname a:hover{color:var(--accent-2);text-decoration:underline}
.frow .fmsg{color:var(--fg-3);font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.frow .fage{color:var(--fg-3);font-size:12px;text-align:right}
.ico-dir{color:#7aa7ff} .ico-file{color:var(--fg-4)}
.breadcrumb{display:flex;align-items:center;gap:6px;font-size:15px;flex-wrap:wrap}
.breadcrumb a{color:var(--accent-2)} .breadcrumb a:hover{text-decoration:underline}
.breadcrumb .sep{color:var(--fg-4)}

.dropzone{position:fixed;inset:0;z-index:500;background:rgba(10,11,16,.86);backdrop-filter:blur(6px);
  display:grid;place-items:center;pointer-events:none;opacity:0;transition:.15s}
.dropzone.on{opacity:1}
.dropzone .inner{border:2px dashed var(--accent);border-radius:26px;padding:56px 84px;text-align:center;
  background:rgba(124,108,255,.07)}

/* ========== code viewer ========== */
.codebox{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--bg-1)}
.codebox .head{display:flex;align-items:center;gap:10px;padding:9px 14px;background:var(--bg-2);
  border-bottom:1px solid var(--line);font-size:12.5px;color:var(--fg-2);flex-wrap:wrap}
.code{font-family:var(--mono);font-size:12.5px;line-height:1.62;overflow-x:auto;tab-size:2}
.code table{border-collapse:collapse;width:100%}
.code td.ln{width:1%;min-width:52px;padding:0 14px 0 12px;text-align:right;color:var(--fg-4);
  user-select:none;vertical-align:top;position:sticky;left:0;background:var(--bg-1);font-size:11.5px}
.code td.lc{padding:0 16px 0 4px;white-space:pre;vertical-align:top}
.code tr:target td,.code tr.hl td{background:rgba(227,179,65,.11)}
.code tr:target td.ln,.code tr.hl td.ln{background:rgba(227,179,65,.16);color:var(--amber)}
.code td.ln a{color:inherit}

/* ========== diffs ========== */
.diff{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-bottom:14px;background:var(--bg-1)}
.diff .dhead{display:flex;align-items:center;gap:10px;padding:9px 14px;background:var(--bg-2);
  border-bottom:1px solid var(--line);font-size:12.5px;position:sticky;top:var(--nav-h);z-index:5;flex-wrap:wrap}
.diff .dhead .path{font-family:var(--mono);font-size:12.5px}
.diff table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:12.3px;line-height:1.6}
.diff td.n{width:1%;min-width:46px;padding:0 10px;text-align:right;color:var(--fg-4);user-select:none;
  vertical-align:top;font-size:11px;border-right:1px solid var(--line-soft)}
.diff td.m{width:18px;text-align:center;color:var(--fg-4);user-select:none;vertical-align:top}
.diff td.c{padding:0 14px 0 4px;white-space:pre-wrap;word-break:break-word;vertical-align:top}
.diff tr.a td{background:rgba(63,185,80,.10)} .diff tr.a td.m{color:var(--green)}
.diff tr.a td.n{background:rgba(63,185,80,.14)}
.diff tr.d td{background:rgba(248,81,73,.10)} .diff tr.d td.m{color:var(--red)}
.diff tr.d td.n{background:rgba(248,81,73,.14)}
.diff tr.gap td{background:var(--bg-2);color:var(--fg-4);font-size:11px;padding:3px 14px;text-align:center}
.stat-bar{display:inline-flex;gap:2px;vertical-align:middle}
.stat-bar i{width:8px;height:8px;border-radius:2px;background:var(--bg-4);display:block}
.stat-bar i.a{background:var(--green)} .stat-bar i.d{background:var(--red)}

/* ========== commits / timeline ========== */
.commit-row{display:flex;align-items:center;gap:12px;padding:13px 16px;border-bottom:1px solid var(--line-soft)}
.commit-row:last-child{border-bottom:none}
.commit-row:hover{background:var(--bg-2)}
.commit-row .msg{font-weight:530;font-size:13.5px}
.commit-row .msg:hover{color:var(--accent-2)}
.commit-day{padding:10px 16px;background:var(--bg-2);font-size:12px;color:var(--fg-3);
  border-bottom:1px solid var(--line);font-weight:600}
.hash{font-family:var(--mono);font-size:11.5px;padding:2px 7px;border-radius:6px;
  background:var(--bg-3);border:1px solid var(--line-2);color:var(--fg-2)}
.hash:hover{border-color:var(--accent);color:var(--accent-2)}

.timeline{position:relative;padding-left:22px}
.timeline::before{content:'';position:absolute;left:5px;top:8px;bottom:8px;width:2px;background:var(--line)}
.tl-item{position:relative;margin-bottom:16px}
.tl-item::before{content:'';position:absolute;left:-21px;top:14px;width:12px;height:12px;border-radius:50%;
  background:var(--bg-4);border:2px solid var(--bg);box-shadow:0 0 0 2px var(--line)}
.tl-item.ev::before{background:var(--accent)}
.comment-head{display:flex;align-items:center;gap:9px;padding:9px 14px;background:var(--bg-2);
  border-bottom:1px solid var(--line);border-radius:var(--radius) var(--radius) 0 0;font-size:13px}

/* ========== markdown ========== */
.md{font-size:14.5px;line-height:1.72;color:var(--fg)}
.md>*:first-child{margin-top:0}
.md h1,.md h2{border-bottom:1px solid var(--line);padding-bottom:.3em;margin:1.5em 0 .7em;letter-spacing:-.015em}
.md h1{font-size:26px} .md h2{font-size:21px}
.md h3{font-size:17px;margin:1.4em 0 .5em} .md h4{font-size:15px;margin:1.3em 0 .5em}
.md p,.md ul,.md ol,.md blockquote,.md table{margin-bottom:1em}
.md ul,.md ol{padding-left:1.7em} .md li{margin-bottom:.28em}
.md li::marker{color:var(--fg-4)}
.md a{color:var(--blue)} .md a:hover{text-decoration:underline}
.md code{font-family:var(--mono);font-size:85%;background:var(--bg-3);padding:.18em .42em;border-radius:6px;border:1px solid var(--line)}
.md pre{background:var(--bg-1);border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px 16px;overflow-x:auto;margin-bottom:1em}
.md pre code{background:none;border:none;padding:0;font-size:12.5px;line-height:1.6}
.md blockquote{border-left:3px solid var(--accent);padding:2px 0 2px 15px;color:var(--fg-2);background:rgba(124,108,255,.04)}
.md table{border-collapse:collapse;display:block;overflow-x:auto}
.md th,.md td{border:1px solid var(--line);padding:7px 13px} .md th{background:var(--bg-2);font-weight:640}
.md tr:nth-child(2n) td{background:rgba(255,255,255,.015)}
.md img{max-width:100%;border-radius:var(--radius-sm)}
.md hr{border:none;border-top:1px solid var(--line);margin:1.6em 0}
.md input[type=checkbox]{accent-color:var(--accent)}

/* ========== hljs (custom, matches the palette) ========== */
.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-doctag{color:#ff7b9c}
.hljs-string,.hljs-regexp,.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string{color:#9ae6a6}
.hljs-number,.hljs-symbol,.hljs-bullet,.hljs-variable,.hljs-template-variable,.hljs-link{color:#ffb86c}
.hljs-comment,.hljs-quote,.hljs-deletion{color:#5f6780;font-style:italic}
.hljs-title,.hljs-title.function_,.hljs-section,.hljs-name,.hljs-selector-id{color:#8ab4ff}
.hljs-title.class_,.hljs-type,.hljs-built_in,.hljs-selector-class{color:#5fd7e0}
.hljs-attr,.hljs-property,.hljs-params{color:#c9b6ff}
.hljs-meta,.hljs-tag{color:#8b93ad}
.hljs-emphasis{font-style:italic} .hljs-strong{font-weight:700}
mark{background:rgba(227,179,65,.3);color:#ffe08a;border-radius:3px;padding:0 2px}

/* ========== heatmap ========== */
.heat{display:grid;grid-auto-flow:column;grid-template-rows:repeat(7,11px);gap:3px;overflow-x:auto;padding-bottom:4px}
.heat i{width:11px;height:11px;border-radius:3px;background:var(--bg-3);display:block;cursor:pointer;transition:.1s}
.heat i:hover{outline:1px solid var(--fg-2)}
.heat i[data-l="1"]{background:rgba(124,108,255,.32)}
.heat i[data-l="2"]{background:rgba(124,108,255,.55)}
.heat i[data-l="3"]{background:rgba(124,108,255,.78)}
.heat i[data-l="4"]{background:#a78bfa;box-shadow:0 0 7px rgba(167,139,250,.55)}

/* ========== language bar ========== */
.langbar{display:flex;height:8px;border-radius:999px;overflow:hidden;background:var(--bg-3);gap:2px}
.langbar i{display:block;height:100%}

/* ========== modal / toast / palette ========== */
.overlay{position:fixed;inset:0;background:rgba(6,7,11,.72);backdrop-filter:blur(5px);z-index:200;
  display:grid;place-items:center;padding:24px;animation:fade .14s ease}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes pop{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
.modal{width:min(560px,100%);max-height:88vh;overflow:auto;background:var(--bg-2);border:1px solid var(--line-2);
  border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);animation:pop .17s cubic-bezier(.2,.9,.3,1)}
.modal.wide{width:min(880px,100%)}
.modal .mhead{display:flex;align-items:center;gap:10px;padding:18px 22px 0}
.modal .mbody{padding:16px 22px}
.modal .mfoot{display:flex;gap:10px;justify-content:flex-end;padding:14px 22px 20px}
.toasts{position:fixed;bottom:22px;left:22px;z-index:900;display:flex;flex-direction:column;gap:9px}
.toast{padding:11px 16px;border-radius:var(--radius-sm);background:var(--bg-3);border:1px solid var(--line-2);
  box-shadow:var(--shadow-lg);font-size:13px;max-width:380px;animation:pop .18s;display:flex;gap:9px;align-items:flex-start}
.toast.err{border-color:rgba(248,81,73,.5);background:#2a1618}
.toast.ok{border-color:rgba(63,185,80,.45);background:#12241a}

.palette{width:min(620px,100%);background:var(--bg-2);border:1px solid var(--line-2);border-radius:var(--radius-lg);
  box-shadow:var(--shadow-lg);overflow:hidden;animation:pop .16s;align-self:flex-start;margin-top:12vh}
.palette input{border:none;border-radius:0;border-bottom:1px solid var(--line);background:transparent;
  padding:16px 20px;font-size:15px}
.palette input:focus{box-shadow:none;border-color:var(--line)}
.palette .results{max-height:52vh;overflow:auto;padding:7px}
.palette .res{display:flex;align-items:center;gap:11px;padding:9px 13px;border-radius:9px;cursor:pointer;font-size:13.5px}
.palette .res.sel{background:var(--accent-soft)}
.palette .res .k{margin-left:auto;font-size:11px;color:var(--fg-4)}
.palette .gh{padding:9px 13px 4px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--fg-4);font-weight:700}

/* ========== 3D globe widget ========== */
#globe-widget{position:fixed;right:20px;bottom:20px;z-index:120;width:280px;
  transition:width .3s cubic-bezier(.2,.9,.3,1),height .3s cubic-bezier(.2,.9,.3,1)}
#globe-widget.collapsed{width:52px}
#globe-widget .shell{position:relative;border-radius:20px;overflow:hidden;border:1px solid var(--line-2);
  background:radial-gradient(120% 100% at 50% 0%,#141726,#0a0b12 70%);box-shadow:var(--shadow-lg)}
#globe-widget canvas{display:block;width:100%;cursor:grab}
#globe-widget canvas:active{cursor:grabbing}
#globe-widget .gbar{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;gap:7px;
  padding:9px 11px;font-size:11px;color:var(--fg-2);letter-spacing:.05em;text-transform:uppercase;font-weight:650;
  background:linear-gradient(180deg,rgba(10,11,18,.9),transparent);pointer-events:none;z-index:2}
#globe-widget .gbar button{pointer-events:auto;background:none;border:none;cursor:pointer;color:var(--fg-3);
  padding:2px;display:grid;place-items:center;border-radius:5px}
#globe-widget .gbar button:hover{color:var(--fg);background:var(--bg-4)}
#globe-widget .live{width:6px;height:6px;border-radius:50%;background:var(--green);
  box-shadow:0 0 0 0 rgba(63,185,80,.6);animation:pulse 2.4s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(63,185,80,.55)}70%{box-shadow:0 0 0 8px rgba(63,185,80,0)}100%{box-shadow:0 0 0 0 rgba(63,185,80,0)}}
#globe-widget .gfoot{position:absolute;bottom:0;left:0;right:0;padding:9px 12px 11px;font-size:11px;
  background:linear-gradient(0deg,rgba(10,11,18,.94),transparent);pointer-events:none;z-index:2}
#globe-widget .gfoot .ev{color:var(--fg-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#globe-widget .gfoot .ev b{color:var(--accent-2)}
#globe-widget.collapsed .gbar,#globe-widget.collapsed .gfoot,#globe-widget.collapsed canvas{display:none}
#globe-widget .puck{display:none;width:52px;height:52px;place-items:center;cursor:pointer;color:var(--accent-2)}
#globe-widget.collapsed .puck{display:grid}

@media (max-width:820px){
  .frow{grid-template-columns:1fr 76px}
  .frow .fmsg{display:none}
  .nav-links{display:none}
  main{padding:20px 14px 110px}
  #globe-widget{width:200px;right:12px;bottom:12px}
  .repo-head .inner{padding:16px 14px 0}
}
