/* VPNEQ design system — base layer: tokens, reset, typography, shell, buttons, reveal */

:root{
  /* ---- surfaces ---- */
  --bg:#F6EFE1;
  --bg-panel:#FCF8F0;
  --bg-panel2:#EDE3D0;
  --hero-top:#FAF5EA;
  --hero-bot:#F1E8D6;
  --sidebar:#241C15;

  /* ---- borders ---- */
  --border:#DFD2B9;
  --border-soft:rgba(223,210,185,.55);
  --paper-line:rgba(255,255,255,.72);

  /* ---- accent ---- */
  --accent:#E6B422;
  --accent-dark:#85610A;
  --accent-soft:rgba(230,180,34,.12);
  --accent-tint:rgba(230,180,34,.06);

  /* ---- text ---- */
  --text:#2A2119;
  --text-muted:#6F6354;
  --on-dark:rgba(252,248,240,.78);
  --on-dark-dim:rgba(252,248,240,.42);

  /* ---- semantic ---- */
  --success:#2F7A4B;
  --warn:#C6811A;
  --error:#B93A2E;

  /* ---- elevation ---- */
  --shadow-win:0 32px 64px -20px rgba(230,180,34,.16),0 18px 40px -22px rgba(42,33,25,.18),0 1px 2px rgba(42,33,25,.05);
  --shadow-float:0 18px 36px -14px rgba(230,180,34,.18),0 6px 14px -8px rgba(42,33,25,.14);
  --shadow-btn:0 10px 22px -12px rgba(42,33,25,.45);
  --shadow-card:0 14px 30px -18px rgba(230,180,34,.20),0 4px 12px -8px rgba(42,33,25,.12);

  /* ---- geometry ---- */
  --r-sm:8px;
  --r-md:12px;
  --r-lg:16px;
  --r-pill:999px;
  --wrap:1344px;
  --gutter:32px;
  --gutter-sm:16px;

  /* ---- type ---- */
  --font-display:'Inter','Noto Sans SC','Noto Sans JP','Noto Sans KR','PingFang SC','Microsoft YaHei',system-ui,-apple-system,sans-serif;
  --font-body:'Inter','Noto Sans SC','Noto Sans JP','Noto Sans KR','PingFang SC','Hiragino Sans GB','Microsoft YaHei',system-ui,-apple-system,sans-serif;
  --font-mono:'JetBrains Mono',ui-monospace,'SF Mono',Menlo,Consolas,'Liberation Mono',monospace;

  /* ---- grain texture ---- */
  --grain:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='g'><feTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='140' height='140' filter='url(%23g)' opacity='.5'/></svg>");

  --dur-fast:.18s;
  --dur:.28s;
}

*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:96px}
body{
  background:var(--bg);color:var(--text);
  font-family:var(--font-body);font-size:15px;line-height:1.6;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
body:has(.float-cta)::after{content:'';display:block;height:calc(88px + env(safe-area-inset-bottom,0px))}
img,svg,video{display:block;max-width:100%}
img{height:auto}
a{color:inherit;text-decoration:none}
ul{list-style:none;margin:0;padding:0}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
input,select,textarea{font:inherit;color:inherit}
h1,h2,h3,h4{margin:0;font-family:var(--font-display);line-height:1.15;letter-spacing:-.02em}
p{margin:0 0 1em}
p:last-child{margin-bottom:0}
::selection{background:var(--accent-soft)}

/* keyboard focus — visible ring everywhere, colour follows the token set */
a:focus-visible,button:focus-visible,summary:focus-visible,
input:focus-visible,select:focus-visible,textarea:focus-visible,
[role="tab"]:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--accent-dark);outline-offset:2px;border-radius:4px;
}

