:root{
  --bg:#0d0e10; --bg2:#131417; --line:#24262b; --ink:#ece7dc; --mut:#8f8b83; --dim:#5d5a55;
  --or:#fa6831; --ok:#8fd0a6; --warn:#f2c14e;
  --sans:"Schibsted Grotesk",system-ui,sans-serif; --mono:"JetBrains Mono",ui-monospace,monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{overflow-x:clip}
html{background:var(--bg)}
body{background:var(--bg);color:var(--ink);font:400 17px/1.6 var(--sans);-webkit-font-smoothing:antialiased}
a{color:inherit}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
.mono{font-family:var(--mono)}
code{font-family:var(--mono);font-size:.88em;color:var(--or)}
h1,h2{font-weight:600;letter-spacing:-.02em;line-height:1.08}
h2{font-size:clamp(30px,3.6vw,50px);max-width:18ch}
.wrap{width:min(1240px,100% - 48px);margin:0 auto}
.tag{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--or);margin-bottom:18px}
.intro{color:var(--mut);max-width:60ch;margin-top:20px;font-size:18px}
.link{display:inline-flex;gap:8px;align-items:center;color:var(--or);text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:2px;font-weight:500}

/* header */
.top{position:fixed;inset:0 0 auto 0;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:20px 32px;background:linear-gradient(var(--bg) 0%,rgba(13,14,16,.7) 60%,transparent)}
.mark{display:flex;align-items:center;gap:12px;text-decoration:none;font-weight:600}
.mark b{font:700 13px var(--mono);color:var(--bg);background:var(--or);padding:5px 7px;border-radius:4px}
.menu{display:flex;gap:30px}
.menu a{text-decoration:none;font-size:15px;color:var(--mut);transition:color .2s}
.menu a:hover{color:var(--ink)}
.ask-top{display:flex;align-items:center;gap:10px;font:500 14px var(--mono);border:1px solid var(--line);padding:9px 14px;border-radius:6px;transition:border-color .2s}
.ask-top:hover{border-color:var(--or)}
.ask-top i{width:7px;height:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 10px var(--ok)}

