/* Fonts are served from this origin. No third party can fail, throttle,
     track, or change what this site looks like. SIL Open Font License. */
  @font-face { font-family:"Archivo"; src:url("fonts/archivo-var.woff2") format("woff2-variations");
    font-weight:400 900; font-stretch:62% 125%; font-style:normal; font-display:swap; }
  @font-face { font-family:"IBM Plex Mono"; src:url("fonts/plexmono-400.woff2") format("woff2");
    font-weight:400; font-style:normal; font-display:swap; }
  @font-face { font-family:"IBM Plex Mono"; src:url("fonts/plexmono-500.woff2") format("woff2");
    font-weight:500; font-style:normal; font-display:swap; }
  @font-face { font-family:"IBM Plex Mono"; src:url("fonts/plexmono-600.woff2") format("woff2");
    font-weight:600; font-style:normal; font-display:swap; }

  :root {
    --paper:#FAFAF7; --ink:#14151A; --orange:#FF4100; --orange-dark:#D63600;
    --steel:#6B7280; --hairline:#DEDED7; --panel:#FFFFFF; --ok:#16A34A;
    --ch-sim:#FF4100; --ch-work:#1B5FD9; --ch-prin:#0F8A3D; --ch-exp:#B26A00;
    --photo-zoom:1.06;   /* 1 = whole photo · higher = closer crop */
    --photo-focus:35%;   /* vertical focal point: lower % = higher up the frame */
  }
  * { margin:0; padding:0; box-sizing:border-box; }
  html { scroll-behavior:smooth; }
  body {
    background:var(--paper); color:var(--ink); transition:background-color .6s ease, color .6s ease;
    font-family:"Archivo",system-ui,sans-serif; line-height:1.6;
    -webkit-font-smoothing:antialiased; overflow-x:hidden;
    background-image:
      linear-gradient(var(--hairline) 1px, transparent 1px),
      linear-gradient(90deg, var(--hairline) 1px, transparent 1px);
    background-size:48px 48px; background-attachment:fixed;
  }
  /* accent shifts smoothly as you move between sections */
  .sec-no,.stat .num,.spec-idx,.tagline,.doc-ref b,.prin .pn,.xp .org,.award b,
  .ticker-track span b,.slide-txt .tg,.try-me,h1 .accent,.sim-note b,.sim-bar b,
  .topbar a:hover,#pulse .dot,.quickspec b.avail,.hazard,.badge,.stamp,
  .contact-links button,.btn-primary,.sim-cell .v.orange {
    transition:color .55s ease, background-color .55s ease, border-color .55s ease, box-shadow .55s ease;
  }

  .mono { font-family:"IBM Plex Mono",ui-monospace,monospace; }
  .acc { color:var(--orange); }
  .award-gap { margin-bottom:16px; }
  .muted-note { color:var(--steel); }
  .slide.active .conflict-b { animation-delay:.5s; }
  ::selection { background:var(--orange); color:#fff; }
  .wrap { max-width:1080px; margin:0 auto; padding:0 24px; }
  .hazard { height:12px; background:repeating-linear-gradient(-45deg,var(--orange) 0 14px,var(--ink) 14px 28px); position:relative; z-index:5; }

  /* ===== BOOT ===== */
  #boot { position:fixed; inset:0; background:var(--ink); color:#fff; z-index:200; display:flex; align-items:center; justify-content:center; transition:transform .5s cubic-bezier(.7,0,.2,1); }
  #boot.done { transform:translateY(-100%); }
  #boot pre { font-family:"IBM Plex Mono",monospace; font-size:clamp(12px,2.4vw,15px); line-height:1.9; color:#B9BDC7; }
  #boot pre b { color:var(--orange); font-weight:600; }
  #boot pre .ok { color:#4ADE80; }

  /* ===== CROSSHAIR ===== */
  #chx,#chy { position:fixed; background:rgba(255,65,0,.35); z-index:90; pointer-events:none; }
  #chx { width:100vw; height:1px; left:0; } #chy { height:100vh; width:1px; top:0; }
  #coord { position:fixed; z-index:90; pointer-events:none; font-family:"IBM Plex Mono",monospace; font-size:10px; letter-spacing:1px; color:var(--orange); background:var(--paper); border:1px solid var(--orange); padding:2px 7px; transform:translate(14px,14px); white-space:nowrap; }
  @media (hover:none),(max-width:800px){ #chx,#chy,#coord{display:none;} }

  /* ===== TOPBAR + KILL SWITCH ===== */
  .topbar { background:var(--ink); color:#fff; position:sticky; top:0; z-index:60; }
  .topbar .wrap { display:flex; justify-content:space-between; align-items:center; height:50px; font-family:"IBM Plex Mono",monospace; font-size:12px; letter-spacing:1.5px; gap:16px; }
  .topbar a { color:#fff; text-decoration:none; transition:color .15s; }
  .topbar a:hover { color:var(--orange); }
  .topbar .right { display:flex; gap:22px; align-items:center; }
  @media (max-width:760px){ .topbar .right a { display:none; } }

  .killswitch { display:flex; align-items:center; gap:10px; cursor:pointer; user-select:none; }
  .killswitch .lbl { font-size:11px; letter-spacing:1.5px; color:#B9BDC7; }
  .killswitch .lbl b { color:#4ADE80; font-weight:600; transition:color .2s; }
  body.outage .killswitch .lbl b { color:var(--orange); }
  .sw { width:46px; height:24px; border:2px solid #fff; position:relative; transition:border-color .2s; }
  .sw::after { content:""; position:absolute; top:2px; left:2px; width:16px; height:16px; background:#4ADE80; transition:transform .2s cubic-bezier(.5,1.6,.4,.9), background .2s; }
  body.outage .sw::after { transform:translateX(22px); background:var(--orange); }

  /* ===== OUTAGE MODE ===== */
  .cloud-dep { transition:opacity .4s, filter .4s; }
  body.outage .cloud-dep { opacity:.28; filter:grayscale(1); pointer-events:none; }
  body.outage .cloud-dep::before { content:"LINK LOST"; }
  .net-tag { font-family:"IBM Plex Mono",monospace; font-size:10px; font-weight:600; letter-spacing:1.5px; padding:2px 8px; border:1.5px solid currentColor; margin-left:10px; vertical-align:middle; }
  .net-tag.cloud { color:var(--steel); }
  .net-tag.edge { color:var(--ok); }
  body.outage .net-tag.cloud { color:var(--orange); }
  body.outage .net-tag.cloud::after { content:" ✕"; }

  /* safety loop pill — always alive */
  #pulse { position:fixed; left:18px; bottom:18px; z-index:80; background:var(--ink); color:#fff; font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:1.5px; padding:9px 14px; display:flex; gap:9px; align-items:center; border:2px solid var(--ink); }
  #pulse .dot { width:9px; height:9px; border-radius:50%; background:#4ADE80; animation:beat 1.4s ease-in-out infinite; }
  @keyframes beat { 0%,100%{transform:scale(1);opacity:.7} 50%{transform:scale(1.35);opacity:1} }
  body.outage #pulse { border-color:var(--orange); }
  body.outage #pulse .dot { animation-duration:.9s; }
  @media (max-width:640px){ #pulse{font-size:10px;padding:7px 10px;} }

  /* ===== HERO ===== */
  header { border-bottom:2px solid var(--ink); position:relative; overflow:hidden; }
  .hero { display:grid; grid-template-columns:minmax(0,1fr) 400px; gap:48px; padding:76px 0 64px; align-items:start; position:relative; }
  @media (max-width:1100px){ .hero{grid-template-columns:minmax(0,1fr) 330px; gap:34px;} }
  @media (max-width:840px){ .hero{grid-template-columns:1fr; gap:48px;} }
  .doc-ref { font-family:"IBM Plex Mono",monospace; font-size:12px; letter-spacing:2px; color:var(--steel); display:flex; gap:22px; flex-wrap:wrap; margin-bottom:30px; }
  .doc-ref b { color:var(--orange); font-weight:600; }
  .edition { color:#fff !important; background:var(--orange); padding:2px 8px; letter-spacing:1.5px; }

  h1 { font-size:clamp(38px,6.4vw,82px); font-weight:900; font-stretch:112%; line-height:.94; letter-spacing:-2px; text-transform:uppercase; margin-bottom:30px; }
  h1 .row { display:block; overflow:hidden; }
  h1 .row span { display:inline-block; transform:translateY(115%); transition:transform .9s cubic-bezier(.16,1,.3,1); }
  body.loaded h1 .row span { transform:translateY(0); }
  h1 .row:nth-child(1) span{transition-delay:.05s;} h1 .row:nth-child(2) span{transition-delay:.15s;} h1 .row:nth-child(3) span{transition-delay:.25s;}
  h1 .outline { color:transparent; -webkit-text-stroke:2px var(--ink); }
  h1 .accent { color:var(--orange); display:inline-block; }
  /* faulty-sign flicker on "doesn't." during outage */
  body.outage h1 .accent { animation:faulty 1.8s steps(1) infinite; }
  @keyframes faulty { 0%,7%,9%,50%,54%,100%{opacity:1} 8%,51%,53%{opacity:.15} }

  .lede { font-size:18px; color:#3c3f47; max-width:600px; margin-bottom:36px; opacity:0; transform:translateY(14px); transition:all .7s ease .5s; }
  body.loaded .lede { opacity:1; transform:none; }
  .lede strong { color:var(--ink); }
  .try-me { font-family:"IBM Plex Mono",monospace; font-size:12.5px; color:var(--orange); font-weight:600; letter-spacing:1px; }
  .try-me::before { content:"↗ "; }

  .cta-row { display:flex; gap:14px; flex-wrap:wrap; opacity:0; transform:translateY(14px); transition:all .7s ease .65s; }
  body.loaded .cta-row { opacity:1; transform:none; }
  .btn { display:inline-block; padding:15px 30px; font-family:"IBM Plex Mono",monospace; font-size:14px; font-weight:600; letter-spacing:1px; text-decoration:none; text-transform:uppercase; border:2px solid var(--ink); transition:all .18s; cursor:pointer; background:var(--paper); color:var(--ink); }
  .btn-primary { background:var(--orange); border-color:var(--orange); color:#fff; box-shadow:5px 5px 0 var(--ink); }
  .btn-primary:hover { transform:translate(-2px,-2px); box-shadow:8px 8px 0 var(--ink); }
  .btn-primary:active { transform:translate(3px,3px); box-shadow:1px 1px 0 var(--ink); }
  .btn-ghost:hover { background:var(--ink); color:#fff; }

  .stamp { position:absolute; top:70px; right:430px; z-index:3; font-family:"IBM Plex Mono",monospace; font-size:13px; font-weight:600; letter-spacing:3px; color:var(--orange); border:3px solid var(--orange); padding:10px 20px; text-transform:uppercase; transform:rotate(-12deg) scale(3); opacity:0; border-radius:4px; transition:transform .35s cubic-bezier(.5,1.8,.4,.8) 1.1s, opacity .2s ease 1.1s; mix-blend-mode:multiply; pointer-events:none; }
  body.loaded .stamp { transform:rotate(-12deg) scale(1); opacity:.9; }
  @media (max-width:1060px){ .stamp{right:24px;top:40px;} }
  @media (max-width:840px){ .stamp{display:none;} }

  /* badge — draggable */
  .badge-zone { position:relative; padding:26px 30px 30px 0; justify-self:center; width:100%; }
  .badge { border:2px solid var(--ink); background:var(--panel); box-shadow:8px 8px 0 var(--orange); opacity:0; transform:translateY(20px); transition:opacity .8s cubic-bezier(.16,1,.3,1) .4s, transform .8s cubic-bezier(.16,1,.3,1) .4s; cursor:grab; touch-action:none; position:relative; z-index:4; overflow:hidden; }
  body.loaded .badge { opacity:1; transform:none; }
  .badge.dragging { cursor:grabbing; transition:none !important; box-shadow:14px 18px 0 rgba(255,65,0,.5); }
  .badge.snapback { transition:transform .55s cubic-bezier(.3,1.6,.4,.9) !important; }
  .badge-head { background:var(--ink); color:#fff; font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:2px; padding:8px 14px; display:flex; justify-content:space-between; }
  .badge-head .live { color:#4ADE80; animation:blink 2s ease-in-out infinite; }
  body.outage .badge-head .live { color:var(--orange); }
  @keyframes blink { 0%,100%{opacity:.45} 50%{opacity:1} }
  .badge-photo { position:relative; width:100%; aspect-ratio:1/1; overflow:hidden; }
  .badge img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center var(--photo-focus); display:block; filter:contrast(1.04); pointer-events:none; transform:scale(var(--photo-zoom)); transform-origin:center var(--photo-focus); }
  .badge-foot { padding:12px 14px; border-top:2px solid var(--ink); }
  .badge-foot .nm { font-weight:800; font-size:15px; text-transform:uppercase; letter-spacing:.5px; }
  .badge-foot .rl { font-family:"IBM Plex Mono",monospace; font-size:11.5px; color:var(--steel); letter-spacing:1px; }
  .badge-bars { display:flex; gap:3px; margin-top:10px; height:16px; }
  .badge-bars i { background:var(--ink); width:3px; }
  .badge-bars i:nth-child(3n){width:6px;} .badge-bars i:nth-child(5n){width:2px;background:var(--orange);}
  .quickspec { margin-top:26px; border:2px solid var(--ink); background:var(--panel); font-family:"IBM Plex Mono",monospace; }
  .quickspec div { display:flex; justify-content:space-between; gap:12px; padding:9px 14px; border-bottom:1px solid var(--hairline); font-size:11.5px; letter-spacing:.5px; }
  .quickspec div:last-child { border-bottom:0; }
  .quickspec span { color:var(--steel); letter-spacing:1.5px; }
  .quickspec b { font-weight:600; text-align:right; }
  .quickspec b.avail { color:var(--ok); }
  .quickspec b.avail::before { content:"● "; }
  body.outage .quickspec b.avail { color:var(--orange); }

  .drag-hint { position:absolute; bottom:8px; right:34px; font-family:"IBM Plex Mono",monospace; font-size:10px; letter-spacing:1px; color:var(--steel); }
  @media (hover:none){ .drag-hint{display:none;} }

  .dim { position:absolute; font-family:"IBM Plex Mono",monospace; font-size:10px; letter-spacing:1px; color:var(--steel); }
  .dim-r { top:26px; bottom:30px; right:6px; width:14px; border-right:1px solid var(--steel); }
  .dim-r::before,.dim-r::after { content:""; position:absolute; right:-4px; width:9px; height:1px; background:var(--steel); }
  .dim-r::before{top:0;} .dim-r::after{bottom:0;}
  .dim-r span { position:absolute; top:50%; right:-32px; transform:rotate(90deg); white-space:nowrap; }
  .dim-t { top:4px; left:0; right:30px; height:14px; border-top:1px solid var(--steel); }
  .dim-t::before,.dim-t::after { content:""; position:absolute; top:-4px; height:9px; width:1px; background:var(--steel); }
  .dim-t::before{left:0;} .dim-t::after{right:0;}
  .dim-t span { position:absolute; top:-18px; left:50%; transform:translateX(-50%); white-space:nowrap; }
  @media (max-width:840px){ .badge-zone{max-width:400px;padding-right:26px;} }

  .ticker { border-top:2px solid var(--ink); background:var(--panel); overflow:hidden; }
  .ticker-track { display:flex; width:max-content; animation:tick 32s linear infinite; }
  .ticker:hover .ticker-track { animation-play-state:paused; }
  .ticker-track span { font-family:"IBM Plex Mono",monospace; font-size:13px; letter-spacing:1.5px; padding:13px 28px; border-right:1px solid var(--hairline); white-space:nowrap; }
  .ticker-track span b { color:var(--orange); font-weight:600; }
  .ticker-track .live-slot i { font-style:normal; color:#16A34A; }
  #dataSrc { color:var(--steel); font-weight:400; cursor:help; }
  #dataSrc.live { color:#16A34A; }
  @keyframes tick { to{transform:translateX(-50%);} }

  /* ===== AEGIS SIM ===== */
  #sim-sec { background:rgba(255,255,255,.5); }
  .sim-shell { border:2px solid var(--ink); background:var(--ink); }
  .sim-bar { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:9px 16px; font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:1.5px; color:#B9BDC7; border-bottom:2px solid #2A2C33; flex-wrap:wrap; }
  .sim-bar b { color:var(--orange); font-weight:600; }
  .sim-bar .rec { color:#EF4444; animation:blink 1.2s steps(1) infinite; }
  #simCv { width:100%; display:block; background:#0E0F13; }
  .sim-foot { display:grid; grid-template-columns:repeat(4,1fr); border-top:2px solid #2A2C33; font-family:"IBM Plex Mono",monospace; }
  @media (max-width:640px){ .sim-foot{grid-template-columns:1fr 1fr;} }
  .sim-cell { padding:12px 16px; border-right:2px solid #2A2C33; }
  .sim-cell:last-child { border-right:0; }
  @media (max-width:640px){ .sim-cell:nth-child(2){border-right:0;} .sim-cell:nth-child(-n+2){border-bottom:2px solid #2A2C33;} }
  .sim-cell .k { font-size:10px; letter-spacing:1.5px; color:#6B7280; }
  .sim-cell .v { font-size:16px; font-weight:600; color:#fff; margin-top:2px; }
  .sim-cell .v.safe { color:#4ADE80; }
  .sim-cell .v.warn { color:#FBBF24; }
  .sim-cell .v.alarm { color:#EF4444; }
  .sim-cell .v.orange { color:var(--orange); }
  .sim-shell.alarm-flash { animation:alarmb .5s steps(2) infinite; }
  @keyframes alarmb { 50% { box-shadow:0 0 0 5px var(--orange); } }
  .sim-note { font-family:"IBM Plex Mono",monospace; font-size:12.5px; color:var(--steel); margin-top:16px; letter-spacing:.3px; }
  .sim-note b { color:var(--orange); font-weight:600; }

  /* ===== SHOWCASE CAROUSEL ===== */
  .showcase { border:2px solid var(--ink); background:var(--panel); margin-bottom:40px; overflow:hidden; position:relative; }
  .rail { display:flex; transition:transform .55s cubic-bezier(.7,0,.2,1); }
  .slide { min-width:100%; display:grid; grid-template-columns:1fr 1fr; }
  @media (max-width:760px){ .slide{grid-template-columns:1fr;} }
  .slide-viz { background:var(--ink); padding:34px; display:flex; align-items:center; justify-content:center; min-height:280px; }
  .slide-viz svg { width:100%; max-width:420px; height:auto; }
  .slide-txt { padding:34px 36px; display:flex; flex-direction:column; justify-content:center; }
  .slide-txt .sk { font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:2px; color:var(--steel); margin-bottom:8px; }
  .slide-txt h3 { font-size:30px; font-weight:900; text-transform:uppercase; letter-spacing:-1px; margin-bottom:6px; }
  .slide-txt .tg { color:var(--orange); font-weight:600; font-size:15px; margin-bottom:12px; }
  .slide-txt p { color:#3c3f47; font-size:15px; margin-bottom:18px; }
  .slide-txt a { align-self:flex-start; font-family:"IBM Plex Mono",monospace; font-size:12.5px; font-weight:600; letter-spacing:1px; color:var(--ink); text-decoration:none; border:2px solid var(--ink); padding:8px 16px; transition:all .18s; }
  .slide-txt a:hover { background:var(--orange); border-color:var(--orange); color:#fff; }
  .show-nav { display:flex; justify-content:space-between; align-items:center; border-top:2px solid var(--ink); }
  .show-nav .dots { display:flex; gap:8px; padding:0 18px; }
  .show-nav .dots i { width:26px; height:5px; background:var(--hairline); cursor:pointer; transition:background .2s; }
  .show-nav .dots i.on { background:var(--orange); }
  .show-nav button { background:var(--panel); border:0; border-left:2px solid var(--ink); font-family:"IBM Plex Mono",monospace; font-size:13px; font-weight:600; letter-spacing:1px; padding:14px 24px; cursor:pointer; transition:all .15s; color:var(--ink); }
  .show-nav button:first-of-type { border-left:0; border-right:2px solid var(--ink); }
  .show-nav button:hover { background:var(--orange); color:#fff; }
  .show-nav button:active { background:var(--ink); }

  /* SVG schematic animations — run only on active slide */
  .slide .flow { stroke-dasharray:6 8; }
  .slide.active .flow { animation:dashflow 1s linear infinite; }
  @keyframes dashflow { to { stroke-dashoffset:-14; } }
  .slide.active .relay-blip { animation:relayblip 2.4s steps(1) infinite; }
  @keyframes relayblip { 0%,55%,100%{fill:#2A2C33} 60%,80%{fill:#FF4100} }
  .slide.active .stagefill { animation:stagef 3s linear infinite; }
  .slide.active .stagefill:nth-of-type(2){ animation-delay:.6s; }
  .slide.active .stagefill:nth-of-type(3){ animation-delay:1.2s; }
  .slide.active .stagefill:nth-of-type(4){ animation-delay:1.8s; }
  .slide.active .stagefill:nth-of-type(5){ animation-delay:2.4s; }
  @keyframes stagef { 0%,18%{fill:#FF4100} 20%,100%{fill:#2A2C33} }
  .slide.active .conflict { animation:confl 3.2s steps(1) infinite; }
  @keyframes confl { 0%,30%{fill:#EF4444} 35%,100%{fill:#4ADE80} }
  .slide.active .drop { animation:dropin 2.2s ease-in infinite; }
  .slide.active .drop:nth-of-type(2){ animation-delay:.7s; }
  .slide.active .drop:nth-of-type(3){ animation-delay:1.4s; }
  @keyframes dropin { 0%{transform:translateY(-46px);opacity:0} 25%{opacity:1} 80%{transform:translateY(38px);opacity:1} 100%{transform:translateY(44px);opacity:0} }

  /* daily principle highlight */
  .prin > div.today { background:#FFF0E8; position:relative; }
  .prin > div.today::after { content:"TODAY'S DRILL"; position:absolute; top:12px; right:12px; font-family:"IBM Plex Mono",monospace; font-size:9.5px; font-weight:600; letter-spacing:1.5px; color:#fff; background:var(--orange); padding:3px 8px; }

  /* parallax ghost numerals */
  .ghost-no { will-change:transform; }

  /* ===== SECTIONS ===== */
  section { padding:96px 0; border-bottom:2px solid var(--ink); position:relative; overflow:hidden; background:var(--paper); transition:background .6s ease; }
  /* each section is a different channel: a 6% wash of its own signal colour */
  #sim-sec    { background:color-mix(in srgb, var(--ch-sim) 7%, var(--paper)); }
  #work       { background:color-mix(in srgb, var(--ch-work) 6%, var(--paper)); }
  #principles { background:color-mix(in srgb, var(--ch-prin) 6%, var(--paper)); }
  #experience { background:color-mix(in srgb, var(--ch-exp) 6%, var(--paper)); }
  #contact    { background:var(--paper); }
  .ghost-no { position:absolute; top:24px; right:-10px; font-size:clamp(140px,22vw,280px); font-weight:900; color:transparent; -webkit-text-stroke:1.5px var(--hairline); line-height:1; pointer-events:none; user-select:none; font-stretch:112%; }
  .sec-head { display:flex; align-items:baseline; gap:20px; margin-bottom:48px; flex-wrap:wrap; }
  .sec-no { font-family:"IBM Plex Mono",monospace; font-size:14px; font-weight:600; color:#fff; background:var(--orange); padding:4px 12px; letter-spacing:1px; }
  h2 { font-size:clamp(30px,5vw,52px); font-weight:900; text-transform:uppercase; letter-spacing:-1.5px; }

  .spec { display:grid; grid-template-columns:96px 1fr; border:2px solid var(--ink); background:var(--panel); margin-bottom:22px; transition:box-shadow .18s, transform .18s; }
  .spec:hover { transform:translate(-4px,-4px); box-shadow:8px 8px 0 var(--orange); }
  .spec:hover .spec-idx { background:var(--orange); color:#fff; }
  @media (max-width:640px){ .spec{grid-template-columns:1fr;} .spec-idx{border-right:0!important;border-bottom:2px solid var(--ink);padding:10px 18px!important;justify-content:flex-start!important;} }
  .spec-idx { border-right:2px solid var(--ink); display:flex; align-items:flex-start; justify-content:center; padding:26px 0; font-family:"IBM Plex Mono",monospace; font-size:28px; font-weight:600; color:var(--orange); transition:background .18s,color .18s; }
  .spec-body { padding:28px 30px; }
  .spec-top { display:flex; justify-content:space-between; align-items:baseline; gap:14px; flex-wrap:wrap; margin-bottom:4px; }
  .spec h3 { font-size:26px; font-weight:900; text-transform:uppercase; letter-spacing:-.5px; }
  .spec h3 a { color:var(--ink); text-decoration:none; }
  .spec h3 a:hover { color:var(--orange); }
  .spec .tech { font-family:"IBM Plex Mono",monospace; font-size:12px; color:var(--steel); letter-spacing:.5px; }
  .spec .tagline { color:var(--orange); font-weight:600; font-size:15px; margin-bottom:10px; }
  .spec p { color:#3c3f47; font-size:15.5px; }
  .spec p em { color:var(--ink); font-weight:600; font-style:normal; border-bottom:2px solid var(--orange); }
  .award { display:inline-block; align-self:flex-start; margin-top:2px; font-family:"IBM Plex Mono",monospace; font-size:12px; font-weight:600; letter-spacing:1px; color:#fff; background:var(--ink); padding:5px 12px; }
  .award b { color:var(--orange); font-weight:600; }

  .more-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:16px; margin-top:36px; }
  @media (max-width:640px){ .more-grid{grid-template-columns:1fr;} }
  .mini { border:2px solid var(--ink); background:var(--panel); padding:20px 22px; transition:box-shadow .18s,transform .18s; }
  .mini:hover { transform:translate(-3px,-3px); box-shadow:5px 5px 0 var(--orange); }
  .mini h4 { font-size:16px; font-weight:900; text-transform:uppercase; margin-bottom:4px; }
  .mini h4 a { color:var(--ink); text-decoration:none; }
  .mini h4 a:hover { color:var(--orange); }
  .mini p { color:var(--steel); font-size:14px; }

  .stats { display:grid; grid-template-columns:repeat(4,1fr); border:2px solid var(--ink); background:var(--panel); margin-top:40px; }
  @media (max-width:640px){ .stats{grid-template-columns:1fr 1fr;} }
  .stat { padding:26px 16px; text-align:center; border-right:2px solid var(--ink); }
  .stat:last-child { border-right:0; }
  @media (max-width:640px){ .stat:nth-child(2){border-right:0;} .stat:nth-child(-n+2){border-bottom:2px solid var(--ink);} }
  .stat .num { font-size:clamp(30px,4.6vw,46px); font-weight:900; color:var(--orange); font-variant-numeric:tabular-nums; letter-spacing:-1px; }
  .stat .lbl { font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:1.5px; color:var(--steel); margin-top:4px; }

  .prin { display:grid; grid-template-columns:1fr 1fr; border:2px solid var(--ink); background:var(--panel); }
  @media (max-width:640px){ .prin{grid-template-columns:1fr;} }
  .prin>div { padding:30px; border-right:2px solid var(--ink); border-bottom:2px solid var(--ink); transition:background .2s; }
  .prin>div:hover { background:#FFF4EF; }
  .prin>div:nth-child(2n){border-right:0;} .prin>div:nth-child(n+3){border-bottom:0;}
  @media (max-width:640px){ .prin>div{border-right:0!important;border-bottom:2px solid var(--ink)!important;} .prin>div:last-child{border-bottom:0!important;} }
  .prin .pn { font-family:"IBM Plex Mono",monospace; font-size:12px; font-weight:600; color:var(--orange); letter-spacing:2px; margin-bottom:8px; }
  .prin h3 { font-size:18px; font-weight:900; text-transform:uppercase; margin-bottom:6px; }
  .prin p { color:#3c3f47; font-size:15px; }

  .xp { display:grid; grid-template-columns:180px 1fr; gap:8px 30px; padding:28px 0; border-top:1px solid var(--hairline); }
  .xp:first-of-type { border-top:0; }
  @media (max-width:640px){ .xp{grid-template-columns:1fr;} }
  .xp .when { font-family:"IBM Plex Mono",monospace; font-size:13px; color:var(--steel); padding-top:4px; }
  .xp h3 { font-size:18px; font-weight:900; text-transform:uppercase; }
  .xp .org { color:var(--orange); font-weight:600; font-size:14.5px; margin-bottom:6px; }
  .xp p { color:#3c3f47; font-size:15px; }

  #contact { border-bottom:0; }
  .contact-inner { border:2px solid var(--ink); background:var(--ink); color:#fff; padding:56px 52px; position:relative; overflow:hidden; }
  @media (max-width:640px){ .contact-inner{padding:38px 24px;} }
  .contact-inner::after { content:"GK-001"; position:absolute; bottom:-30px; right:-8px; font-size:150px; font-weight:900; color:transparent; -webkit-text-stroke:1px rgba(255,255,255,.12); pointer-events:none; font-stretch:112%; }
  .contact-inner h2 { color:#fff; margin-bottom:12px; }
  .contact-inner p { color:#B9BDC7; max-width:560px; margin-bottom:28px; }
  .contact-links { display:flex; gap:14px; flex-wrap:wrap; position:relative; z-index:1; }
  .contact-links a { font-family:"IBM Plex Mono",monospace; font-size:13.5px; font-weight:600; letter-spacing:1px; color:#fff; text-decoration:none; border:2px solid #fff; padding:11px 20px; transition:all .18s; }
  .contact-links a:hover { background:var(--orange); border-color:var(--orange); }
  .contact-links a.primary { background:var(--orange); border-color:var(--orange); }
  .contact-links a.primary:hover { background:#fff; border-color:#fff; color:var(--ink); }
  .contact-links button { font-family:"IBM Plex Mono",monospace; font-size:13.5px; font-weight:600; letter-spacing:1px; color:#fff; background:var(--orange); border:2px solid var(--orange); padding:11px 20px; cursor:pointer; transition:all .18s; }
  .contact-links button:hover { background:#fff; border-color:#fff; color:var(--ink); }
  .contact-links button:active { transform:translateY(2px); }

  /* copy confirmation: reads like a dispatch receipt */
  #copyToast { position:fixed; left:50%; bottom:-90px; transform:translateX(-50%); z-index:120; background:var(--ink); color:#fff; border:2px solid var(--orange); font-family:"IBM Plex Mono",monospace; font-size:12.5px; letter-spacing:1.5px; padding:12px 20px; display:flex; gap:12px; align-items:center; transition:bottom .35s cubic-bezier(.2,1.4,.4,1); box-shadow:5px 5px 0 var(--orange); }
  #copyToast.show { bottom:26px; }
  #copyToast b { color:var(--orange); font-weight:600; }
  #copyToast .tick { color:#4ADE80; }
  @media (max-width:640px){ #copyToast{font-size:11px;padding:10px 14px;gap:8px;} }

  .name-plate { padding:60px 0 20px; overflow:hidden; }
  .name-track { display:flex; width:max-content; animation:namescroll 24s linear infinite; }
  .name-track div { font-size:clamp(60px,12.5vw,170px); font-weight:900; font-stretch:112%; text-transform:uppercase; letter-spacing:-4px; line-height:.9; color:transparent; -webkit-text-stroke:2px var(--ink); white-space:nowrap; transition:color .3s,-webkit-text-stroke .3s; user-select:none; padding-right:.4em; }
  .name-plate:hover .name-track div { color:var(--orange); -webkit-text-stroke:2px var(--orange); }
  .name-plate:hover .name-track { animation-play-state:paused; }
  @keyframes namescroll { to { transform:translateX(-50%); } }
  @media (prefers-reduced-motion:reduce){ .name-track { animation:none; } }
  footer .meta { display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap; font-family:"IBM Plex Mono",monospace; font-size:12px; color:var(--steel); letter-spacing:1px; padding:14px 0 30px; }
  footer .meta button { background:none; border:0; font:inherit; color:inherit; letter-spacing:inherit; cursor:pointer; }
  footer .meta button:hover { color:var(--orange); }

  /* ===== TERMINAL ===== */
  #term { position:fixed; left:0; right:0; bottom:0; height:0; background:var(--ink); color:#D7DBE4; z-index:150; overflow:hidden; transition:height .3s cubic-bezier(.2,.8,.2,1); border-top:3px solid var(--orange); font-family:"IBM Plex Mono",monospace; font-size:13px; }
  #term.open { height:min(46vh,380px); }
  #term .inner { padding:16px 20px; height:100%; display:flex; flex-direction:column; }
  #termOut { flex:1; overflow-y:auto; white-space:pre-wrap; line-height:1.7; }
  #termOut b { color:var(--orange); font-weight:600; }
  #termOut .ok { color:#4ADE80; }
  #termLine { display:flex; gap:8px; padding-top:8px; }
  #termLine .ps { color:var(--orange); }
  #termIn { flex:1; background:none; border:0; outline:0; color:#fff; font:inherit; }

  /* live inspection log (desktop) */
  #log { position:fixed; right:16px; bottom:16px; z-index:80; width:230px; font-family:"IBM Plex Mono",monospace; font-size:10.5px; line-height:1.8; color:var(--steel); pointer-events:none; text-align:right; }
  #log div b { color:var(--orange); font-weight:600; }
  @media (max-width:1200px){ #log{display:none;} }

  .reveal { opacity:0; transform:translateY(30px); transition:opacity .65s cubic-bezier(.16,1,.3,1), transform .65s cubic-bezier(.16,1,.3,1); }
  .reveal.in { opacity:1; transform:none; }

  @media (prefers-reduced-motion:reduce) {
    *,*::before,*::after { animation:none !important; transition:none !important; }
    #boot { display:none; }
    h1 .row span,.lede,.cta-row,.badge,.stamp { transform:none !important; opacity:1 !important; }
    .reveal { opacity:1; transform:none; }
    #chx,#chy,#coord,#log { display:none; }
  }

  /* ===== THE SURPRISE: PRINT = INSTANT SPEC-SHEET RESUME =====
     Ctrl+P anywhere and the site collapses into a clean, ink-friendly
     one-pager a recruiter can save as PDF. The document was always a document. */
  @media print {
    body { background:#fff !important; background-image:none !important; font-size:11pt; }
    #boot,#chx,#chy,#coord,#log,#pulse,#term,.killswitch,.ticker,.scroll-hint,
    #sim-sec,.stamp,.drag-hint,.dim,.ghost-no,.hazard,.name-plate,.slide-viz,.quickspec,
    .cta-row,.show-nav,footer .meta button { display:none !important; }
    .topbar { position:static; background:#fff; border-bottom:3px solid #14151A; }
    .topbar a, .topbar .lbl { color:#14151A !important; }
    header,section { border-bottom:1.5px solid #14151A; padding:18pt 0; min-height:0; page-break-inside:avoid; }
    .hero { grid-template-columns:1fr 120pt; gap:20pt; padding:12pt 0; }
    h1 { font-size:26pt; letter-spacing:-1px; }
    .badge { box-shadow:none; }
    .badge-zone { padding:0; }
    .showcase { border:1.5px solid #14151A; overflow:visible; margin-bottom:14pt; }
    .rail { display:block; transform:none !important; }
    .slide { display:block; min-width:0; page-break-inside:avoid; border-bottom:1px solid #DEDED7; }
    .slide-txt { padding:10pt 14pt; }
    .slide-txt a { border:0; padding:0; }
    .slide-txt a::after { content:" · " attr(href); font-size:8pt; color:#6B7280; }
    .spec,.mini,.prin,.stats,.contact-inner { box-shadow:none !important; transform:none !important; border-width:1.5px; }
    .spec:hover { transform:none; }
    .contact-inner { background:#fff; color:#14151A; border:1.5px solid #14151A; }
    .contact-inner h2,.contact-inner p { color:#14151A; }
    .contact-inner::after { display:none; }
    .contact-links a { color:#14151A; border-color:#14151A; }
    .contact-links a.primary { background:#fff; color:#14151A; }
    .contact-links a::after { content:" · " attr(href); font-size:8.5pt; color:#6B7280; }
    .contact-links button { color:#14151A !important; background:#fff !important; border-color:#14151A !important; }
    .contact-links button::after { content:" · " attr(data-mail); font-size:8.5pt; color:#6B7280; }
    .reveal { opacity:1 !important; transform:none !important; }
    a { text-decoration:none; color:#14151A; }
    .spec h3 a::after { content:" · " attr(href); font-size:8pt; color:#6B7280; font-weight:400; text-transform:none; }
  }