/* ---------- layout helpers ---------- */
.wrap{max-width:var(--wrap);margin:0 auto;padding-left:var(--gutter);padding-right:var(--gutter);width:100%}
.wrap-narrow{max-width:920px}
.wrap-wide{max-width:1560px}
.grid{display:grid;gap:24px}
.grid > *{min-width:0}
.sec{padding-top:88px;padding-bottom:88px}
.sec-sm{padding-top:56px;padding-bottom:56px}
.sec-lg{padding-top:112px;padding-bottom:112px}
.stack > * + *{margin-top:16px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

.eyebrow{font-family:var(--font-mono);font-size:11.5px;letter-spacing:.08em;color:var(--text-muted);text-transform:uppercase}
.lead{font-size:18px;line-height:1.6;color:var(--text-muted);max-width:64ch}
.muted{color:var(--text-muted)}
.mono{font-family:var(--font-mono)}
.no-break{white-space:nowrap}
.no-break-wide{white-space:nowrap}

/* inline code: long subscription URLs / filenames must never break 375px */
code{
  font-family:var(--font-mono);font-size:.92em;
  background:var(--bg-panel2);border:1px solid var(--border-soft);border-radius:4px;
  padding:1px 5px;overflow-wrap:anywhere;word-break:break-word;
}
pre{
  margin:0 0 1.2em;padding:16px 18px;background:var(--sidebar);color:var(--on-dark);
  border-radius:var(--r-sm);overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;
  font-family:var(--font-mono);font-size:13px;line-height:1.65;
}
pre code{background:none;border:0;padding:0;color:inherit;overflow-wrap:normal;word-break:normal;white-space:pre}

/* ---------- section headings ---------- */
.sec-head{max-width:760px;margin-bottom:40px}
.sec-head.center{margin-left:auto;margin-right:auto;text-align:center}
.sec-head h2{font-weight:900;font-size:clamp(28px,3.4vw,40px);letter-spacing:-.025em;margin-top:12px}
.sec-head p{margin-top:14px;font-size:16.5px;color:var(--text-muted)}
.hl{position:relative;display:inline-block;padding:0 .06em;background:linear-gradient(transparent 64%,var(--accent) 64%,var(--accent) 92%,transparent 92%);border-radius:2px}
.hl-line{background:linear-gradient(transparent 62%,var(--accent-soft) 62%);border-radius:2px;padding:0 .05em}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-height:44px;padding:11px 20px;border-radius:var(--r-sm);
  font-size:15px;font-weight:600;line-height:1.2;white-space:nowrap;flex-shrink:0;
  border:1px solid transparent;transition:background var(--dur-fast),border-color var(--dur-fast),color var(--dur-fast);
}
.btn svg{width:16px;height:16px;flex-shrink:0}
.btn-primary{background:var(--text);color:var(--bg-panel);box-shadow:var(--shadow-btn)}
.btn-primary:hover{background:var(--sidebar)}
.btn-ghost{background:var(--bg-panel);border-color:var(--border);color:var(--text);box-shadow:inset 0 1px 0 var(--paper-line)}
.btn-ghost:hover{border-color:var(--accent-dark)}
.btn-accent{background:var(--accent);color:var(--text);box-shadow:var(--shadow-btn)}
.btn-accent:hover{background:#d9a916}
.btn-quiet{background:transparent;border-color:var(--border-soft);color:var(--text-muted)}
.btn-quiet:hover{color:var(--text);border-color:var(--border)}
.btn-lg{min-height:52px;padding:14px 26px;font-size:16px;font-weight:700}
.btn-sm{min-height:34px;padding:7px 13px;font-size:13.5px}
.btn-block{width:100%}
.btn[disabled],.btn[aria-disabled="true"]{opacity:.45;pointer-events:none}

/* ---------- badges / chips / pills ---------- */
.badge{display:inline-flex;align-items:center;gap:8px;height:30px;padding:0 12px 0 10px;border:1px solid var(--border);border-radius:var(--r-pill);background:var(--bg-panel);font-size:13px;font-weight:600;box-shadow:inset 0 1px 0 var(--paper-line);max-width:100%}
.badge i{width:8px;height:8px;border-radius:50%;background:var(--accent);flex-shrink:0}
.badge svg{width:14px;height:14px;flex-shrink:0}
.badge-plain{border-radius:var(--r-sm)}
.chip{position:relative;display:inline-flex;align-items:center;height:34px;padding:0 14px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg-panel);font-size:13.5px;font-weight:600;color:var(--text);box-shadow:inset 0 1px 0 var(--paper-line);max-width:100%;overflow:hidden}
.chip.is-on{border:1.5px solid var(--accent);color:var(--accent-dark);background:var(--bg-panel)}
.chip.is-on::after{content:"";position:absolute;top:-6px;right:-6px;width:14px;height:14px;border-radius:50%;background:var(--accent);border:2px solid var(--hero-top)}
.chip.is-on .tick{position:absolute;top:-4px;right:-4px;width:10px;height:10px;color:var(--text);z-index:1}
.chip.more{color:var(--text-muted);font-weight:500;border-style:dashed;background:transparent;box-shadow:none}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.tag{display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:var(--r-pill);background:var(--accent-soft);color:var(--accent-dark);font-size:11.5px;font-weight:700;max-width:100%;overflow:hidden;white-space:nowrap}
.tag-neutral{background:var(--bg-panel2);color:var(--text-muted)}
.tag-success{background:rgba(47,122,75,.12);color:var(--success)}

