/* Dino Vietnam Overlay - the download page. Generated by scripts/gen-landing.js.
   Every colour below is a token; nothing under :root is a literal. */
:root{
  --bg:#000000;
  --bg-deep:#000000;
  --surface:#140a0b;
  --fg:#f5e9d8;
  --fg-dim:#b4aba0;
  --fg-mute:#7a736c;
  --accent:#e01e2b;
  --accent-hi:#ff4d57;
  --on-accent:#000000;
  --warn:#ffb347;
  --hair:rgba(224,30,43,0.22);
  --hair-2:rgba(245,233,216,0.11);
  --plate:rgba(0,0,0,0.62);
  --wash:rgba(224,30,43,0.09);
  --r:2px;
  --gut:24px;
  --maxw:1120px;
  --font-display:"Bahnschrift","Segoe UI Variable Display","Segoe UI Semibold",-apple-system,"Helvetica Neue",Arial,sans-serif;
  --font-ui:"Segoe UI Variable Text","Segoe UI",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;
  --font-mono:"Cascadia Mono",Consolas,"SF Mono",ui-monospace,"Roboto Mono",monospace;
}
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{background:var(--bg-deep);color:var(--fg);font:400 16px/1.62 var(--font-ui);-webkit-text-size-adjust:100%}
body{margin:0;background:transparent;min-height:100svh;min-height:100vh}
.wrap{position:relative;z-index:1;max-width:var(--maxw);margin:0 auto;padding:clamp(26px,4vw,54px) var(--gut) clamp(52px,8vw,86px)}

/* the identity strip: the owner's mark and the owner's name, nothing else */
.rail{display:flex;align-items:center;gap:14px;margin:0 0 clamp(40px,8vw,92px)}
.mark{display:block;width:34px;height:34px;opacity:.94}
.wordmark{font:400 12px/1 var(--font-display);letter-spacing:.4em;text-transform:uppercase;color:var(--fg-dim)}

/* the hero (the scene block at the foot of this sheet gives it a min-height
   where there is a photograph to hold the fold open) */
.eyebrow{margin:0 0 20px;font:400 11px/1 var(--font-mono);letter-spacing:.3em;text-transform:uppercase;color:var(--accent)}
.eyebrow::before{content:"// ";color:var(--fg-mute)}
h1{margin:0;font:200 clamp(40px,8vw,92px)/1.02 var(--font-display);letter-spacing:.26em;text-transform:uppercase;color:var(--fg);word-break:break-word}
.rule{width:62px;height:2px;margin:clamp(22px,3vw,30px) 0 0;border:0;background:var(--accent)}
.lede{margin:24px 0 0;max-width:48ch;font-size:16.5px;color:var(--fg-dim)}
.cta{margin:clamp(28px,4vw,40px) 0 0}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:16px;min-width:min(100%,320px);padding:19px 34px;border:1px solid var(--accent);border-radius:var(--r);background:var(--wash);color:var(--accent-hi);font:500 12.5px/1 var(--font-display);letter-spacing:.26em;text-transform:uppercase;text-decoration:none;transition:background-color .18s ease,color .18s ease,border-color .18s ease}
.btn::after{content:"\2192";font-size:15px;letter-spacing:0}
.btn:hover{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}
.btn:focus-visible{outline:2px solid var(--accent-hi);outline-offset:3px}

/* the three facts: numeral over label */
.facts{display:flex;flex-wrap:wrap;max-width:min(100%,900px);margin:clamp(32px,4.5vw,46px) 0 0;border-top:1px solid var(--hair);border-bottom:1px solid var(--hair)}
.fact{flex:1 1 190px;min-width:0;padding:18px 24px 17px;border-left:1px solid var(--hair-2)}
.fact:first-child{border-left:0;padding-left:0}
.num{display:block;white-space:nowrap;font:300 clamp(19px,2.1vw,25px)/1.14 var(--font-display);letter-spacing:.08em;color:var(--accent-hi);font-variant-numeric:tabular-nums}
/* a fact the manifest could not answer reads as unknown, never as blank -
   landing.js fills it the moment it has read latest.yml, and :empty stops
   matching the instant it does */
