/* The Margin: site styles. Colors and fonts are the tokens in :root. */
[hidden]{display:none!important}
/* Layout: a late-90s personal site. Centered 900px frame, beveled left rail (nav, MIDI player, shoutbox), main column of posts and case files. Single dark look by design. */
:root{
  color-scheme: dark;
  --void:#040507;
  --panel:#0b0d12;
  --panel-2:#13161d;
  --edge-hi:#5f6572;
  --edge-lo:#1a1d23;
  --ink:#d0d3d9;
  --dim:#8d929c;
  --blood:#e3262d;
  --hazard:#ffcc1f;
  --xerox:#efe3b4;
  --link:#74b6ff;
  --visited:#c39dff;
  --lcd:#ffb13b;
  --lcd-bg:#140c02;
  --ink-on-hazard:#0b0b0b;
  --star:#9aa3b5;
  --display:"VT323","Courier New",monospace;
  --type:"Special Elite","Courier New",Courier,monospace;
  --body:"Times New Roman",Times,Georgia,serif;
  --ascii:"Courier New",Courier,monospace;
  --ui:Tahoma,Verdana,"Segoe UI",sans-serif;
}
*{box-sizing:border-box}
html{background:var(--void)}
body{
  margin:0;
  background-color:var(--void);
  background-image:
    radial-gradient(1px 1px at 23px 41px,var(--star),transparent 60%),
    radial-gradient(1px 1px at 151px 97px,var(--dim),transparent 60%),
    radial-gradient(1.5px 1.5px at 88px 170px,var(--star),transparent 60%),
    radial-gradient(1px 1px at 201px 13px,var(--dim),transparent 60%),
    radial-gradient(1px 1px at 63px 222px,var(--dim),transparent 60%);
  background-size:240px 240px;
  color:var(--ink);
  font:17px/1.55 var(--body);
  padding-inline:16px;
  padding-block:0 32px;
}
a{color:var(--link)}
a:visited{color:var(--visited)}
a:hover{color:var(--hazard)}
:focus-visible{outline:2px dashed var(--hazard);outline-offset:2px}
img{max-width:100%;height:auto}

.ticker{
  max-width:900px;margin:0 auto;overflow:hidden;white-space:nowrap;
  background:var(--blood);color:var(--ink-on-hazard);
  font:20px/1.4 var(--display);letter-spacing:.04em;
  border:2px solid;border-color:var(--edge-hi) var(--edge-lo) var(--edge-lo) var(--edge-hi);
}
.ticker span{display:inline-block;padding-left:100%;animation:crawl 38s linear infinite}
@keyframes crawl{to{transform:translateX(-100%)}}

.frame{
  max-width:900px;margin:0 auto;background:var(--panel);
  border:3px solid;border-color:var(--edge-hi) var(--edge-lo) var(--edge-lo) var(--edge-hi);
}
.banner{
  padding:18px 18px 12px;text-align:center;
  background:linear-gradient(var(--panel-2),var(--panel));
  border-bottom:2px groove var(--edge-hi);
}
.logo{
  margin:0;white-space:nowrap;font:normal clamp(42px,11.5vw,104px)/0.85 var(--display);
  color:var(--blood);letter-spacing:.06em;text-shadow:3px 3px 0 var(--edge-lo),0 0 18px var(--blood);
}
.tagline{margin:6px 0 0;font:19px/1.2 var(--type);color:var(--xerox)}
.meta-row{
  display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px 18px;
  margin-top:10px;font:18px/1 var(--display);color:var(--dim);letter-spacing:.04em;
}
.counter{display:inline-flex;gap:2px}
.counter b{
  display:inline-block;min-width:16px;padding:2px 3px;text-align:center;
  background:var(--lcd-bg);color:var(--lcd);font-weight:normal;
  border:1px solid var(--edge-hi);font-variant-numeric:tabular-nums;
}

