/* ElseNet — public landing (elsenet.app)
   CSP-clean: no inline styles/scripts anywhere. Served under default-src 'self'.
   Fonts are self-hosted below (latin, variable-weight woff2) — no external CDN — so a
   strict `font-src 'self'` holds and there is no third-party privacy leak. See README.md. */

/* Self-hosted fonts: latin subset, variable-weight woff2 (Google Fonts, OFL/Apache-2.0). */
@font-face{font-family:'Inter';font-style:normal;font-weight:300 700;font-display:swap;src:url(fonts/inter-latin-var.woff2) format('woff2')}
@font-face{font-family:'Space Grotesk';font-style:normal;font-weight:300 700;font-display:swap;src:url(fonts/spacegrotesk-latin-var.woff2) format('woff2')}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400 700;font-display:swap;src:url(fonts/jetbrainsmono-latin-var.woff2) format('woff2')}

:root{
  /* Warm aubergine/plum darks — 1960s SF psychedelia, kept deep & elegant (not trippy). */
  --ink:#130B1E; --panel:#1B1029; --panel2:#211534;
  --line:#FFFFFF14; --line2:#FFFFFF0A;
  --text:#F1EAF7; --muted:#A99BBC; --dim:#6C5E80;
  /* Accents pulled straight from the logo: gold dragon, magenta swirls, teal mesh, violet. */
  --amber:#F5A524; --amber-deep:#C77E13; --teal:#34D3B6; --priv:#A78BFA; --rose:#F0567A; --warn:#FF6B6B;
  /* The signature "sunset" blend — used sparingly on the wordmark, logo halo, section accents. */
  --sun:linear-gradient(105deg,#F5A524 0%,#F0567A 52%,#A78BFA 100%);
  --sun-h:linear-gradient(90deg,#F5A524 0%,#F0567A 38%,#A78BFA 66%,transparent);
  --disp:'Space Grotesk',system-ui,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,monospace;
  --body:'Inter',system-ui,'Segoe UI',sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--ink);
  background-image:radial-gradient(1100px 760px at 12% -8%, #F0567A14, transparent 60%),
                   radial-gradient(1000px 720px at 92% 108%, #A78BFA14, transparent 60%);
  background-attachment:fixed;
  color:var(--text);font-family:var(--body);font-size:16px;line-height:1.6;overflow-x:hidden}
::selection{background:var(--amber);color:#1A1206}
a{color:inherit}
button,input{font-family:inherit}
:focus-visible{outline:2px solid var(--amber);outline-offset:3px;border-radius:4px}

/* ── Nav ── */
nav{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;gap:20px;
  padding:16px clamp(20px,5vw,56px);background:#0B0E15D9;backdrop-filter:blur(12px);border-bottom:1px solid var(--line2)}
.logo{font-family:var(--mono);font-weight:700;font-size:18px;letter-spacing:.05em;text-decoration:none;
  display:inline-flex;align-items:center;gap:11px}
.logo .wm{letter-spacing:.02em}
.logo em{font-style:normal;color:var(--amber);background:var(--sun);-webkit-background-clip:text;
  background-clip:text;-webkit-text-fill-color:transparent}
.logomark{border-radius:50%;display:block;box-shadow:0 0 0 1px var(--line),0 2px 10px #0006}
nav .links{margin-left:auto;display:flex;gap:26px;align-items:center;font-size:13.5px;color:var(--muted)}
nav .links a{text-decoration:none}
nav .links a:hover{color:var(--text)}
.navcta{background:var(--amber);color:#1A1206;font-weight:700;font-size:13px;border:none;border-radius:99px;
  padding:9px 18px;cursor:pointer;text-decoration:none}
.navcta:hover{filter:brightness(1.07)}
@media(max-width:720px){nav .links a.hidemobile{display:none}}

/* ── Hero ── */
.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:center;
  padding:120px clamp(20px,5vw,56px) 60px;overflow:hidden}
#mesh{position:absolute;inset:0;width:100%;height:100%;opacity:.9}
.hero::after{content:"";position:absolute;inset:0;background:
  radial-gradient(1000px 600px at 50% 20%, transparent 40%, var(--ink) 95%),
  linear-gradient(180deg, transparent 60%, var(--ink) 100%);pointer-events:none}
.hero-inner{position:relative;z-index:2;max-width:880px}
.herobadge{position:relative;width:104px;height:104px;margin-bottom:28px}
.herobadge img{width:104px;height:104px;border-radius:50%;display:block;position:relative;z-index:2;
  box-shadow:0 0 0 1px #FFFFFF1f,0 10px 40px #00000080}
.herobadge::before{content:"";position:absolute;inset:-24px;border-radius:50%;z-index:1;
  background:conic-gradient(from 210deg,var(--amber),var(--rose),var(--priv),var(--teal),var(--amber));
  opacity:.3;filter:blur(17px);animation:badgeglow 14s linear infinite}
@keyframes badgeglow{
  0%{opacity:.24;transform:scale(1) rotate(0deg)}
  50%{opacity:.4;transform:scale(1.05) rotate(180deg)}
  100%{opacity:.24;transform:scale(1) rotate(360deg)}}
@media(max-width:520px){.herobadge,.herobadge img{width:84px;height:84px}}
.eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.34em;color:var(--teal);text-transform:uppercase;margin-bottom:22px}
.eyebrow::before{content:"◉ ";color:var(--amber)}
/* Pre-release notice (D91): elsenet.app is public but the client/plugins are still in development. */
.prerelease{display:inline-flex;align-items:center;gap:10px;margin-bottom:22px;max-width:560px;
  font-family:var(--mono);font-size:12px;line-height:1.5;color:var(--muted);text-decoration:none;
  padding:9px 15px 9px 13px;border:1px solid var(--line);border-radius:99px;background:var(--panel);
  position:relative;overflow:hidden}
.prerelease::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--sun)}
.prerelease:hover{border-color:#FFFFFF2e;color:var(--text)}
.prerelease .prd{flex:none;width:8px;height:8px;border-radius:50%;background:var(--amber);
  box-shadow:0 0 0 0 #F5A52466;animation:prpulse 2.8s ease-out infinite}
@keyframes prpulse{0%{box-shadow:0 0 0 0 #F5A52455}70%{box-shadow:0 0 0 8px #F5A52400}100%{box-shadow:0 0 0 0 #F5A52400}}
@media(prefers-reduced-motion:reduce){.prerelease .prd{animation:none}}
@media(max-width:520px){.prerelease{font-size:11px;letter-spacing:0}}
h1{font-family:var(--disp);font-weight:700;letter-spacing:-.03em;line-height:.98;font-size:clamp(52px,9.5vw,118px)}
h1 .else{color:var(--amber);background:var(--sun);-webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent}
.sub{margin-top:26px;max-width:560px;font-size:clamp(16px,2vw,19px);color:var(--muted)}
.sub b{color:var(--text);font-weight:600}
.ctarow{margin-top:36px;display:flex;gap:12px;flex-wrap:wrap;max-width:560px}
.cta{background:var(--amber);color:#1A1206;font-weight:700;font-size:15px;border:none;border-radius:11px;
  padding:13px 22px;cursor:pointer;white-space:nowrap;text-decoration:none;display:inline-block}
.cta:hover{filter:brightness(1.07)}
.cta:disabled{cursor:default;filter:none;opacity:.85}
.ctanote{margin-top:14px;font-family:var(--mono);font-size:11.5px;color:var(--dim)}
.ctanote .ok{color:var(--teal)}
.truststrip{position:relative;z-index:2;margin-top:64px;display:flex;gap:26px;flex-wrap:wrap;
  font-family:var(--mono);font-size:12px;color:var(--dim)}
.truststrip span b{color:var(--muted);font-weight:500}

/* ── Ticker ── */
.tickerwrap{border-top:1px solid var(--line2);border-bottom:1px solid var(--line2);background:var(--panel);overflow:hidden}
.ticker{display:flex;gap:0;width:max-content;animation:slide 42s linear infinite}
.tickerwrap:hover .ticker{animation-play-state:paused}
@keyframes slide{to{transform:translateX(-50%)}}
.trow{display:flex;align-items:center;gap:12px;padding:13px 26px;border-right:1px solid var(--line2);
  font-family:var(--mono);font-size:12px;white-space:nowrap}
.trow .nm{color:var(--text);font-weight:500}
.tag{font-size:9.5px;font-weight:700;letter-spacing:.08em;border-radius:4px;padding:2px 7px}
.t-chat{color:var(--teal);background:#34D3B61a}.t-file{color:var(--amber);background:#F5A5241c}
.t-game{color:#EC6FB4;background:#EC6FB41a}.t-tun{color:var(--priv);background:#A78BFA1c}
.t-cast{color:#5FA8FF;background:#5FA8FF1a}
.trow .geo{color:var(--dim)}
.trow .e2e{color:var(--teal)}

/* ── Sections ── */
section{padding:clamp(72px,10vw,130px) clamp(20px,5vw,56px)}
.wrap{max-width:1080px;margin:0 auto}
.kicker{font-family:var(--mono);font-size:11.5px;letter-spacing:.3em;color:var(--amber);text-transform:uppercase;margin-bottom:16px}
h2{font-family:var(--disp);font-weight:700;letter-spacing:-.02em;line-height:1.06;font-size:clamp(30px,4.6vw,52px)}
.lede{margin-top:16px;color:var(--muted);max-width:600px;font-size:17px}

/* pillars */
.pillars{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:16px;margin-top:52px}
.pillar{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:28px 26px;position:relative;overflow:hidden}
.pillar::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;
  background:var(--sun-h)}
.pillar .pico{font-size:22px;margin-bottom:16px;display:block}
.pillar h3{font-family:var(--disp);font-size:20px;letter-spacing:-.01em;margin-bottom:10px}
.pillar p{font-size:14px;color:var(--muted)}
.pillar .pmono{margin-top:18px;font-family:var(--mono);font-size:11px;color:var(--dim);
  border-top:1px dashed var(--line);padding-top:14px;line-height:1.9}
.pillar .pmono .g{color:var(--teal)} .pillar .pmono .a{color:var(--amber)} .pillar .pmono .r{color:var(--warn)}

/* ── Preview ("see it in action") ── */
.preview{background:linear-gradient(180deg,var(--ink),var(--panel2) 60%,var(--ink))}
.preview .wrap{max-width:1180px}
.previewhead{text-align:center;max-width:640px;margin:0 auto}
.previewhead .lede{margin-left:auto;margin-right:auto}
.appframe{margin-top:44px;border:1px solid var(--line);border-radius:16px;overflow:hidden;
  background:var(--panel);box-shadow:0 40px 120px #00000080;position:relative}
.appchrome{display:flex;align-items:center;gap:14px;padding:11px 16px;background:var(--panel2);border-bottom:1px solid var(--line)}
.appdots{display:flex;gap:7px}
.appdots i{width:11px;height:11px;border-radius:50%;display:block;background:var(--dim)}
.appdots i:nth-child(1){background:#FF5F57}.appdots i:nth-child(2){background:#FEBC2E}.appdots i:nth-child(3){background:#28C840}
.appurl{flex:1;display:flex;align-items:center;gap:8px;justify-content:center;font-family:var(--mono);font-size:12px;
  color:var(--muted);background:var(--ink);border:1px solid var(--line2);border-radius:8px;padding:6px 14px;max-width:340px;margin:0 auto}
.appurl .lk{color:var(--teal)}
.appopen{font-family:var(--mono);font-size:11.5px;color:var(--muted);text-decoration:none;border:1px solid var(--line);
  border-radius:8px;padding:6px 12px;white-space:nowrap}
.appopen:hover{color:var(--text);border-color:var(--amber)}
.appviewport{position:relative;background:var(--ink)}
.appviewport iframe{display:block;width:100%;height:660px;border:0}
.previewcap{margin-top:18px;text-align:center;font-family:var(--mono);font-size:11.5px;color:var(--dim)}
.previewcap b{color:var(--muted);font-weight:500}
@media(max-width:720px){.appviewport iframe{height:560px}}

/* ── Plugins we're building ── */
.plugins .wrap{max-width:1080px}
.pluglist{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px;margin-top:52px}
.pcard{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:24px 22px;position:relative;display:flex;flex-direction:column}
.pcard .picon{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;font-size:23px;
  background:#F5A5241c;margin-bottom:16px}
.pcard h3{font-family:var(--disp);font-size:18px;letter-spacing:-.01em;margin-bottom:3px}
.pcard .pdev{font-family:var(--mono);font-size:11px;color:var(--dim);margin-bottom:12px}
.pcard p{font-size:13.5px;color:var(--muted);flex:1}
.pcard .pfoot{margin-top:18px;display:flex;align-items:center;gap:10px;
  border-top:1px dashed var(--line);padding-top:14px}
.statusbadge{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  border-radius:6px;padding:4px 9px;display:inline-flex;align-items:center;gap:6px}
.statusbadge .sd{width:6px;height:6px;border-radius:50%;display:block}
.sb-live{color:var(--teal);background:#34D3B61a}.sb-live .sd{background:var(--teal)}
.sb-dev{color:var(--amber);background:#F5A5241c}.sb-dev .sd{background:var(--amber)}
.sb-plan{color:var(--dim);background:#55617A1c}.sb-plan .sd{background:var(--dim)}
.pcard .pver{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--dim)}

/* ── Claim ── */
.claim{background:var(--panel);border-top:1px solid var(--line2);border-bottom:1px solid var(--line2)}
.claimgrid{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center}
@media(max-width:860px){.claimgrid{grid-template-columns:1fr}}
.claiminput{display:flex;align-items:center;background:var(--ink);border:1px solid var(--line);border-radius:14px;
  padding:6px 6px 6px 18px;margin-top:28px;max-width:420px}
.claiminput:focus-within{border-color:var(--teal)}
.claiminput input{flex:1;background:none;border:none;outline:none;color:var(--text);
  font-family:var(--mono);font-size:15px;min-width:0}
.claiminput .sfx{font-family:var(--mono);color:var(--dim);font-size:15px;margin-right:10px}
.claimbtn{background:var(--teal);color:#062520;font-weight:700;font-size:14px;border:none;border-radius:10px;
  padding:11px 18px;cursor:pointer}
.claimbtn:hover{filter:brightness(1.07)}
.bigname{font-family:var(--mono);font-weight:700;font-size:clamp(30px,4.4vw,52px);letter-spacing:-.02em;
  word-break:break-all;line-height:1.15}
.bigname .n{color:var(--text)} .bigname .d{color:var(--amber)}
.bigcard{background:var(--ink);border:1px solid var(--line);border-radius:24px;padding:clamp(28px,4vw,48px);
  box-shadow:0 30px 80px #00000066}
.bigcard .rowline{display:flex;justify-content:space-between;font-family:var(--mono);font-size:11.5px;color:var(--dim);margin-bottom:26px}
.bigcard .rowline .st{color:var(--teal)}
.bigcard .meta{margin-top:26px;font-family:var(--mono);font-size:12px;color:var(--muted);line-height:2.1;
  border-top:1px dashed var(--line);padding-top:20px}
.bigcard .meta .k{color:var(--dim);display:inline-block;min-width:110px}

/* ── Manifesto ── */
.manifesto .wrap{max-width:820px}
blockquote{font-family:var(--disp);font-weight:500;font-size:clamp(22px,3.4vw,34px);line-height:1.4;letter-spacing:-.01em}
blockquote .hl{color:var(--amber)}
.attrib{margin-top:26px;font-family:var(--mono);font-size:12px;color:var(--dim)}

/* ── Footer ── */
footer{border-top:1px solid var(--line2);padding:36px clamp(20px,5vw,56px);display:flex;gap:20px;flex-wrap:wrap;
  align-items:center;font-family:var(--mono);font-size:12px;color:var(--dim)}
footer .logo{font-size:14px}
footer .fspacer{flex:1}

/* ── Reveal ── */
.rv{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s ease}
.rv.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .ticker{animation:none}
  .herobadge::before{animation:none}
  .rv{opacity:1;transform:none;transition:none}
  html{scroll-behavior:auto}
}