.num:empty::before{content:"\2014";color:var(--fg-mute)}
.lbl{display:block;margin-top:9px;font:400 10px/1 var(--font-mono);letter-spacing:.26em;text-transform:uppercase;color:var(--fg-mute)}
.note{margin:20px 0 0;max-width:62ch;color:var(--warn);font-size:13.5px}

/* the blocks */
.cols{display:grid;grid-template-columns:1fr;align-items:start}
.blk{margin:clamp(48px,7vw,84px) 0 0}
.blk h2{display:flex;align-items:baseline;gap:15px;margin:0 0 22px;font:400 12px/1 var(--font-display);letter-spacing:.32em;text-transform:uppercase;color:var(--fg)}
.blk h2 .ix{font:400 10.5px/1 var(--font-mono);letter-spacing:.18em;color:var(--accent)}

/* install: numbered "01 //" rows */
.steps{counter-reset:step;list-style:none;margin:0;padding:0}
.steps li{counter-increment:step;display:grid;grid-template-columns:62px 1fr;gap:16px;padding:17px 0;border-top:1px solid var(--hair-2);color:var(--fg-dim);font-size:14.5px}
.steps li:last-child{border-bottom:1px solid var(--hair-2)}
.steps li::before{content:counter(step,decimal-leading-zero) " //";font:400 11px/1.75 var(--font-mono);letter-spacing:.16em;color:var(--accent)}

/* keys: a hairline table */
.keys{width:100%;border-collapse:collapse}
.keys th,.keys td{padding:13px 0;text-align:left;vertical-align:middle;font-weight:400;border-top:1px solid var(--hair-2)}
.keys tr:last-child th,.keys tr:last-child td{border-bottom:1px solid var(--hair-2)}
.keys th{width:132px;padding-right:16px}
.keys td{color:var(--fg-dim);font-size:14.5px}
kbd{display:inline-block;min-width:60px;padding:7px 11px;text-align:center;border:1px solid var(--hair);border-radius:var(--r);background:var(--plate);color:var(--accent-hi);font:500 11px/1.2 var(--font-mono);letter-spacing:.14em;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}

/* what you get: "//" rows */
.list{list-style:none;margin:0;padding:0;display:grid;border-bottom:1px solid var(--hair-2)}
.list li{display:grid;grid-template-columns:34px 1fr;gap:12px;padding:14px 0;border-top:1px solid var(--hair-2);color:var(--fg-dim);font-size:14.5px}
.list li::before{content:"//";font:400 11px/1.8 var(--font-mono);color:var(--accent)}

/* the servers a player has to pick between */
.srv{list-style:none;margin:18px 0 0;padding:0;display:grid;gap:10px}
.srv li{padding:15px 19px;border:1px solid var(--hair);border-radius:var(--r);background:var(--plate);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.srv b{font:400 12px/1 var(--font-display);letter-spacing:.24em;text-transform:uppercase;color:var(--fg)}
.srv span{display:block;margin-top:7px;color:var(--fg-mute);font-size:13px}

/* the quiet lines: the self-update promise, the key note, the caps-lock note */
.quiet{margin:20px 0 0;max-width:64ch;color:var(--fg-mute);font-size:13.5px}
.quiet.warn{color:var(--warn)}
.qh{display:block;margin-bottom:7px;font:400 10px/1 var(--font-mono);letter-spacing:.26em;text-transform:uppercase;color:var(--fg-dim)}

.foot{display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;align-items:baseline;margin:clamp(52px,8vw,88px) 0 0;padding-top:22px;border-top:1px solid var(--hair-2);font:400 10.5px/1.6 var(--font-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--fg-mute)}
.foot a{color:var(--accent);text-decoration:none}
.foot a:hover,.foot a:focus-visible{color:var(--accent-hi)}

@media (min-width:900px){
  .cols{grid-template-columns:1fr 1fr;column-gap:64px}
  .list{grid-template-columns:1fr 1fr;column-gap:64px}
  .srv{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
}
@media (max-width:560px){
  .facts{display:block}
  .fact{padding:16px 0;border-left:0;border-top:1px solid var(--hair-2)}
  .fact:first-child{border-top:0}
  .btn{width:100%}
  .keys th{width:96px}
  .steps li{grid-template-columns:48px 1fr;gap:12px}
}