.cols{
  display:grid;grid-template-columns:214px minmax(0,1fr);
  grid-template-areas:"nav main" "wid main";grid-template-rows:auto 1fr;
}
.navbox{grid-area:nav}
.widgets{grid-area:wid}
.navbox,.widgets{padding:12px;background:var(--panel-2);border-right:2px groove var(--edge-hi)}
.widgets{display:flex;flex-direction:column;gap:14px}
main{grid-area:main;min-width:0;padding:18px 22px 26px}
main:focus{outline:none}

.navbtns{display:flex;flex-direction:column;gap:6px;margin:0;padding:0;list-style:none}
.navbtns a{
  display:block;padding:5px 8px;text-decoration:none;
  font:21px/1.1 var(--display);letter-spacing:.05em;color:var(--ink);
  background:var(--panel);border:2px solid;border-color:var(--edge-hi) var(--edge-lo) var(--edge-lo) var(--edge-hi);
}
.navbtns a:hover{color:var(--hazard)}
.navbtns a[aria-current="page"]{border-color:var(--edge-lo) var(--edge-hi) var(--edge-hi) var(--edge-lo);color:var(--hazard);background:var(--void)}
.navbtns a .arrow{color:var(--blood)}

.box{border:2px solid;border-color:var(--edge-hi) var(--edge-lo) var(--edge-lo) var(--edge-hi);background:var(--panel)}
.box h3{
  margin:0;padding:3px 7px;font:normal 19px/1.1 var(--display);letter-spacing:.08em;
  color:var(--ink-on-hazard);background:var(--hazard);
}
.box .inner{padding:8px}

/* MIDI player */
.lcd{background:var(--lcd-bg);color:var(--lcd);border:2px inset var(--edge-hi);padding:5px 6px;font:18px/1.1 var(--display)}
.lcd .title-wrap{overflow:hidden;white-space:nowrap}
.lcd .title-wrap span{display:inline-block;padding-left:100%;animation:crawl 12s linear infinite}
.lcd .title-wrap.idle span{animation:none;padding-left:0}
.lcd .row{display:flex;justify-content:space-between;align-items:center;gap:6px;margin-top:3px;font-variant-numeric:tabular-nums}
#viz{display:block;width:100%;height:30px;margin-top:4px}
.transport{display:flex;gap:4px;margin-top:6px}
.btn{
  flex:1;min-width:0;padding:3px 0;cursor:pointer;
  font:18px/1 var(--display);color:var(--ink);background:var(--panel-2);
  border:2px solid;border-color:var(--edge-hi) var(--edge-lo) var(--edge-lo) var(--edge-hi);
}
.btn:active,.btn[aria-pressed="true"]{border-color:var(--edge-lo) var(--edge-hi) var(--edge-hi) var(--edge-lo);color:var(--lcd)}
.vol{display:flex;align-items:center;gap:6px;margin-top:6px;font:16px/1 var(--display);color:var(--dim)}
.vol input{flex:1;min-width:0;accent-color:var(--lcd)}
.tracklist{margin:6px 0 0;padding:0;list-style:none;font:16px/1.3 var(--display)}
.tracklist button{all:unset;cursor:pointer;color:var(--dim);display:block;width:100%}
.tracklist button:hover{color:var(--ink)}
.tracklist button.on{color:var(--lcd)}
.tracklist button:focus-visible{outline:2px dashed var(--hazard)}

/* shoutbox */
.shout-list{
  list-style:none;margin:0;padding:0;max-height:260px;overflow-y:auto;
  font:15px/1.35 var(--body);display:flex;flex-direction:column;gap:6px;
}
.shout-list li{padding-bottom:5px;border-bottom:1px dotted var(--edge-hi);overflow-wrap:anywhere}
.shout-list .who{font-weight:bold;color:var(--hazard)}
.shout-list .pin .who{color:var(--blood)}
.shout-list time{color:var(--dim);font-size:13px;margin-left:4px}
.shout-list .x{all:unset;cursor:pointer;color:var(--blood);font:15px/1 var(--display);margin-left:4px}
.shout-form{display:flex;flex-direction:column;gap:5px;margin-top:8px}
.shout-form input{
  width:100%;padding:4px 5px;font:15px/1.2 var(--body);color:var(--ink);background:var(--void);
  border:2px inset var(--edge-hi);
}
.shout-status{margin:6px 0 0;font:14px/1.3 var(--type);color:var(--dim)}