/* ---------- cards / panels ---------- */
.panel{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:inset 0 1px 0 var(--paper-line)}
.card{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-md);padding:24px;box-shadow:var(--shadow-card),inset 0 1px 0 var(--paper-line)}
.card > *{min-width:0}
.card h3{font-size:18px;font-weight:800}
.card p{color:var(--text-muted);font-size:14.5px}
.card-flat{box-shadow:inset 0 1px 0 var(--paper-line)}
.divider{height:1px;background:var(--border-soft);border:0;margin:0}

/* ---------- header ---------- */
.site-top{background:var(--hero-top)}
.notice{background:var(--bg-panel2);border-bottom:1px solid var(--border);min-height:40px}
.notice .wrap{position:relative;display:flex;align-items:center;justify-content:center;min-height:40px;padding-top:6px;padding-bottom:6px}
.notice-text{font-size:13.5px;font-weight:500;color:var(--text);text-align:center}
.notice-text b{font-weight:700}
.notice-link{position:absolute;right:var(--gutter);top:50%;transform:translateY(-50%);font-size:13.5px;font-weight:600;color:var(--accent-dark);display:inline-flex;align-items:center;gap:6px;min-height:28px}
.notice-link svg{width:14px;height:14px}

.topbar{height:72px;background:var(--hero-top);border-bottom:1px solid var(--border-soft)}
.topbar .wrap{position:relative;display:flex;align-items:center;height:100%;gap:32px}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--font-display);flex-shrink:0}
.brand img,.brand svg{width:32px;height:32px;border-radius:8px;flex-shrink:0}
.brand-name{font-size:21px;font-weight:900;letter-spacing:-.02em}
.brand-name-alt{font-size:14px;font-weight:600;color:var(--text-muted);letter-spacing:0}
.nav{display:flex;align-items:center;font-size:14.5px;font-weight:500;color:var(--text);min-width:0}
.nav ul{display:flex;align-items:center;list-style:none;margin:0;padding:0}
.nav li{display:flex;align-items:center}
.nav li+li::before{content:"·";color:var(--border);margin:0 13px;font-weight:700}
.nav a{padding:6px 2px;border-bottom:2px solid transparent;display:inline-flex;align-items:center;min-height:34px}
.nav a.is-active{border-bottom-color:var(--accent);font-weight:600}
.nav a:hover{color:var(--accent-dark)}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:14px;flex-shrink:0}
.btn-login{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:9px 18px;border-radius:var(--r-sm);background:var(--bg-panel);border:1px solid var(--border);font-size:14px;font-weight:600;box-shadow:inset 0 1px 0 var(--paper-line);white-space:nowrap}
.btn-login:hover{border-color:var(--accent-dark)}
.lang{position:relative}
.lang-btn{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:38px;min-width:44px;padding:8px 10px;border:1px solid transparent;border-radius:var(--r-sm);font-size:13.5px;color:var(--text-muted)}
.lang-btn:hover{border-color:var(--border);color:var(--text)}
.lang-btn svg{width:11px;height:11px;flex-shrink:0}
.lang-menu{position:absolute;right:0;top:calc(100% + 8px);min-width:160px;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-sm);box-shadow:var(--shadow-float);padding:6px;display:none;z-index:60;z-index:60}
.lang-menu.is-open{display:block}
.lang-menu a{display:flex;align-items:center;min-height:38px;padding:8px 12px;border-radius:6px;font-size:14px;color:var(--text)}
.lang-menu a:hover{background:var(--bg-panel2)}
.lang-menu a[aria-current="true"]{color:var(--accent-dark);font-weight:700;background:var(--accent-tint)}
.burger{display:none;align-items:center;justify-content:center;min-width:44px;min-height:44px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg-panel)}
.burger svg{width:20px;height:20px}
.mobile-nav{display:none}
.mobile-nav.is-open{
  display:block;position:absolute;left:0;right:0;top:100%;z-index:80;
  background:var(--bg-panel);border-bottom:1px solid var(--border);
  box-shadow:var(--shadow-float);padding:8px var(--gutter) 16px;
  max-height:calc(100vh - 72px);overflow-y:auto;overscroll-behavior:contain;
}
.mobile-nav li{border-bottom:1px solid var(--border-soft)}
.mobile-nav a{display:flex;align-items:center;width:100%;min-height:48px;padding:12px 4px;font-size:15px;font-weight:600;color:var(--text)}
.mobile-nav a.is-active{color:var(--accent-dark)}
.mobile-nav-sep{height:1px;background:var(--border);margin:10px 0}
.mobile-nav-langs{display:flex;flex-direction:column;gap:0}
.mobile-nav-langs li{border-bottom:1px solid var(--border-soft)}
.mobile-nav-langs a{width:100%;min-height:48px;padding:12px 4px;font-size:14.5px;font-weight:500}
.mobile-nav-login,.mobile-nav-signup{justify-content:center;border-radius:var(--r-sm);margin<|place_holder_mm_span_0442|>-top:10px}
.mobile-nav-login,.mobile-nav-signup{justify-content:center;border-radius:var(--r-sm);margin-top:10px}
html.nav-open{overflow:hidden}

