/* =====================================================================
   jamessoldier.com — retro CRT theme
   Two modes, one stylesheet:
     body[data-frame="full"]  → monitor-on-a-desk scene (home, thoughts,
                                 posts, engineering hub, for-ai-agents).
                                 Scene chrome is injected by /site.js.
     body[data-frame="lite"]  → full-width retro document (long eng docs).
   ===================================================================== */

:root{
  --beige:#d6cfc0;
  --beige-dark:#b8b0a0;
  --beige-shadow:#8f8878;
  --beige-light:#ece6d9;
  --screen-bg:#0a0e14;
  --screen-glow:rgba(120,180,255,.06);
  --txt:#cfd8e3;
  --dim:#7d8a99;
  --cyan:#56c8d8;
  --yellow:#e8c462;
  --green:#7ec979;
  --magenta:#d077c9;
  --link:#7db8f0;
  --cable:#8a8273;
  --mono:"IBM Plex Mono","JetBrains Mono","Courier New",ui-monospace,monospace;

  /* aliases consumed by the document/kit rules below */
  --bg:#0a0e14;
  --surface:#11161d;
  --text:#cfd8e3;
  --muted:#7d8a99;
  --accent:#7db8f0;
  --border:#26303f;
  --max:820px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;padding:0;
  font-family:var(--mono);
  background:var(--screen-bg);
  color:var(--txt);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

/* =====================================================================
   DOCUMENT BASE  (styles the lite docs; also a graceful fallback for
   framed pages before/without JS). Retro palette, mono, readable.
   ===================================================================== */
a{color:var(--link);text-decoration:none;border-bottom:1px solid transparent;transition:border-color .12s ease,color .12s ease}
a:hover{color:#fff;border-bottom-color:var(--link)}
code{font-family:var(--mono)}

.container{max-width:var(--max);margin:0 auto;padding:0 24px}

.hero{padding:80px 0 40px;border-bottom:1px dashed var(--border)}
.eyebrow{margin:0 0 12px;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--green)}
.hero h1{margin:0 0 12px;font-size:clamp(2rem,5vw,3rem);font-weight:700;letter-spacing:.01em;color:#fff;text-shadow:0 0 18px rgba(125,184,240,.3)}
.tagline{margin:0 0 26px;color:var(--dim);font-size:1.05rem;max-width:62ch;font-style:italic}
.links{display:flex;flex-wrap:wrap;gap:18px;font-size:.9rem}

main section{padding:48px 0;border-bottom:1px dashed var(--border)}
main section:last-of-type{border-bottom:none}
h2{margin:0 0 20px;font-size:1.25rem;font-weight:600;color:var(--yellow)}
h3{margin:0 0 6px;font-size:1.05rem;font-weight:600}

/* sub-page header */
.subhero{padding:56px 0 28px;border-bottom:1px dashed var(--border)}
.subhero h1{margin:0 0 8px;font-size:clamp(1.6rem,3.5vw,2.1rem);font-weight:700;color:#fff;text-shadow:0 0 16px rgba(125,184,240,.28)}
.subhero p{margin:0 0 18px;color:var(--dim);max-width:64ch}
.subhero .back,.back{font-size:.85rem;color:var(--dim)}

/* post list (/thoughts) */
.post-list{list-style:none;margin:0;padding:0;display:grid;gap:24px}
.post-list li{display:grid;grid-template-columns:150px 1fr;gap:20px;align-items:baseline}
.post-list .date{font-size:.85rem;color:var(--green)}
.post-list h3{margin:0 0 4px;font-size:1.1rem}
.post-list h3 a{color:var(--cyan);border-bottom:none}
.post-list h3 a:hover{color:#fff}
.post-list p{margin:0;color:var(--dim);font-size:.95rem}

/* article body (posts, guidelines, ai-agents) */
.article-body{padding:36px 0 56px}
.article-body p,.article-body li{color:var(--txt)}
.article-body p{margin:0 0 1em;max-width:70ch}
.article-body h2{margin:36px 0 14px;font-size:1.15rem}
.article-body h3{margin:26px 0 10px;font-size:1rem;color:var(--cyan)}
.article-body ul,.article-body ol{margin:0 0 1em;padding-left:1.25em}
.article-body li{margin-bottom:6px}
.article-body li::marker{color:var(--dim)}
.article-body blockquote{margin:1em 0;padding:6px 16px;border-left:3px solid var(--border);color:var(--dim)}
.article-body code{font-size:.9em;background:var(--surface);padding:1px 6px;border-radius:4px;color:#bcd0e6}
.article-body pre{background:#070b11;border:1px solid #1c2530;border-radius:8px;padding:14px 16px;overflow-x:auto}
.article-body pre code{background:none;padding:0}
.article-body hr{border:none;border-top:1px dashed var(--border);margin:32px 0}

.post-meta{font-size:.8rem;color:var(--dim);letter-spacing:.06em;text-transform:uppercase}

/* cards / grid (projects, engineering hub) */
.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:18px 20px}
.card h3{margin-bottom:6px;color:var(--cyan)}
.card p{margin:0 0 6px;color:var(--dim);font-size:.95rem}
.card .meta{font-size:.75rem;color:var(--dim);text-transform:uppercase;letter-spacing:.08em;margin-top:10px}
.card-link{display:block;color:inherit;border-bottom:none}
.card-link:hover{border-color:var(--link);background:rgba(125,184,240,.05)}
.card-link h3{color:var(--cyan)}
.card-link:hover h3{color:#fff}

ul.inline{list-style:none;padding:0;margin:12px 0 0;display:flex;flex-wrap:wrap;gap:18px}

footer{padding:28px 0 40px;color:var(--dim);font-size:.9rem;border-top:1px dashed var(--border)}

/* =====================================================================
   LITE PAGE chrome — full-width retro doc with scanlines
   ===================================================================== */
body[data-frame="lite"]{background:var(--screen-bg)}
body[data-frame="lite"]::before{
  content:"";position:fixed;inset:0;z-index:9999;pointer-events:none;
  background:
    repeating-linear-gradient(0deg, rgba(0,0,0,.10) 0 1px, transparent 1px 3px),
    radial-gradient(ellipse at 50% 0%, rgba(120,180,255,.05) 0%, transparent 60%);
}
@media (prefers-reduced-motion: no-preference){
  body[data-frame="lite"]::after{
    content:"";position:fixed;left:0;right:0;top:-120px;height:120px;z-index:9998;pointer-events:none;
    background:linear-gradient(180deg, rgba(125,184,240,.05), transparent);
    animation:scan 7s linear infinite;
  }
}
@keyframes scan{from{top:-120px}to{top:100%}}

/* =====================================================================
   EMBEDDED LONG-FORM DOCS (architecture ref, build guide, detection kit)
   Recolored via the variables above.
   ===================================================================== */
.doc-intro{margin:0 0 8px}
.doc-downloads{margin:0 0 16px;color:var(--dim);font-size:.9rem}
.doc-downloads a{color:var(--link)}
.doc-embed{margin:0 0 8px;border:1px solid var(--border);border-radius:8px;background:var(--surface);overflow:hidden}
.doc-embed>summary{list-style:none;cursor:pointer;padding:10px 14px;font-size:.85rem;color:var(--dim);user-select:none}
.doc-embed>summary::-webkit-details-marker{display:none}
.doc-embed>summary:hover{background:rgba(255,255,255,.02);color:var(--cyan)}
.doc-embed>summary::before{content:"▸";display:inline-block;width:10px;margin-right:8px;transition:transform .12s ease}
.doc-embed[open]>summary::before{transform:rotate(90deg)}
.doc-embed[open]>summary{border-bottom:1px solid var(--border)}
.doc-rendered{padding:20px 20px 8px;background:var(--bg)}
.doc-rendered h1,.doc-rendered h2,.doc-rendered h3,.doc-rendered h4{font-weight:600;letter-spacing:-.01em;color:var(--yellow)}
.doc-rendered h1{margin:28px 0 12px;font-size:1.2rem}
.doc-rendered h2{margin:24px 0 10px;font-size:1.05rem}
.doc-rendered h3{margin:20px 0 8px;font-size:.98rem;color:var(--cyan)}
.doc-rendered h4{margin:16px 0 6px;font-size:.92rem;color:var(--dim)}
.doc-rendered p{margin:0 0 1em}
.doc-rendered ul,.doc-rendered ol{margin:0 0 1em;padding-left:1.25em}
.doc-rendered li{margin-bottom:4px}
.doc-rendered li::marker{color:var(--dim)}
.doc-rendered blockquote{margin:1em 0;padding:6px 16px;border-left:3px solid var(--border);color:var(--dim)}
.doc-rendered code{font-size:.85em;background:var(--surface);padding:1px 6px;border-radius:4px;color:#bcd0e6}
.doc-rendered pre{background:#070b11;border:1px solid #1c2530;border-radius:8px;padding:14px 16px;overflow-x:auto;font-size:.85rem;line-height:1.5}
.doc-rendered pre code{background:none;padding:0;font-size:inherit}
.doc-rendered hr{border:none;border-top:1px dashed var(--border);margin:24px 0}
.doc-rendered img{max-width:100%;height:auto;display:block;margin:16px auto;border-radius:6px}
.doc-rendered table{width:100%;border-collapse:collapse;margin:0 0 1em;font-size:.9rem}
.doc-rendered th,.doc-rendered td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:top}
.doc-rendered th{color:var(--cyan);font-weight:600}

.kit-intro{margin:0 0 8px}
.kit-downloads{margin:0 0 24px;color:var(--dim);font-size:.9rem}
.kit-downloads a{color:var(--link)}
.kit-group-heading{margin:28px 0 12px;font-size:.85rem;color:var(--yellow);text-transform:uppercase;letter-spacing:.1em}
.file-block{margin:0 0 8px;border:1px solid var(--border);border-radius:8px;background:var(--surface);overflow:hidden}
.file-block>summary{list-style:none;cursor:pointer;padding:10px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px;user-select:none}
.file-block>summary::-webkit-details-marker{display:none}
.file-block>summary:hover{background:rgba(255,255,255,.02)}
.file-block[open]>summary{border-bottom:1px solid var(--border)}
.file-path{font-size:.85rem;color:var(--txt);background:none;padding:0}
.file-block>summary::before{content:"▸";display:inline-block;color:var(--dim);font-size:.75rem;width:10px;margin-right:4px;transition:transform .12s ease}
.file-block[open]>summary::before{transform:rotate(90deg)}
.file-path-wrap{display:flex;align-items:center;gap:8px;min-width:0;flex:1;overflow:hidden}
.file-path-wrap .file-path{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.copy-btn{font-size:.75rem;color:var(--dim);background:transparent;border:1px solid var(--border);border-radius:4px;padding:3px 10px;cursor:pointer;flex-shrink:0;transition:color .12s,border-color .12s,background .12s}
.copy-btn:hover{color:var(--cyan);border-color:var(--cyan)}
.copy-btn.copied{color:var(--green);border-color:var(--green)}
.file-block>pre{margin:0;padding:14px 16px;background:#070b11;border:none;border-radius:0;font-size:.85rem;line-height:1.5;max-height:520px;overflow:auto}
.file-block>pre code{background:none;padding:0;font-size:inherit}

/* =====================================================================
   THE SCENE  (framed pages — chrome injected by /site.js)
   ===================================================================== */
body[data-frame="full"]{
  background:
    radial-gradient(ellipse at 50% -10%, #4a4540 0%, transparent 55%),
    linear-gradient(180deg,#36322e 0%,#262320 100%);
}
.scene{min-height:100vh;display:flex;flex-direction:column;align-items:center}
.scene .gap{flex:1 1 4vh}
.rig{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center}

/* zoom-into-monitor page transition (engineering link) */
@keyframes zoomIntoMonitor{0%{transform:scale(1);opacity:1}60%{opacity:1}100%{transform:scale(8);opacity:0}}
.scene.zooming{animation:zoomIntoMonitor .75s cubic-bezier(.55,.05,.85,.1) forwards;will-change:transform,opacity}
body.zooming{overflow:hidden}
.zoom-ov{position:fixed;inset:0;z-index:50;background:var(--screen-bg);opacity:0;pointer-events:none;animation:zoomOv .75s ease-in forwards}
@keyframes zoomOv{0%{opacity:0}58%{opacity:0}100%{opacity:1}}
@media (prefers-reduced-motion: reduce){.scene.zooming{animation:none}.zoom-ov{animation:none;opacity:0}}

.monitor{
  width:min(900px,96vw);
  background:linear-gradient(160deg,var(--beige-light) 0%,var(--beige) 40%,var(--beige-dark) 100%);
  border-radius:18px;padding:26px 26px 18px;position:relative;
  box-shadow:inset 0 2px 0 rgba(255,255,255,.55),inset 0 -6px 12px rgba(0,0,0,.18),0 30px 60px rgba(0,0,0,.55),0 4px 14px rgba(0,0,0,.4);
}
.bezel{background:linear-gradient(180deg,#9a9384 0%,#7d7668 100%);border-radius:12px;padding:14px;box-shadow:inset 0 3px 8px rgba(0,0,0,.5),inset 0 -1px 0 rgba(255,255,255,.15)}
.screen{background:var(--screen-bg);border-radius:10px / 14px;height:min(62vh,560px);overflow:hidden;position:relative;box-shadow:inset 0 0 60px rgba(0,0,0,.9),inset 0 0 120px var(--screen-glow)}
.screen::before{content:"";position:absolute;inset:0;z-index:5;pointer-events:none;background:radial-gradient(ellipse at 50% 45%, transparent 55%, rgba(0,0,0,.38) 100%);border-radius:inherit}
.screen::after{content:"";position:absolute;inset:0;z-index:6;pointer-events:none;background:linear-gradient(115deg, rgba(255,255,255,.07) 0%, transparent 22%);border-radius:inherit}
.flicker{position:absolute;inset:0;z-index:4;pointer-events:none;background:rgba(160,200,255,.018);animation:flick 4.3s infinite steps(1)}
@keyframes flick{0%,93%{opacity:.4}94%{opacity:1}95%{opacity:.2}96%{opacity:.9}97%,100%{opacity:.4}}

.chin{display:flex;align-items:flex-end;justify-content:space-between;padding:22px 14px 16px;min-height:58px}
.badge{font-size:11px;letter-spacing:.22em;color:#6b6455;font-weight:700;text-shadow:0 1px 0 rgba(255,255,255,.6)}
.badge small{display:block;font-size:8px;letter-spacing:.3em;color:#8f8878;font-weight:400}
.controls{display:flex;align-items:center;gap:10px}
.knob{width:14px;height:14px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#c9c2b2,#8f8878);box-shadow:inset 0 -2px 3px rgba(0,0,0,.35),0 1px 0 rgba(255,255,255,.5)}
.led{width:9px;height:9px;border-radius:50%;border:none;padding:0;background:#3ddc54;box-shadow:0 0 6px #3ddc54,0 0 14px rgba(61,220,84,.6);animation:ledpulse 3s ease-in-out infinite;cursor:pointer}
.led:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}
.led.off{background:#c44;box-shadow:0 0 6px #c44,0 0 14px rgba(200,68,68,.6)}
@keyframes ledpulse{50%{box-shadow:0 0 4px #3ddc54,0 0 8px rgba(61,220,84,.4)}}
.vents{position:absolute;top:10px;left:50%;transform:translateX(-50%);display:flex;gap:5px}
.vents i{width:26px;height:3px;border-radius:2px;background:rgba(0,0,0,.14);box-shadow:0 1px 0 rgba(255,255,255,.4)}

.stand{width:200px;height:30px;background:linear-gradient(180deg,var(--beige-dark),#a0987f);clip-path:polygon(12% 0,88% 0,100% 100%,0 100%);box-shadow:inset 0 -4px 6px rgba(0,0,0,.25)}
.stand-base{width:320px;height:14px;background:linear-gradient(180deg,var(--beige),var(--beige-shadow));border-radius:4px 4px 8px 8px;margin-bottom:-4px}

.sticky{position:absolute;z-index:10;width:106px;padding:10px 9px 14px;font-family:var(--mono);font-size:9.5px;line-height:1.5;color:#4a4030;box-shadow:2px 4px 6px rgba(0,0,0,.3)}
.sticky.s1{right:4px;top:48px;transform:rotate(4deg);background:#f0df5e}
.sticky.s2{left:4px;bottom:120px;transform:rotate(-5deg);background:#7fc9e0}
.sticky b{display:block;border-bottom:1px solid rgba(0,0,0,.15);margin-bottom:3px;padding-bottom:2px}

.desk{position:relative;z-index:1;width:100%;flex:1 0 auto;min-height:190px;background:linear-gradient(180deg,#6b4a2f 0%,#54391f 35%,#3d2a17 100%);box-shadow:inset 0 6px 14px rgba(0,0,0,.5);border-top:3px solid #8a6240;margin-top:-1px}
.desk-glow{position:absolute;top:0;left:50%;transform:translateX(-50%);width:min(1100px,110vw);height:100%;pointer-events:none;background:radial-gradient(ellipse at 50% 0%, rgba(110,160,230,.13) 0%, transparent 65%);animation:flick 4.3s infinite steps(1)}

.cable{position:absolute;pointer-events:none}
.kb-cable{top:-2px;left:calc(50% - 120px);width:90px;height:64px;border-left:3px solid var(--cable);border-bottom:3px solid var(--cable);border-radius:0 0 0 40px}
.mouse-cable{top:-2px;left:calc(50% + 150px);width:130px;height:78px;border-right:3px solid var(--cable);border-top:3px solid var(--cable);border-radius:0 60px 0 0}

.keyboard{position:absolute;top:58px;left:50%;transform:translateX(-56%) rotate(-1.2deg) perspective(600px) rotateX(28deg);width:min(480px,60vw);background:linear-gradient(180deg,var(--beige-light),var(--beige-dark));border:none;border-radius:8px;padding:10px 12px 8px;box-shadow:0 12px 22px rgba(0,0,0,.5),inset 0 2px 0 rgba(255,255,255,.5),inset 0 -4px 6px rgba(0,0,0,.2);cursor:pointer}
.keyboard:hover{filter:brightness(1.05)}
.keyboard:active{transform:translateX(-56%) rotate(-1.2deg) perspective(600px) rotateX(28deg) translateY(2px)}
.keyboard:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}
.krow{display:flex;gap:3px;margin-bottom:3px}
.key{flex:1;height:13px;border-radius:2px;background:linear-gradient(180deg,#e6dfd0,#bfb7a5);box-shadow:0 2px 0 #8f8878,inset 0 1px 0 rgba(255,255,255,.6)}
.key.w15{flex:1.5}.key.w2{flex:2}.key.space{flex:6}

.mouse{position:absolute;top:72px;left:calc(50% + 260px);width:46px;height:64px;transform:rotate(9deg) perspective(400px) rotateX(24deg);background:linear-gradient(160deg,var(--beige-light),var(--beige-dark));border:none;border-radius:22px 22px 20px 20px / 26px 26px 20px 20px;box-shadow:0 8px 14px rgba(0,0,0,.5),inset 0 2px 0 rgba(255,255,255,.5);cursor:pointer}
.mouse:hover{filter:brightness(1.05)}
.mouse:active{transform:rotate(9deg) perspective(400px) rotateX(24deg) translateY(2px)}
.mouse:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}
.mouse::before{content:"";position:absolute;top:0;left:50%;width:2px;height:24px;background:rgba(0,0,0,.18)}
.mouse::after{content:"";position:absolute;top:24px;left:4px;right:4px;height:2px;background:rgba(0,0,0,.15);border-radius:2px}

.stapler{position:absolute;top:84px;left:calc(50% - min(380px,46vw) - 60px);width:150px;height:52px;transform:rotate(-6deg);filter:drop-shadow(0 8px 8px rgba(0,0,0,.45))}
.stapler .base{position:absolute;bottom:0;left:0;width:100%;height:9px;background:linear-gradient(180deg,#b9b9b9,#7a7a7a);border-radius:3px 6px 4px 4px}
.stapler .plate{position:absolute;bottom:8px;left:6px;width:132px;height:13px;background:linear-gradient(180deg,#c93030,#8e1d1d);border-radius:4px 10px 2px 2px}
.stapler .arm{position:absolute;bottom:17px;right:6px;width:138px;height:17px;background:linear-gradient(180deg,#ee5a5a,#b42626);border-radius:14px 10px 4px 6px;transform-origin:92% 100%;transform:rotate(-9deg);box-shadow:inset 0 3px 0 rgba(255,255,255,.3),inset 0 -3px 4px rgba(0,0,0,.25)}
.stapler .arm::before{content:"";position:absolute;left:0;top:3px;width:16px;height:14px;background:linear-gradient(180deg,#d8d8d8,#909090);border-radius:6px 2px 2px 2px}
.stapler .hinge{position:absolute;right:2px;bottom:12px;width:18px;height:20px;background:radial-gradient(circle at 40% 35%,#e0e0e0,#6e6e6e);border-radius:50%;border:2px solid #5a5a5a}
.stapler .glint{position:absolute;bottom:19px;left:10px;width:34px;height:3px;background:#e8e8e8;border-radius:2px}

.wall-art{position:fixed;top:5vh;left:calc(50% + min(300px,34vw));z-index:0;width:240px;padding:14px;background:linear-gradient(160deg,#5c4630,#3e2d1c);border:5px solid #2a1d10;border-radius:2px;box-shadow:0 10px 22px rgba(0,0,0,.55),inset 0 0 0 2px #6e5436;transform:rotate(1.5deg)}
.wall-art::before{content:"";position:absolute;top:-14px;left:50%;width:2px;height:14px;background:rgba(0,0,0,.4)}
.wall-art .mat{background:#efe8d8;padding:24px 14px;text-align:center}
.wall-art .mat .art-txt{font-family:var(--mono);font-size:15px;line-height:1.6;color:#3a3328;letter-spacing:.04em}
.wall-art .mat .art-txt b{display:block;font-size:19px;color:#1f5c2e;margin-top:6px}
.wall-art .mat .art-sub{font-family:var(--mono);font-size:9px;color:#9a917f;letter-spacing:.2em;margin-top:14px}

.floppies{position:absolute;top:34px;left:calc(50% - min(440px,46vw) - 60px);width:130px}
.floppy{height:14px;border-radius:2px;margin-top:3px;position:relative;box-shadow:0 3px 5px rgba(0,0,0,.4)}
.floppy::after{content:attr(data-label);position:absolute;left:10px;top:1px;right:24px;height:11px;background:#f0ead8;border-radius:1px;font-size:7px;line-height:11px;padding:0 3px;color:#555;overflow:hidden;white-space:nowrap}
.floppy:nth-child(1){background:#2a2a2e;transform:rotate(-1deg)}
.floppy:nth-child(2){background:#5a6e9e;transform:rotate(1.5deg) translateX(4px)}
.floppy:nth-child(3){background:#8e3b3b;transform:rotate(-.5deg) translateX(-2px)}
.mug-ring{position:absolute;top:96px;left:calc(50% + min(420px,44vw));width:64px;height:30px;border-radius:50%;border:5px solid rgba(40,24,10,.45);filter:blur(.5px);transform:rotate(-4deg)}

/* ===== boot / egg / static overlays ===== */
#boot{position:absolute;inset:0;z-index:3;padding:26px 30px;color:var(--txt);font-size:13.5px;line-height:1.7;white-space:pre-wrap;overflow:hidden}
#boot .b-hdr{color:var(--yellow)}
#boot .b-ok{color:var(--green)}
#boot .b-val{color:var(--cyan)}
#skip{position:absolute;right:14px;bottom:12px;z-index:7;font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--dim);background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.15);border-radius:4px;padding:5px 10px;cursor:pointer}
#skip:hover,#skip:focus-visible{color:var(--txt);border-color:var(--cyan);outline:none}
#egg{position:absolute;inset:0;z-index:8;display:none;padding:26px 30px;color:var(--txt);font-size:13.5px;line-height:1.7;white-space:pre-wrap;background:var(--screen-bg)}
#egg .e-err{color:#e86a6a}
#egg .e-warn{color:var(--yellow)}
#static{position:absolute;inset:0;z-index:9;display:none;background:repeating-radial-gradient(circle at 17% 31%, #fff 0 .5px, #000 .5px 1.5px, #888 1.5px 2px),repeating-radial-gradient(circle at 73% 64%, #ddd 0 .7px, #111 .7px 1.7px);background-size:7px 9px,11px 7px;animation:staticshift .09s steps(3) infinite}
@keyframes staticshift{0%{background-position:0 0,0 0}33%{background-position:-3px 2px,4px -3px}66%{background-position:2px -4px,-2px 5px}}
.screen.off-air #static{display:block}

.screen.malfunction{animation:scrjit .12s steps(2) infinite}
.screen.malfunction #egg{display:block}
.screen.malfunction::before{background:repeating-linear-gradient(0deg, rgba(255,255,255,.06) 0 2px, transparent 2px 5px),radial-gradient(ellipse at 50% 45%, transparent 55%, rgba(0,0,0,.38) 100%)}
.screen.malfunction .flicker{background:rgba(255,80,80,.05);animation:badflick .25s steps(2) infinite}
@keyframes scrjit{0%{transform:translate(0,0)}25%{transform:translate(-2px,1px) skewX(.4deg)}50%{transform:translate(2px,-1px)}75%{transform:translate(-1px,2px) skewX(-.3deg)}}
@keyframes badflick{0%{opacity:.2;filter:hue-rotate(0deg)}50%{opacity:.9;filter:hue-rotate(90deg)}}
.screen.malfunction #content,.screen.malfunction #egg{animation:tear .6s steps(4) infinite}
@keyframes tear{0%{clip-path:inset(0)}25%{clip-path:inset(8% 0 0 0);transform:translateX(6px)}50%{clip-path:inset(0 0 12% 0);transform:translateX(-5px)}75%{clip-path:inset(4% 0 6% 0);transform:translateX(3px)}100%{clip-path:inset(0);transform:none}}

/* ===== nyan cat ===== */
.nyan{position:absolute;top:38%;left:0;z-index:7;pointer-events:none;display:flex;align-items:center;animation:flyby 3.2s linear forwards}
@keyframes flyby{from{transform:translateX(-340px) translateY(0)}25%{transform:translateX(25vw) translateY(-14px)}50%{transform:translateX(50vw) translateY(10px)}75%{transform:translateX(75vw) translateY(-10px)}to{transform:translateX(110vw) translateY(0)}}
.trail{display:flex;flex-direction:column;width:220px}
.trail i{height:6px;animation:wave .5s ease-in-out infinite alternate}
.trail i:nth-child(1){background:#ff3b3b}
.trail i:nth-child(2){background:#ff9d3b;animation-delay:.08s}
.trail i:nth-child(3){background:#ffe93b;animation-delay:.16s}
.trail i:nth-child(4){background:#5dff3b;animation-delay:.24s}
.trail i:nth-child(5){background:#3bb8ff;animation-delay:.32s}
.trail i:nth-child(6){background:#b03bff;animation-delay:.4s}
@keyframes wave{from{transform:translateY(-2px)}to{transform:translateY(2px)}}
.cat{position:relative;width:64px;height:44px;margin-left:-6px;animation:bob .25s steps(2) infinite}
@keyframes bob{50%{transform:translateY(3px)}}
.cat .toast{position:absolute;left:0;top:6px;width:44px;height:32px;background:#f3a6c0;border:3px solid #d4849e;border-radius:6px}
.cat .toast::after{content:"";position:absolute;inset:4px;background:radial-gradient(circle 2px at 6px 5px,#c0392b 98%,transparent),radial-gradient(circle 2px at 20px 12px,#8e44ad 98%,transparent),radial-gradient(circle 2px at 30px 4px,#c0392b 98%,transparent),radial-gradient(circle 2px at 12px 18px,#8e44ad 98%,transparent),radial-gradient(circle 2px at 28px 16px,#2980b9 98%,transparent)}
.cat .head{position:absolute;right:0;top:10px;width:26px;height:22px;background:#9aa0a6;border-radius:6px}
.cat .head::before,.cat .head::after{content:"";position:absolute;top:-6px;border-style:solid;border-width:0 5px 7px 5px;border-color:transparent transparent #9aa0a6 transparent}
.cat .head::before{left:2px}.cat .head::after{right:2px}
.cat .face{position:absolute;right:4px;top:18px;width:18px;height:6px;background:radial-gradient(circle 2px at 3px 1px,#222 98%,transparent),radial-gradient(circle 2px at 15px 1px,#222 98%,transparent)}
.cat .legs{position:absolute;bottom:0;left:6px;width:48px;height:6px;background:linear-gradient(#9aa0a6,#9aa0a6) 0 0/6px 6px no-repeat,linear-gradient(#9aa0a6,#9aa0a6) 14px 0/6px 6px no-repeat,linear-gradient(#9aa0a6,#9aa0a6) 28px 0/6px 6px no-repeat,linear-gradient(#9aa0a6,#9aa0a6) 42px 0/6px 6px no-repeat;animation:bob .25s steps(2) infinite reverse}
.cat .tail{position:absolute;left:-10px;top:14px;width:12px;height:6px;background:#9aa0a6;border-radius:3px;animation:wave .25s steps(2) infinite alternate}

/* =====================================================================
   #content — the live terminal screen (framed pages). Overrides the
   document base so the page's real markup reads as a terminal.
   ===================================================================== */
#content{position:absolute;inset:0;z-index:2;overflow-y:auto;padding:32px 36px 56px;color:var(--txt);font-size:14.5px;line-height:1.75;opacity:0;transition:opacity .8s ease;scrollbar-width:thin;scrollbar-color:#3a4555 transparent}
#content.on{opacity:1;animation:crton .55s cubic-bezier(.2,.9,.3,1)}
@keyframes crton{0%{transform:scaleY(.005) scaleX(1.4);filter:brightness(8)}35%{transform:scaleY(.04) scaleX(1.15);filter:brightness(4)}60%{transform:scaleY(1.02) scaleX(1);filter:brightness(1.6)}100%{transform:scale(1);filter:brightness(1)}}
#content.on>*{opacity:0;animation:lineup .45s ease forwards}
#content.on>*:nth-child(1){animation-delay:.45s}
#content.on>*:nth-child(2){animation-delay:.55s}
#content.on>*:nth-child(3){animation-delay:.65s}
#content.on>*:nth-child(4){animation-delay:.75s}
#content.on>*:nth-child(5){animation-delay:.9s}
#content.on>*:nth-child(6){animation-delay:1.05s}
#content.on>*:nth-child(7){animation-delay:1.2s}
#content.on>*:nth-child(8){animation-delay:1.3s}
@keyframes lineup{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
#content::-webkit-scrollbar{width:8px}
#content::-webkit-scrollbar-thumb{background:#3a4555;border-radius:4px}

/* neutralize document layout chrome inside the screen */
#content .container{max-width:none;margin:0;padding:0}
#content .hero,#content .subhero{padding:0;border:none;margin:0 0 1.2rem}
#content main section,#content section{padding:0;border:none;margin-bottom:2.2rem}
#content .article-body{padding:0}

/* terminal typography */
#content .prompt{color:var(--green)}
#content .cmd{color:var(--txt)}
#content .eyebrow{color:var(--green);text-transform:none;letter-spacing:0;font-size:13px;margin-bottom:.5rem}
#content h1{font-size:clamp(1.6rem,4vw,2.3rem);color:#fff;font-weight:700;letter-spacing:.02em;margin:.4rem 0 .3rem;text-shadow:0 0 18px rgba(125,184,240,.35)}
#content .tagline,#content .subhero p{color:var(--dim);margin-bottom:1.4rem;font-style:italic;max-width:62ch}
#content .back{display:block;color:var(--dim);font-size:12px;margin-bottom:.7rem}
#content nav,#content .links{display:flex;flex-wrap:wrap;gap:.4rem 1.3rem;padding:.9rem 0 1.1rem;margin-bottom:1.6rem;border-top:1px dashed #2b3442;border-bottom:1px dashed #2b3442;font-size:13px}
#content nav a::before,#content .links a::before{content:"▸ ";color:var(--dim)}
#content nav a:hover{animation:jitter .18s steps(2) 2;text-shadow:1px 0 rgba(86,200,216,.8),-1px 0 rgba(208,119,201,.8)}
@keyframes jitter{50%{transform:translateX(1px)}}
#content a{color:var(--link)}
#content a:hover,#content a:focus-visible{color:#fff;text-decoration:underline;border-bottom:none;outline:none}
#content h2{font-size:1rem;color:var(--yellow);font-weight:600;margin-bottom:.7rem}
#content h2 .prompt{color:var(--green)}
#content h3{font-size:.95rem;margin:1.2rem 0 .2rem}
#content h3 a{color:var(--cyan)}
#content h3 a::after{content:" ↗";font-size:.8em;color:var(--dim)}
#content p{max-width:70ch}
#content .article-body h2{margin:1.4rem 0 .5rem}
#content .article-body h3{color:var(--cyan)}
#content .article-body blockquote{border-left:3px solid #2b3442;color:var(--dim)}
#content .article-body pre{background:#070b11;border:1px solid #1c2530}
#content .article-body hr{border-color:#2b3442}

/* post list as a terminal listing */
#content .post-list{display:block;border-top:1px dashed #2b3442;margin:.4rem 0 1.4rem}
#content .post-list li{display:block;grid-template-columns:none;padding:.7rem 0;border-bottom:1px dashed #2b3442}
#content .post-list .date{color:var(--green);font-size:12px;display:block;margin-bottom:.15rem}
#content .post-list h3{margin:0}
#content .post-list h3 a{color:var(--cyan);font-size:15px}
#content .post-list p{color:var(--dim);font-size:13px;margin-top:.2rem}

/* cards as terminal blocks */
#content .grid{display:grid;gap:.8rem;grid-template-columns:1fr}
#content .card,#content .card-link{background:rgba(255,255,255,.02);border:1px solid #26303f;border-radius:6px;padding:14px 16px}
#content .card h3,#content .card-link h3{color:var(--cyan)}
#content .card .meta{color:var(--dim)}

#content .post-meta{color:var(--dim)}
#content .email{color:var(--magenta)}
#content .contact-links,#content ul.inline{display:flex;gap:1.4rem;margin:.5rem 0 1.4rem;list-style:none;padding:0}
#content footer{color:var(--dim);font-size:12px;border-top:1px dashed #2b3442;padding:1rem 0 0;margin-top:1.6rem}
#content .cursor{display:inline-block;width:.6em;height:1.1em;background:var(--txt);vertical-align:text-bottom;animation:blink 1.05s steps(1) infinite}
@keyframes blink{50%{opacity:0}}

/* =====================================================================
   MOTION / RESPONSIVE
   ===================================================================== */
@media (prefers-reduced-motion: reduce){
  .flicker,.led,.cursor,.desk-glow,#static,.nyan,.trail i,.cat,.cat .legs,.cat .tail,body[data-frame="lite"]::after{animation:none}
  #content.on{animation:none}
  #content.on>*{animation:none;opacity:1}
  #content nav a:hover{animation:none;text-shadow:none}
  .screen.malfunction,.screen.malfunction *,.screen.malfunction #content,.screen.malfunction #egg{animation:none}
}
@media (max-width:1180px){.floppies,.mug-ring,.stapler,.wall-art{display:none}}
@media (max-width:760px){
  .keyboard,.kb-cable,.mouse,.mouse-cable{display:none}
  .desk{min-height:70px}
  .sticky.s2{display:none}
}
@media (max-width:600px){
  .monitor{padding:12px 12px 6px;border-radius:12px;width:96vw}
  .bezel{padding:8px;border-radius:8px}
  .screen{height:72vh}
  #content{padding:22px 18px 50px;font-size:13.5px}
  #boot{padding:18px 16px;font-size:11.5px}
  .badge{font-size:9px}
  .vents,.sticky{display:none}
  .stand{width:140px;height:20px}
  .stand-base{width:220px}
  .post-list li{grid-template-columns:1fr}
  .container{padding:0 18px}
}