.webring{text-align:center;font:17px/1.4 var(--display);color:var(--dim)}
.webring button{all:unset;cursor:pointer;color:var(--link);text-decoration:underline}
.webring button:focus-visible{outline:2px dashed var(--hazard)}
.webring .ringname{display:block;color:var(--xerox);letter-spacing:.06em}

/* main content */
.view{max-width:66ch}
.view h1{
  margin:0 0 4px;font:normal clamp(36px,6vw,50px)/0.95 var(--display);letter-spacing:.03em;color:var(--blood);text-wrap:balance;
}
.kicker{margin:0 0 14px;font:16px/1.3 var(--type);color:var(--dim)}
.view h2{margin:26px 0 8px;font:normal 30px/1 var(--display);letter-spacing:.04em;color:var(--hazard);text-wrap:balance}
.view p{margin:0 0 12px}
.view hr{border:0;border-top:2px groove var(--edge-hi);margin:22px 0}

.post{padding:14px 0 6px;border-bottom:2px groove var(--edge-hi)}
.post:last-of-type{border-bottom:0}
.post h2{margin-top:0}
.stamp-line{margin:0 0 10px;font:15px/1.4 var(--type);color:var(--dim)}
.stamp-line b{color:var(--xerox);font-weight:normal}
.new{
  display:inline-block;margin-left:6px;padding:0 4px;vertical-align:middle;
  font:16px/1.2 var(--display);color:var(--ink-on-hazard);background:var(--blood);animation:blink 1.1s steps(1) infinite;
}
@keyframes blink{50%{opacity:0}}
.quote{
  margin:12px 0;padding:8px 12px;border-left:4px solid var(--blood);background:var(--panel-2);
  font:17px/1.5 var(--type);color:var(--xerox);
}
.dead{color:var(--dim);text-decoration:line-through;font-family:var(--type);font-size:15px}
.updates{margin:0 0 16px;padding:8px 10px;border:1px dashed var(--edge-hi);font:16px/1.45 var(--type);color:var(--dim)}
.updates b{color:var(--hazard);font-weight:normal}

.redact{
  background:var(--ink);color:var(--ink);cursor:pointer;padding:0 2px;border-radius:0;
  transition:background .2s,color .2s;
}
.redact:hover{background:var(--dim);color:var(--dim)}
.redact.open{background:var(--hazard);color:var(--ink-on-hazard)}
.hint{font:14px/1.3 var(--type);color:var(--dim)}

/* documents */
.doc{margin:16px 0 18px;padding:10px;background:var(--panel-2);border:2px solid;border-color:var(--edge-hi) var(--edge-lo) var(--edge-lo) var(--edge-hi)}
.doc button{all:unset;display:block;cursor:zoom-in}
.doc button:focus-visible{outline:2px dashed var(--hazard)}
.doc img{display:block;margin:0 auto;border:1px solid var(--edge-lo);max-height:620px;width:auto}
.doc figcaption{margin-top:8px;font:15px/1.45 var(--type);color:var(--xerox)}
.doc figcaption .src{display:block;margin-top:4px;color:var(--dim);font-size:13px}
.doc-pair{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.doc-pair .doc{margin:0}

.case-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:10px}
.stampbox{
  display:inline-block;transform:rotate(-6deg);margin:6px 8px 0 0;padding:2px 10px;
  font:24px/1.1 var(--type);color:var(--blood);border:3px double var(--blood);letter-spacing:.08em;
}
.factsheet{
  width:100%;border-collapse:collapse;margin:6px 0 16px;font:16px/1.35 var(--body);
}
.factsheet th,.factsheet td{padding:5px 8px;border:1px solid var(--edge-hi);vertical-align:top;text-align:left}
.factsheet th{width:34%;font:normal 18px/1.2 var(--display);letter-spacing:.04em;color:var(--hazard);background:var(--panel-2)}
.take{margin:18px 0;padding:10px 12px;background:var(--void);border:2px dashed var(--blood)}
.take h3{margin:0 0 6px;font:normal 22px/1 var(--display);letter-spacing:.06em;color:var(--blood)}
.take p:last-child{margin-bottom:0}
.sources{margin:6px 0 0;padding-left:20px;font-size:15px}
.sources li{margin-bottom:5px;overflow-wrap:anywhere}