/* ---------- footer ---------- */
.site-foot{background:var(--bg-panel2);border-top:1px solid var(--border);margin-top:0}
.site-foot .wrap{padding-top:56px;padding-bottom:28px}
.foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:40px}
.foot-grid > *{min-width:0}
.foot-brand{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-weight:900;font-size:20px}
.foot-brand img,.foot-brand svg{width:30px;height:30px;border-radius:8px;flex-shrink:0}
.foot-desc{margin-top:14px;font-size:14px;color:var(--text-muted);max-width:34ch}
.foot-h{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-bottom:14px}
.foot-list li{margin-bottom:9px}
.foot-list a{font-size:14px;color:var(--text);display:inline-flex;align-items:center;min-height:24px}
.foot-list a:hover{color:var(--accent-dark)}
.foot-tags{display:flex;flex-wrap:wrap;gap:8px}
.foot-tags a{display:inline-flex;align-items:center;min-height:28px;padding:4px 10px;border:1px solid var(--border);border-radius:var(--r-pill);background:var(--bg-panel);font-size:12.5px;color:var(--text-muted);max-width:100%;overflow:hidden;white-space:nowrap}
.foot-tags a:hover{color:var(--accent-dark);border-color:var(--accent-dark)}
.foot-langs{display:flex;flex-wrap:wrap;gap:10px}
.foot-langs a{display:inline-flex;align-items:center;min-height:30px;padding:4px 12px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg-panel);font-size:13px}
.foot-langs a:hover{border-color:var(--accent-dark)}
.foot-bottom{margin-top:44px;padding-top:20px;border-top:1px solid var(--border);display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;justify-content:space-between;font-size:13px;color:var(--text-muted)}
.foot-legal{display:flex;flex-wrap:wrap;gap:18px}
.foot-legal a{display:inline-flex;align-items:center;min-height:24px}
.foot-legal a:hover{color:var(--accent-dark)}

