:root{--ink:#0b0710;--plum:#1a0823;--purple:#321043;--pink:#e6007e;--rose:#ff5ab1;--paper:#fff9fd;--text:#17101b;--muted:#76667b;--line:rgba(255,255,255,.12);--soft:#f4e9f5;--green:#36d399}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--ink);color:#fff;font-family:Inter,system-ui,sans-serif;line-height:1.45}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}.nav{position:sticky;top:0;z-index:900;background:rgba(11,7,16,.84);backdrop-filter:blur(18px);border-bottom:1px solid var(--line)}.navin{max-width:1240px;margin:auto;padding:14px 22px;display:flex;justify-content:space-between;align-items:center}.brand{display:flex;align-items:center;gap:12px}.brand img{height:43px;filter:drop-shadow(0 0 16px rgba(230,0,126,.25))}.brand span{font-size:12px;text-transform:uppercase;letter-spacing:.14em;color:#e8d8ea;font-weight:850}.navlinks{display:flex;gap:24px;align-items:center;color:#e1d2e5;font-size:14px}.navlinks a{opacity:.84}.navlinks .cta{opacity:1;background:var(--pink);padding:11px 16px;border-radius:999px;font-weight:900;color:#fff}.hamb{display:none;background:rgba(255,255,255,.08);border:1px solid var(--line);border-radius:999px;color:#fff;padding:10px 12px}.hero{position:relative;overflow:hidden;background:linear-gradient(90deg,rgba(11,7,16,.98),rgba(11,7,16,.9) 44%,rgba(11,7,16,.35)),url('assets/hero.jpg') center/cover;min-height:770px}.hero:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 82% 16%,rgba(230,0,126,.25),transparent 24%)}.heroin{position:relative;z-index:2;max-width:1240px;margin:auto;padding:82px 22px 74px;display:grid;grid-template-columns:.9fr 1.1fr;gap:54px;align-items:center}.kicker{display:inline-flex;border:1px solid var(--line);padding:9px 12px;border-radius:999px;font-size:12px;text-transform:uppercase;letter-spacing:.13em;color:#ebddec;font-weight:900;background:rgba(255,255,255,.06)}h1{font-family:'DM Serif Display',serif;font-size:clamp(56px,7vw,104px);line-height:.92;letter-spacing:-.035em;margin:22px 0 18px;font-weight:400}.accent{color:#ff69bb}.lead{font-size:clamp(18px,2vw,23px);color:#ecdfef;max-width:710px;margin:0 0 28px}.actions{display:flex;gap:14px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;padding:15px 20px;border-radius:14px;font-weight:900;border:1px solid var(--line)}.btn.primary{background:var(--pink);box-shadow:0 22px 60px rgba(230,0,126,.24)}.btn.secondary{background:rgba(255,255,255,.08)}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:34px}.metric{border:1px solid var(--line);background:rgba(255,255,255,.065);border-radius:17px;padding:15px}.metric b{display:block;font-size:26px}.metric span{display:block;color:#d4c2d9;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.hero-photo{position:relative;border-radius:34px;overflow:hidden;border:1px solid var(--line);box-shadow:0 35px 100px rgba(0,0,0,.4)}.hero-photo img{width:100%;aspect-ratio:1.05/1;object-fit:cover}.photo-label{position:absolute;left:18px;bottom:18px;background:rgba(255,255,255,.94);color:#190920;border-radius:18px;padding:14px 16px;max-width:360px}.photo-label small{display:block;text-transform:uppercase;letter-spacing:.1em;color:#735f79;font-weight:900;font-size:10px}.photo-label b{font-size:19px}section{padding:82px 22px}.wrap{max-width:1240px;margin:auto}.head{display:flex;justify-content:space-between;gap:36px;align-items:end;margin-bottom:30px}.head h2{font-family:'DM Serif Display',serif;font-size:clamp(42px,5vw,74px);font-weight:400;line-height:.96;margin:0;letter-spacing:-.035em}.head p{max-width:620px;color:#d8c9dd;margin:0;font-size:17px}.paper{background:var(--paper);color:var(--text)}.paper .head p{color:var(--muted)}.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:22px}.filter{border:1px solid #eadbea;background:#fff;border-radius:999px;padding:10px 13px;font-size:13px;font-weight:850;color:#3c2941;cursor:pointer}.filter.active{background:#1b0823;color:#fff}.asset-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.asset-grid.compact{grid-template-columns:repeat(3,1fr)}.asset-card{background:#fff;border:1px solid #eddfef;border-radius:26px;overflow:hidden;box-shadow:0 18px 55px rgba(34,7,43,.08)}.asset-img{position:relative;background:#eadfea}.asset-img img{width:100%;aspect-ratio:1.2/1;object-fit:cover}.chip{position:absolute;top:13px;border-radius:999px;padding:8px 10px;font-size:12px;font-weight:950}.chip.code{left:13px;background:rgba(12,7,16,.86);color:#fff}.chip.type{right:13px;background:var(--pink);color:#fff}.chip.type.static{background:var(--green);color:#07180f}.asset-body{padding:18px}.asset-body .area{font-size:12px;text-transform:uppercase;letter-spacing:.11em;color:#8a738f;font-weight:950}.asset-body h3{font-size:21px;line-height:1.05;margin:7px 0 8px;letter-spacing:-.03em}.asset-body p{color:#68556f;font-size:14px;margin:0 0 15px;min-height:60px}.specs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:15px}.specs div{background:#fbf4fc;border:1px solid #efdfef;border-radius:13px;padding:10px}.specs small{display:block;font-size:10px;font-weight:950;text-transform:uppercase;letter-spacing:.08em;color:#917a98}.specs b{display:block;font-size:13px;margin-top:2px}.availability{display:flex;justify-content:center;background:linear-gradient(135deg,var(--pink),#7b2cff);color:#fff;border-radius:999px;padding:11px;font-weight:900;font-size:13px}.dark{background:#0b0710}.map-shell{display:grid;grid-template-columns:1.15fr .85fr;gap:24px;align-items:stretch}.map-card{border:1px solid var(--line);background:rgba(255,255,255,.055);border-radius:30px;overflow:hidden;min-height:560px;position:relative}.map-card #vortex-map{height:560px;width:100%;background:#130b18}.leaflet-container{font-family:Inter,system-ui,sans-serif;background:#130b18}.leaflet-popup-content-wrapper{border-radius:14px}.map-legend{position:absolute;z-index:500;left:18px;bottom:18px;background:rgba(10,7,15,.88);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.16);border-radius:16px;padding:12px 14px;color:#fff;font-size:13px;box-shadow:0 18px 50px rgba(0,0,0,.35)}.legend-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:7px}.legend-dot.digital{background:var(--pink)}.legend-dot.static{background:var(--green)}.map-list{border:1px solid var(--line);background:rgba(255,255,255,.055);border-radius:30px;padding:30px}.map-list h3{font-size:34px;letter-spacing:-.04em;margin:0 0 12px}.map-list .lead{font-size:17px}.map-proof{display:grid;gap:12px;margin-top:18px}.map-proof div{border-top:1px solid var(--line);padding-top:12px}.map-proof b{color:#ff79bf}.map-proof span{display:block;color:#decfe3;margin-top:3px}.data-note{margin-top:20px;color:#cdbbd2;font-size:14px}.pin-marker{width:18px;height:18px;border-radius:50%;border:3px solid #fff;box-shadow:0 0 0 5px rgba(230,0,126,.18),0 12px 26px rgba(0,0,0,.35)}.pin-marker.digital{background:var(--pink)}.pin-marker.static{background:var(--green);box-shadow:0 0 0 5px rgba(54,211,153,.18),0 12px 26px rgba(0,0,0,.35)}.static-table{width:100%;border-collapse:separate;border-spacing:0 10px;font-size:14px}.static-table th{text-align:left;color:#7b6682;font-size:11px;text-transform:uppercase;letter-spacing:.1em;padding:0 12px 6px}.static-table td{background:#fff;border-top:1px solid #efdfef;border-bottom:1px solid #efdfef;padding:14px 12px;color:#3b2b42;vertical-align:top}.static-table td:first-child{border-left:1px solid #efdfef;border-radius:15px 0 0 15px}.static-table td:last-child{border-right:1px solid #efdfef;border-radius:0 15px 15px 0}.static-table span{display:block;color:#7c6883;font-size:12px;margin-top:3px}.table-title{font-size:28px;margin:38px 0 12px}.proof{background:#130918}.proofgrid{display:grid;grid-template-columns:.85fr 1.15fr;gap:28px;align-items:center}.proof h2{font-family:'DM Serif Display',serif;font-size:56px;font-weight:400;line-height:.96;margin:0 0 12px}.proof p{color:#decfe3;font-size:18px}.proofcards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.proofcards div{border:1px solid var(--line);background:rgba(255,255,255,.055);border-radius:24px;padding:20px}.proofcards b{display:block;color:#fff}.proofcards span{display:block;color:#d4c3d9;margin-top:8px}.contact{background:linear-gradient(135deg,#250b31,#e6007e 130%);padding:76px 22px}.contactbox{max-width:1240px;margin:auto;display:grid;grid-template-columns:.9fr 1.1fr;gap:30px;align-items:center;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.22);border-radius:34px;padding:34px}.contact h2{font-family:'DM Serif Display',serif;font-size:58px;font-weight:400;line-height:.95;margin:0 0 14px}.contact p{color:#ffeaf6;font-size:18px}.form{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form textarea,.form .wide,.form button{grid-column:1/-1}.form input,.form select,.form textarea{width:100%;border:1px solid rgba(255,255,255,.22);background:rgba(10,7,15,.44);border-radius:14px;padding:14px;color:#fff;font:inherit}.form input::placeholder,.form textarea::placeholder{color:#ead1e1}.consent{font-size:12px;color:#f5dce9}.form button{border:0;color:#fff;cursor:pointer}.form-status{font-size:13px;margin:0;color:#fff}footer{background:#060407;color:#cbbbcf;padding:32px 22px}.footin{max-width:1240px;margin:auto;display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:22px;font-size:14px}footer b{color:#fff}footer a{display:block;margin-top:5px;color:#e6d9ea}.legal{max-width:820px;margin:60px auto;padding:0 22px;color:#fff}.legal h1{font-size:64px}.legal h2{margin-top:32px}.legal p{color:#e6d9ea}.backlink{color:#ff79bf;font-weight:800}@media(max-width:980px){.hamb{display:block}.navlinks{display:none}.brand span{display:none}.heroin,.map-shell,.contactbox,.proofgrid{grid-template-columns:1fr}.heroin{padding-top:48px;gap:28px}.hero{min-height:auto}.metrics{grid-template-columns:repeat(2,1fr)}.head{display:block}.asset-grid,.asset-grid.compact,.proofcards,.footin{grid-template-columns:1fr}section{padding:60px 18px}.static-wrap{overflow:auto}.static-table{min-width:860px}.form{grid-template-columns:1fr}.contact h2,.proof h2{font-size:44px}.map-card,.map-card #vortex-map{min-height:430px;height:430px}}
/* Honeypot: a field a human never sees and a bot fills in. It was being sent
   as an empty string by app.js but never existed in the form, so it blocked
   nothing. Must stay visually hidden but focusable-free, not display:none —
   some bots skip display:none fields. */
.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none}
/* Cards deep-link into their own generated page. */
.asset-card h3 a{color:inherit;text-decoration:none}
.asset-card h3 a:hover{text-decoration:underline}
.detail-link{display:inline-block;margin-left:12px;font-size:14px;font-weight:600;text-decoration:none}
.map-proof a{color:inherit}
.static-table td a{color:inherit;text-decoration:none}
.static-table td a:hover{text-decoration:underline}