.receipts-wrap{overflow-x:auto}
.receipts{width:100%;border-collapse:separate;border-spacing:3px;min-width:520px;font-size:16px}
.receipts th{font:normal 18px/1.1 var(--display);letter-spacing:.05em;color:var(--ink-on-hazard);background:var(--hazard);padding:4px 6px;text-align:left}
.receipts td{background:var(--panel-2);padding:6px;vertical-align:top;border:1px solid var(--edge-lo)}
.receipts td.thumb{width:76px}
.receipts td.thumb img{display:block;width:70px;height:88px;object-fit:cover;object-position:top;border:1px solid var(--edge-hi)}
.receipts .case{font:normal 24px/1 var(--display);letter-spacing:.03em}
.receipts .ok{font:15px/1 var(--type);color:var(--blood);border:2px solid var(--blood);padding:1px 4px;white-space:nowrap}

.rules{margin:0 0 12px;padding-left:22px}
.rules li{margin-bottom:4px}
.ooc{margin-top:18px;padding:10px 12px;border:2px solid var(--edge-hi);background:var(--panel-2);font-size:16px}
.ooc b{color:var(--hazard)}

.construction{
  margin:0;padding:4px 8px;text-align:center;font:18px/1.2 var(--display);letter-spacing:.08em;color:var(--ink-on-hazard);
  background:repeating-linear-gradient(-45deg,var(--hazard) 0 14px,var(--ink-on-hazard) 14px 28px);
}
.construction span{background:var(--hazard);padding:0 8px}
footer{padding:12px 16px 16px;text-align:center;font:15px/1.5 var(--type);color:var(--dim);border-top:2px groove var(--edge-hi)}
footer p{margin:4px 0}

/* lightbox */
.lightbox{
  position:fixed;inset:0;z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;
  padding:calc(16px + env(safe-area-inset-top,0px)) 16px calc(16px + env(safe-area-inset-bottom,0px));
  background:color-mix(in srgb,var(--void) 92%,transparent);cursor:zoom-out;
}
.lightbox img{max-height:82vh;max-width:min(100%,900px);width:auto;border:2px solid var(--edge-hi)}
.lightbox p{margin:0;max-width:70ch;text-align:center;font:15px/1.4 var(--type);color:var(--xerox)}

@media (max-width:720px){
  .cols{grid-template-columns:minmax(0,1fr);grid-template-areas:"nav" "main" "wid";grid-template-rows:auto}
  .navbox,.widgets{border-right:0}
  .navbox{border-bottom:2px groove var(--edge-hi)}
  .widgets{border-top:2px groove var(--edge-hi)}
  .navbtns{flex-direction:row;flex-wrap:wrap}
  .navbtns li{flex:1 1 40%}
  main{padding:16px 12px 22px}
  .receipts{min-width:0}
  .receipts .col-status{display:none}
  body{font-size:16px}
}
@media (prefers-reduced-motion:reduce){
  .ticker span,.lcd .title-wrap span{animation:none;padding-left:0}
  .new{animation:none}
}