/* hero */
.hero{height:330vh;position:relative}
.hero-pin{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden}
#printGL{position:absolute;inset:0;width:100%;height:100%;display:block}
.hero-shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(13,14,16,.88) 0%,rgba(13,14,16,.5) 34%,transparent 58%)}
.hero-copy{position:absolute;left:clamp(24px,5vw,80px);top:50%;transform:translateY(-46%);width:min(500px,42vw)}
.hc{position:absolute;top:0;left:0;width:100%;transform:translateY(-50%);opacity:0;visibility:hidden;transition:opacity .6s,visibility .6s,transform .6s}
.hc.on{opacity:1;visibility:visible}
.who{font:500 13px var(--mono);color:var(--or);letter-spacing:.04em;margin-bottom:18px}
.hero h1{font-size:clamp(46px,5.6vw,84px);letter-spacing:-.03em}
.hero h2{font-size:clamp(36px,4vw,58px)}
.lede{color:#bdb8ad;font-size:clamp(17px,1.35vw,20px);margin-top:22px;max-width:44ch}
.readout{position:absolute;right:clamp(20px,3vw,48px);bottom:clamp(20px,5vh,48px);width:230px;font:500 12px var(--mono);background:rgba(19,20,23,.82);border:1px solid var(--line);border-radius:8px;padding:14px 16px;backdrop-filter:blur(6px)}
.ro-file{color:var(--mut);margin-bottom:10px}
.ro-row{display:flex;justify-content:space-between;padding:3px 0}
.ro-row span{color:var(--dim)}
.ro-bar{height:3px;background:var(--line);margin:12px 0 10px;border-radius:2px;overflow:hidden}
.ro-bar i{display:block;height:100%;width:0;background:var(--or)}
.ro-state{color:var(--or)}
.hint{position:absolute;left:50%;bottom:28px;transform:translateX(-50%);font:500 12px var(--mono);color:var(--mut);letter-spacing:.06em;transition:opacity .4s}

/* akamai */
.akamai{padding:140px 0 120px;border-top:1px solid var(--line);background:var(--bg)}

.aftermath{display:grid;grid-template-columns:420px 1fr;gap:72px;margin-top:110px;align-items:center}
.receipt{background:#ebe5d8;color:#1b1a18;padding:26px 26px 22px;font-size:13.5px;position:relative;transform:rotate(-1.2deg);box-shadow:0 30px 60px rgba(0,0,0,.45);
  -webkit-mask:linear-gradient(#000 0 0) top/100% calc(100% - 10px) no-repeat,conic-gradient(from 135deg at top,#0000,#000 1deg 89deg,#0000 90deg) bottom/16px 10px repeat-x;
  mask:linear-gradient(#000 0 0) top/100% calc(100% - 10px) no-repeat,conic-gradient(from 135deg at top,#0000,#000 1deg 89deg,#0000 90deg) bottom/16px 10px repeat-x}
.rc-top{text-align:center;font-weight:700;letter-spacing:.12em;padding-bottom:14px;border-bottom:1px dashed #9c968a;margin-bottom:12px}
.receipt ul{list-style:none}
.receipt li{display:flex;justify-content:space-between;gap:12px;padding:4px 0}
.receipt li span{flex:1;min-width:0;overflow:hidden;white-space:nowrap}
.receipt li b{white-space:nowrap}
.receipt li span::after{content:" ........................................";color:#aaa395}
.receipt .na{margin-top:10px;padding-top:10px;border-top:1px dashed #9c968a;color:#8d877b}
.receipt .na li{text-decoration:line-through;text-decoration-color:#b04a26}
.receipt .na b{font-weight:400}
.rc-sum{display:flex;justify-content:space-between;border-top:2px solid #1b1a18;margin-top:12px;padding-top:12px;font-weight:700;font-size:15px}
.rc-sum b{color:#c4471a}
.after-text p{color:#bdb8ad;font-size:18px;max-width:52ch;margin-bottom:18px}
.after-text p b{color:var(--ink);font-weight:600}

/* disclosure timeline */
.disclose{list-style:none;display:grid;grid-template-columns:repeat(5,1fr);margin-top:64px;border-top:1px solid var(--line);position:relative}
.disclose li{padding:26px 22px 0 0;position:relative}
.disclose li::before{content:"";position:absolute;top:-5px;left:0;width:9px;height:9px;border-radius:50%;background:var(--bg);border:1px solid var(--or)}
.disclose li:last-child::before{background:var(--or)}
.disclose b{display:block;color:var(--or);font-weight:500;font-size:13px;margin-bottom:10px}
.disclose span{color:#bdb8ad;font-size:16px;line-height:1.5;display:block}

/* advisories */
.advis{padding:130px 0;background:var(--bg2);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.adv-head{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:end}
.adv-head .intro{margin-top:0}
.term{margin-top:56px;border:1px solid var(--line);border-radius:12px;background:#0a0b0c;overflow:hidden}
.term-bar{display:flex;align-items:center;gap:7px;padding:12px 16px;border-bottom:1px solid var(--line)}
.term-bar i{width:10px;height:10px;border-radius:50%;background:#2c2e33}
.term-bar span{margin-left:12px;font-size:12px;color:var(--dim)}
.term-body{padding:14px 0;font-size:14px}
.adv{display:block;width:100%;text-align:left;padding:10px 22px;border-left:2px solid transparent;transition:background .2s,border-color .2s}
.adv:hover,.adv.open{background:#121316;border-left-color:var(--or)}
.adv .a-row{display:grid;grid-template-columns:70px 160px 1fr 90px 110px;gap:16px;align-items:baseline}
.adv .a-recv{color:var(--dim)}
.adv .a-cve{color:var(--ink)}
.adv .a-t{color:#bdb8ad;font-family:var(--sans);font-size:16px}
.adv .a-sev{font-size:12px}
.adv .a-sev.high{color:var(--or)}
.adv .a-sev.medium{color:var(--warn)}
.adv .a-fix{font-size:12px;color:var(--ok);text-align:right}
.adv .a-more{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s}
.adv.open .a-more{grid-template-rows:1fr}
.adv .a-more>div{overflow:hidden}
.adv .a-more p{padding:10px 0 8px 86px;font-family:var(--sans);color:var(--mut);font-size:15px;max-width:92ch}
.adv .a-more p a{color:var(--or)}
.term-cursor{padding:10px 22px;color:var(--ok)}
.term-cursor i{display:inline-block;width:9px;height:16px;background:var(--ok);vertical-align:-3px;margin-left:6px;animation:blink 1.1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.adv-foot{margin-top:28px;color:var(--mut);max-width:80ch}
.adv-foot a{color:var(--ink)}

/* built */
.built{padding:130px 0}
.repos{position:relative;margin-top:50px;padding-right:420px;min-height:440px}
.repo{display:grid;grid-template-columns:minmax(220px,300px) 1fr auto;gap:24px;align-items:baseline;padding:22px 0;border-top:1px solid var(--line);text-decoration:none;transition:padding .3s,color .3s}
.repo:last-of-type{border-bottom:1px solid var(--line)}
.r-name{font-size:24px;font-weight:600;letter-spacing:-.01em}
.r-what{color:var(--mut)}
.r-meta{font-size:13px;color:var(--dim);white-space:nowrap}
.repo:hover,.repo.on{padding-left:14px}
.repo:hover .r-name,.repo.on .r-name{color:var(--or)}
.r-peek{position:absolute;right:0;top:0;width:380px;border:1px solid var(--line);border-radius:10px;background:var(--bg2);padding:22px;font-size:13.5px;min-height:200px}
.pk-cmd{color:var(--ok);margin-bottom:14px}
.pk-out{color:#bdb8ad;font-family:var(--sans);font-size:16px;line-height:1.55}

/* origin */
.origin{padding:120px 0;border-top:1px solid var(--line)}
.origin .wrap{display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:center}
.or-l p:not(.tag){color:#bdb8ad;margin-top:20px;max-width:50ch}
.url{background:var(--bg2);border:1px solid var(--line);border-radius:8px;padding:20px;font-size:15px;word-break:break-all}
.url span{transition:background .5s,color .5s}
.url .u-bad{color:var(--ink)}
.url.lit .u-bad{background:rgba(250,104,49,.2);color:var(--or)}
.url.lit .u-ok{color:var(--dim)}
.days{list-style:none;margin-top:24px}
.days li{display:flex;gap:22px;padding:12px 0;border-bottom:1px solid var(--line);font-size:14px}
.days b{color:var(--or);font-weight:500;min-width:60px}
.days span{color:#bdb8ad}

/* contact */
.contact{padding:130px 0 0;background:var(--bg2);border-top:1px solid var(--line)}
.contact .wrap{display:grid;grid-template-columns:1fr 340px;gap:80px;align-items:end}
.ct-l img{width:84px;height:84px;border-radius:50%;object-fit:cover;display:block;margin-bottom:28px;filter:saturate(.85)}
.ct-l p{color:#bdb8ad;margin-top:20px;max-width:52ch}
.ct-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:32px}
.btn{display:inline-flex;align-items:center;font:500 15px var(--mono);padding:14px 20px;border-radius:7px;background:var(--or);color:#140c07;text-decoration:none}
.btn.ghost{background:none;color:var(--ink);border:1px solid var(--line)}
.btn.ghost:hover{border-color:var(--or)}
.ct-links{list-style:none;font-size:14px}
.ct-links a{display:flex;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--line);text-decoration:none;color:#bdb8ad;transition:color .2s}
.ct-links a:hover{color:var(--or)}
.foot{display:flex;justify-content:space-between;gap:20px;width:min(1240px,100% - 48px);margin:110px auto 0;padding:26px 0 34px;border-top:1px solid var(--line);font-size:12px;color:var(--dim)}

/* terminal assistant */
.term-fab{position:fixed;right:24px;bottom:24px;z-index:50;width:58px;height:58px;border-radius:14px;background:var(--or);color:#140c07;font-size:18px;font-weight:700;box-shadow:0 14px 34px rgba(0,0,0,.4);transition:transform .25s,opacity .25s}
.term-fab:hover{transform:translateY(-2px)}
body.tw-open .term-fab{opacity:0;pointer-events:none}
.tw{position:fixed;right:24px;bottom:24px;z-index:60;width:min(440px,calc(100vw - 32px));height:min(600px,calc(100svh - 110px));display:flex;flex-direction:column;background:#0a0b0c;border:1px solid #33363c;border-radius:12px;box-shadow:0 30px 80px rgba(0,0,0,.6);opacity:0;visibility:hidden;transform:translateY(14px);transition:opacity .3s,transform .3s,visibility .3s}
.tw.on{opacity:1;visibility:visible;transform:none}
.tw-bar{display:flex;align-items:center;gap:7px;padding:12px 14px;border-bottom:1px solid var(--line)}
.tw-bar i{width:10px;height:10px;border-radius:50%;background:#2c2e33}
.tw-bar i:first-child{background:var(--or)}
.tw-bar span{margin-left:10px;font-size:12px;color:var(--mut);flex:1}
.tw-bar button{font-size:22px;line-height:1;color:var(--mut);width:28px}
.tw-log{flex:1;overflow-y:auto;padding:16px 18px;font-size:13.5px;line-height:1.6;overscroll-behavior:contain}
.tw-log .m{margin-bottom:14px;white-space:pre-wrap}
.tw-log .m.u{color:var(--ok)}
.tw-log .m.u::before{content:"$ ";color:var(--dim)}
.tw-log .m.b{color:#d7d2c7;font-family:var(--sans);font-size:15px}
.tw-log .m.sys{color:var(--dim);font-size:12px}
.tw-log .m.b a{color:var(--or)}
.tw-log .sum{border:1px dashed #3a3d44;border-radius:6px;padding:10px 12px;margin-top:8px;font-family:var(--mono);font-size:12.5px;color:#bdb8ad}
.tw-log .acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.tw-log .acts a,.tw-log .acts button{font:500 12.5px var(--mono);padding:8px 12px;border-radius:6px;background:var(--or);color:#140c07;text-decoration:none}
.tw-log .acts .g{background:none;color:var(--ink);border:1px solid var(--line)}
.tw-chips{display:flex;flex-wrap:wrap;gap:6px;padding:0 18px 12px}
.tw-chips button{font:500 12px var(--mono);color:#bdb8ad;border:1px solid var(--line);padding:6px 10px;border-radius:5px;transition:border-color .2s,color .2s}
.tw-chips button:hover{border-color:var(--or);color:var(--ink)}
.tw-in{display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);padding:12px 16px}
.tw-in span{color:var(--ok)}
.tw-in input{flex:1;min-width:0;background:none;border:0;outline:0;color:var(--ink);font:inherit;font-size:14px}
.tw-in button{color:var(--mut);font-size:16px}

/* reveal */
.rv{opacity:0;transform:translateY(22px);transition:opacity .8s,transform .8s}
.rv.in{opacity:1;transform:none}

/* tablet & phone */
@media (max-width:1100px){
  .aftermath{grid-template-columns:1fr;gap:56px}
  .receipt{max-width:440px}
  .repos{padding-right:0}
  .r-peek{display:none}
  .adv .a-row{grid-template-columns:150px 1fr 80px}
  .adv .a-recv,.adv .a-fix{display:none}
  .adv .a-more p{padding-left:0}
}
@media (max-width:820px){
  body{font-size:16px}
  .menu{display:none}
  .top{padding:14px 18px}
  .ask-top{display:none}
  .hero{height:300vh}
  .hero-shade{background:linear-gradient(180deg,rgba(13,14,16,.92) 0%,rgba(13,14,16,.55) 40%,transparent 62%)}
  .hero-copy{left:22px;right:22px;width:auto;top:96px;transform:none}
  .hc{transform:none}
  .hero h1{font-size:44px}
  .hero h2{font-size:34px}
  .lede{font-size:16px;margin-top:14px}
  .who{font-size:11.5px;margin-bottom:12px}
  .readout{width:auto;left:18px;right:84px;bottom:18px;display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px 14px;padding:12px 14px}
  .ro-file{grid-column:1/-1;margin-bottom:2px}
  .ro-row{flex-direction:column;padding:0}
  .ro-bar{grid-column:1/-1;margin:8px 0 4px}
  .ro-state{grid-column:1/-1}
  .hint{display:none}
  .akamai,.advis,.built,.origin{padding:90px 0}
  .aftermath{grid-template-columns:minmax(0,1fr)}
  .receipt{max-width:100%;transform:none;font-size:12px;padding:22px 18px 18px;letter-spacing:0}
  .rc-top{letter-spacing:.06em;font-size:12px}
  .receipt li span::after{content:" ................................"}
  .adv-head,.origin .wrap,.contact .wrap{grid-template-columns:1fr;gap:28px}
  .repo{grid-template-columns:1fr;gap:4px}
  .r-name{font-size:21px}
  .adv .a-row{grid-template-columns:1fr auto;gap:4px 12px}
  .adv .a-cve{grid-column:1}
  .adv .a-t{grid-column:1/-1;grid-row:2;font-size:15px}
  .adv .a-sev{grid-column:2;grid-row:1}
  .term-fab{right:16px;bottom:16px;width:52px;height:52px}
  .tw{right:16px;bottom:16px}
  .foot{flex-direction:column;margin-top:70px}
  .contact{padding-bottom:70px}
}