/* Brand lockup: a circular mark reads as a mark at nav size, but the company
   name has to be readable text — the badge's own lettering is illegible at 38px. */
.brand{display:flex;align-items:center;gap:10px}
.brand img{border-radius:50%;flex:none}
.brand .bname{font-weight:800;letter-spacing:-.02em;font-size:17px;line-height:1;color:#fff}
.brand .btag{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;opacity:.62;padding-left:10px;margin-left:2px;border-left:1px solid rgba(255,255,255,.22)}
@media (max-width:720px){.brand .btag{display:none}}

/* The native select was rendering its own control on a dark magenta panel —
   a grey chevron strip on the right, and an OS-default white option list.
   appearance:none hands the whole control back to the design. */
.form select{
  appearance:none;-webkit-appearance:none;-moz-appearance:none;
  padding-right:44px;cursor:pointer;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1l6 6 6-6' fill='none' stroke='%23f0dcea' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 16px center;
}
/* The open list is drawn by the OS, so its colours must be set explicitly or
   it arrives white against a dark form. */
.form select option{background:#1a0823;color:#fff}
.form select option[value=""]{color:#c2aec8}
/* Muted until a real choice is made, so the prompt reads as a prompt. */
.form select[data-empty="1"]{color:#ead1e1}
.form select:focus-visible{outline:2px solid var(--pink);outline-offset:1px}

/* Consent row: the checkbox was rendering as a bare square centred above its
   own label. It belongs beside the words it applies to. */
.form .consent{display:flex;align-items:flex-start;gap:10px;text-align:left}
.form .consent input[type=checkbox]{
  appearance:auto;accent-color:var(--pink);
  width:18px;height:18px;flex:none;margin:1px 0 0;cursor:pointer;
}
.form .consent span,.form .consent{line-height:1.4}