/* ---------- ASCII art ---------- */
.ascii-logo{
  display:inline-block;margin:0;text-align:left;white-space:pre;overflow:hidden;max-width:100%;
  font:bold min(16px, calc((100vw - 80px) / 36))/1.08 var(--ascii);
  color:var(--blood);text-shadow:0 0 1px var(--blood),0 0 14px color-mix(in srgb,var(--blood) 35%,transparent);
}
.ascii-logo + .logo{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ascii-eye{margin:0;text-align:center}
.ascii-eye pre{margin:0 auto;display:inline-block;text-align:left;font:bold 11px/1.1 var(--ascii);color:var(--dim)}
.ascii-eye figcaption{margin-top:4px;font:15px/1.2 var(--display);letter-spacing:.06em;color:var(--blood)}
.post{border-bottom:0}
.post + .post::before{
  content:".:*~*:._.:*~*:._.:*~*:._.:*~*:.";display:block;margin:0 0 16px;text-align:center;
  font:14px/1 var(--ascii);letter-spacing:1px;color:var(--edge-hi);overflow:hidden;white-space:nowrap;
}
.linklike{all:unset;cursor:pointer;color:var(--link);text-decoration:underline}
.linklike:focus-visible{outline:2px dashed var(--hazard)}

/* ---------- dial-up intro ---------- */
.dialup{
  position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;
  padding:16px;overflow-y:auto;
  background:
    repeating-linear-gradient(0deg, transparent 0 2px, color-mix(in srgb, var(--void) 55%, transparent) 2px 3px),
    color-mix(in srgb, var(--void) 88%, transparent);
  animation:dialFailsafe 0s linear 15s forwards;
}
.dialup.armed{animation:none}
.dialup.leaving{opacity:0;transition:opacity .35s ease}
@keyframes dialFailsafe{to{visibility:hidden}}
.dial-win{
  width:min(440px,100%);background:var(--panel-2);color:var(--ink);font:13px/1.35 var(--ui);
  border:2px solid;border-color:var(--edge-hi) var(--edge-lo) var(--edge-lo) var(--edge-hi);
  box-shadow:6px 6px 0 var(--void);
}
.dial-title{
  display:flex;justify-content:space-between;align-items:center;gap:8px;padding:3px 4px 3px 8px;
  background:linear-gradient(90deg,var(--blood),var(--edge-lo));color:var(--ink);font-weight:bold;
}
.dial-x{
  all:unset;cursor:pointer;width:18px;height:16px;text-align:center;font:bold 12px/15px var(--ui);
  color:var(--ink-on-hazard);background:var(--edge-hi);border:1px solid;border-color:var(--ink) var(--edge-lo) var(--edge-lo) var(--ink);
}
.dial-x:focus-visible{outline:2px dashed var(--hazard)}
.dial-body{padding:12px 14px 14px;display:flex;flex-direction:column;gap:8px}
.dial-modem{margin:0 auto;font:12px/1.15 var(--ascii);color:var(--dim);white-space:pre;max-width:100%;overflow:hidden}
.dial-modem .led{color:var(--edge-hi);transition:color .08s,text-shadow .08s}
.dial-modem .led.on{color:var(--lcd);text-shadow:0 0 6px var(--lcd)}
.dial-name{margin:0;font:22px/1 var(--display);letter-spacing:.08em;color:var(--hazard)}
.dial-fields{display:grid;grid-template-columns:auto minmax(0,1fr);gap:5px 10px;align-items:center}
.dial-fields input{
  min-width:0;padding:3px 5px;font:13px/1.2 var(--ui);color:var(--ink);background:var(--void);
  border:2px inset var(--edge-hi);
}
.dial-check{display:flex;align-items:center;gap:6px;cursor:pointer}
.dial-check input{accent-color:var(--lcd);margin:0}
.dial-log{
  margin:2px 0 0;height:7.6em;overflow:hidden;padding:5px 7px;white-space:pre-wrap;
  font:16px/1.05 var(--display);color:var(--lcd);background:var(--lcd-bg);border:2px inset var(--edge-hi);
}
.dial-bar{margin:0;font:13px/1.2 var(--ascii);color:var(--lcd);white-space:pre}
.dial-btns{display:flex;justify-content:flex-end;gap:8px}
.dial-btns .btn{flex:0 0 auto;min-width:86px;padding:4px 10px;font:13px/1.2 var(--ui)}
.dial-btns .btn:disabled{opacity:.5;cursor:default}
@media (prefers-reduced-motion:reduce){ .dialup.leaving{transition:none} }