/* ---------- float CTA (bottom-right, always on) ---------- */
.float-cta{
  position:fixed;right:24px;bottom:calc(24px + env(safe-area-inset-bottom,0px));z-index:70;
  display:inline-flex;align-items:center;gap:9px;min-height:48px;padding:12px 20px;
  border-radius:var(--r-pill);background:var(--text);color:var(--bg-panel);
  font-size:14.5px;font-weight:700;box-shadow:0 16px 32px -14px rgba(42,33,25,.55),0 0 0 1px rgba(252,248,240,.12) inset;
}
.float-cta svg{width:16px;height:16px;flex-shrink:0;color:var(--accent)}
.float-cta:hover{background:var(--sidebar)}

/* ---------- reveal (visible by default; hidden state is opt-in) ---------- */
.reveal{transition:opacity .55s ease,transform .55s ease}
.reveal.pending{opacity:0;transform:translateY(16px)}
.reveal.shown{opacity:1;transform:none}

/* ---------- misc ---------- */
#server-status{display:block;width:100%;max-width:100%;overflow:hidden;margin:0 0 24px}
#server-status > *{max-width:100%}
.callout{border-left:3px solid var(--accent);background:var(--bg-panel);border-radius:0 var(--r-sm) var(--r-sm) 0;padding:16px 20px;margin:0 0 1.2em}
.callout p{color:var(--text);font-size:14.5px;margin:0}
.callout p + p{margin-top:.6em}
.callout-note{border-left-color:var(--border)}
.callout-warn{border-left-color:var(--warn)}
.callout-danger{border-left-color:var(--error)}
.callout-success{border-left-color:var(--success)}

/* table safety net for bare tables pasted into prose */
.prose{font-size:16px;line-height:1.75;color:var(--text)}
.prose h2{margin:2em 0 .7em;font-size:26px;font-weight:900;letter-spacing:-.02em}
.prose h3{margin:1.6em 0 .5em;font-size:19px;font-weight:800}
.prose p{margin:0 0 1.1em;color:var(--text)}
.prose ul,.prose ol{margin:0 0 1.2em;padding-left:1.3em}
.prose ul li{list-style:disc}
.prose ol li{list-style:decimal}
.prose li{margin-bottom:.5em}
.prose blockquote{margin:0 0 1.2em;padding:12px 18px;border-left:3px solid var(--border);background:var(--bg-panel);color:var(--text-muted);border-radius:0 var(--r-sm) var(--r-sm) 0}
.prose > .data-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;min-width:0}
.prose img{border-radius:var(--r-sm);border:1px solid var(--border)}

/* ---------- responsive ---------- */
@media (max-width:1180px){
  :root{--gutter:24px}
  .foot-grid{grid-template-columns:1.4fr 1fr 1fr;gap:32px}
  .foot-grid > :last-child{grid-column:1 / -1}
}
@media (max-width:900px){
  .nav{display:none}
  .burger{display:inline-flex}
  .topbar-right{margin-left:auto}
  .foot-grid{grid-template-columns:1fr 1fr}
  .foot-grid > :last-child{grid-column:auto}
}
@media (max-width:768px){
  :root{--gutter:20px}
  .sec{padding-top:60px;padding-bottom:60px}
  .sec-lg{padding-top:72px;padding-bottom:72px}
  .notice{padding-top:2px;padding-bottom:2px}
  .notice-link{display:none}
  .topbar{height:64px}
  .topbar .wrap{gap:12px}
  .brand-name{font-size:19px}
  .foot-grid{grid-template-columns:1fr;gap:28px}
  .float-cta{right:14px;bottom:calc(14px + env(safe-area-inset-bottom,0px));font-size:13.5px;padding:10px 16px}
}
@media (max-width:640px){
  :root{--gutter:16px}
  body{font-size:14.5px}
  .no-break{white-space:normal}
  .no-break-wide{white-space:normal}
  .tilt,.tilt-hover{transform:none !important}
  .card{padding:18px}
  .sec-head h2{font-size:26px}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .reveal,.reveal.pending{opacity:1;transform:none;transition:none}
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
}