/* ZoonoTrack Design System â€” institutional, no emoji, no formulas */
:root {
  --ink:#0b1009;--ink2:#18261c;--ink3:#233228;
  --surf:#f5f6f3;--surf2:#eceee9;--white:#ffffff;
  --line:#d8dbd4;--line2:#c4c9bc;
  --sig:#0d6e4f;--sig2:#0a5940;--sig3:#e9f5ef;
  --amb:#9a6b1a;--amb2:#fdf6ec;
  --crit:#8b1a1a;--crit2:#fdf0f0;
  --data:#1a3a5c;--data2:#eef3f8;
  --pur:#3c3489;--pur2:#eeedfe;
  --mono:'JetBrains Mono','Fira Code',monospace;
  --sans:'Inter',-apple-system,'Segoe UI',sans-serif;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--sans);background:var(--white);color:var(--ink);font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
/* sysbar */
.sysbar{background:var(--ink2);padding:7px 32px;display:flex;align-items:center;justify-content:space-between;font-family:var(--mono);font-size:10px;color:#3a5a48;letter-spacing:.04em;border-bottom:1px solid var(--ink3)}
.sysbar .live{color:#3ec87e;display:flex;align-items:center;gap:6px}
.pulse{width:5px;height:5px;background:#3ec87e;border-radius:50%;animation:blink 2s ease-in-out infinite;flex-shrink:0}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.25}}
/* nav */
.nav{background:var(--white);border-bottom:1px solid var(--line);height:58px;padding:0 32px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:500}
.nav-id{display:flex;align-items:center;gap:12px}
.nav-logo{width:26px;height:26px;background:var(--sig);display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:10px;font-weight:600;color:#fff;flex-shrink:0}
.nav-name{font-size:14px;font-weight:500;letter-spacing:-.02em}
.nav-sep{width:1px;height:16px;background:var(--line)}
.nav-tag{font-size:11px;color:#888;letter-spacing:.03em}
.nav-links{display:flex;align-items:center}
.nav-links a{font-size:13px;color:#555;padding:0 13px;height:58px;display:flex;align-items:center;border-bottom:2px solid transparent;transition:all .15s;letter-spacing:-.01em}
.nav-links a:hover{color:var(--ink)}
.nav-links a.on{color:var(--sig);border-bottom-color:var(--sig)}
.nav-cta{font-size:12px;font-weight:500;color:var(--white)!important;background:var(--sig);padding:7px 16px;height:auto!important;border:none!important;letter-spacing:.01em}
.nav-cta:hover{background:var(--sig2)!important}
.nav-login{font-size:12px;font-weight:500;color:var(--data)!important;border:1px solid var(--data)!important;padding:6px 14px;height:auto!important;border-bottom:1px solid var(--data)!important}
.nav-login:hover{background:var(--data2)!important}
/* layout */
.con{max-width:1120px;margin:0 auto;padding:0 32px}
.sec{padding:72px 0}
.sec-sm{padding:44px 0}
hr.rule{border:none;border-top:1px solid var(--line)}
.overline{font-family:var(--mono);font-size:10px;color:#888;letter-spacing:.08em;text-transform:uppercase;margin-bottom:10px}
.h1{font-size:clamp(28px,4.5vw,52px);font-weight:300;letter-spacing:-.04em;line-height:1.12}
.h2{font-size:clamp(20px,3vw,34px);font-weight:300;letter-spacing:-.03em;line-height:1.2}
.h3{font-size:16px;font-weight:500;letter-spacing:-.02em}
.lead{font-size:15px;color:#555;line-height:1.75;max-width:560px}
/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 20px;font-family:var(--sans);font-size:13px;font-weight:500;cursor:pointer;border:none;transition:all .15s;letter-spacing:-.01em;white-space:nowrap;text-decoration:none}
.btn-sig{background:var(--sig);color:#fff}.btn-sig:hover{background:var(--sig2);color:#fff}
.btn-ghost{background:transparent;color:var(--sig);border:1px solid var(--sig)}.btn-ghost:hover{background:var(--sig3)}
.btn-ink{background:var(--ink2);color:#b8d8c4}.btn-ink:hover{background:var(--ink3);color:#d8f0e4}
.btn-data{background:transparent;color:var(--data);border:1px solid var(--data)}.btn-data:hover{background:var(--data2)}
.btn-crit{background:var(--crit);color:#fff}.btn-crit:hover{background:#6b1414;color:#fff}
.btn-full{width:100%}
/* chips */
.chip{display:inline-block;padding:2px 9px;font-size:11px;font-weight:500;letter-spacing:.02em}
.chip-sig{background:var(--sig3);color:var(--sig2)}
.chip-data{background:var(--data2);color:var(--data)}
.chip-amb{background:var(--amb2);color:var(--amb)}
.chip-crit{background:var(--crit2);color:var(--crit)}
.chip-pur{background:var(--pur2);color:var(--pur)}
.chip-neutral{background:var(--surf2);color:#555}
/* grid / card */
.g2{display:grid;grid-template-columns:1fr 1fr;gap:1px}
.g3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1px}
.g4{display:grid;grid-template-columns:repeat(4,1fr);gap:1px}
.gb{border:1px solid var(--line);overflow:hidden}
.ci{background:var(--white);padding:26px 22px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.stat-n{font-family:var(--mono);font-size:22px;font-weight:500;color:var(--sig);display:block;line-height:1}
.stat-l{font-size:10px;color:#888;margin-top:5px;letter-spacing:.04em;text-transform:uppercase}
/* form */
.field{margin-bottom:15px}
.field label{display:block;font-size:11px;font-weight:500;color:#555;margin-bottom:5px;letter-spacing:.03em;text-transform:uppercase}
.field input,.field select,.field textarea{width:100%;padding:9px 12px;border:1px solid var(--line);background:var(--white);font-family:var(--sans);font-size:14px;color:var(--ink);outline:none;border-radius:0;-webkit-appearance:none;transition:border-color .15s}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--sig)}
.field select option{background:var(--white)}
.igroup{display:flex}.igroup input{flex:1}
.fr2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.hint{font-size:11px;color:#888;margin-top:4px;line-height:1.5}
.req::after{content:' *';color:var(--crit)}
/* alert */
.alert{border-left:3px solid;padding:11px 16px;font-size:13px;margin-bottom:14px;line-height:1.6}
.alert-sig{border-color:var(--sig);background:var(--sig3)}
.alert-crit{border-color:var(--crit);background:var(--crit2)}
.alert-amb{border-color:var(--amb);background:var(--amb2)}
/* table */
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{padding:9px 14px;background:var(--surf);border-bottom:1px solid var(--line);text-align:left;font-size:10px;font-weight:500;color:#888;letter-spacing:.06em;text-transform:uppercase}
.tbl td{padding:9px 14px;border-bottom:1px solid var(--line)}
.tbl tr:last-child td{border:none}
.tbl tr:hover td{background:var(--surf)}
.mono{font-family:var(--mono);font-size:12px;color:var(--sig)}
/* cert */
.cert{border:1px solid var(--line);max-width:500px}
.cert-head{background:var(--sig);padding:16px 20px}
.cert-id{font-family:var(--mono);font-size:18px;color:#fff;font-weight:500}
.cert-sub{font-family:var(--mono);font-size:10px;color:#9de8c5;letter-spacing:.06em;text-transform:uppercase;margin-bottom:4px}
.cert-badge{font-family:var(--mono);font-size:10px;color:#3ec87e;background:rgba(0,0,0,.25);padding:3px 9px;letter-spacing:.05em}
.cert-row{display:flex;justify-content:space-between;padding:10px 20px;border-bottom:1px solid var(--line);font-size:13px}
.cert-row:last-child{border:none}
.cert-key{color:#888}
.cert-val{font-weight:500}
.cert-foot{background:var(--surf);padding:8px 20px;border-top:1px solid var(--line);font-family:var(--mono);font-size:10px;color:#888;letter-spacing:.03em}
.strack{height:3px;background:var(--line);overflow:hidden;margin:10px 20px 4px}
.sfill{height:100%;background:var(--sig);transition:width 1.2s ease}
/* hero */
.hero{background:var(--ink2);padding:68px 32px 0;min-height:84vh;display:flex;flex-direction:column;position:relative;overflow:hidden}
.hero::before{content:'';position:absolute;inset:0;background-image:linear-gradient(rgba(13,110,79,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(13,110,79,.03) 1px,transparent 1px);background-size:52px 52px;pointer-events:none}
.hero-body{position:relative;z-index:1;max-width:800px}
.hero-sys{font-family:var(--mono);font-size:11px;color:#3ec87e;letter-spacing:.07em;display:flex;align-items:center;gap:7px;margin-bottom:20px}
.hero h1{font-size:clamp(30px,5vw,58px);font-weight:300;letter-spacing:-.04em;color:#eef5f0;line-height:1.12;max-width:800px;margin-bottom:18px}
.hero h1 strong{font-weight:600;color:#fff}
.hero h1 .acc{color:#3ec87e}
.hero-lead{font-size:16px;color:#7a9e8a;max-width:560px;line-height:1.75;margin-bottom:32px}
.hero-acts{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:56px}
.hero-trust{font-family:var(--mono);font-size:10px;color:#2a4a38;display:flex;gap:22px;flex-wrap:wrap;letter-spacing:.04em;text-transform:uppercase;margin-bottom:0}
.hero-trust span::before{content:'â€” '}
.hstats{display:flex;border-top:1px solid var(--ink3);width:100%;margin-top:40px}
.hst{flex:1;padding:18px 22px;border-right:1px solid var(--ink3)}
.hst:last-child{border-right:none}
.hst-n{font-family:var(--mono);font-size:20px;font-weight:500;color:#eef5f0;display:block;line-height:1}
.hst-l{font-size:10px;color:#3a5040;margin-top:5px;letter-spacing:.04em;text-transform:uppercase}
/* page header (non-home) */
.page-head{background:var(--ink2);padding:44px 32px 36px}
.page-head .overline{color:#3ec87e}
/* map */
.map-wrap{border:1px solid var(--line);overflow:hidden}
.map-bar{background:var(--surf);padding:9px 14px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.map-foot{background:var(--surf);padding:8px 14px;border-top:1px solid var(--line);display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.map-tag{font-family:var(--mono);font-size:10px;color:#888;letter-spacing:.05em;text-transform:uppercase}
.mpill{font-family:var(--mono);font-size:11px;padding:4px 10px;border:1px solid var(--line);background:var(--white);color:#555;cursor:pointer;transition:all .1s}
.mpill.on,.mpill:hover{background:var(--sig);border-color:var(--sig);color:#fff}
.leg{display:flex;align-items:center;gap:5px;font-size:12px;color:#555}
.ld{width:7px;height:7px;border-radius:50%;flex-shrink:0}
/* leaflet dark */
.leaflet-container{background:#0e1a14}
.leaflet-tile{filter:brightness(.6) saturate(.3) hue-rotate(110deg)}
.leaflet-popup-content-wrapper{background:var(--ink2);color:#c8dece;border:1px solid var(--ink3);border-radius:0;box-shadow:0 4px 20px rgba(0,0,0,.5)}
.leaflet-popup-tip{background:var(--ink2)}
.leaflet-popup-content{font-family:var(--mono);font-size:11px;line-height:1.8;margin:10px 14px}
.leaflet-control-zoom a{background:var(--ink2)!important;color:#4ec87e!important;border-color:var(--ink3)!important;border-radius:0!important}
/* portal */
.portal{display:grid;grid-template-columns:210px 1fr;min-height:calc(100vh - 58px)}
.sidebar{background:var(--ink2);border-right:1px solid var(--ink3);padding:20px 0}
.sb-sec{font-family:var(--mono);font-size:10px;color:#2a4a38;letter-spacing:.07em;text-transform:uppercase;padding:0 18px;margin:18px 0 6px}
.sb-a{display:flex;align-items:center;gap:8px;padding:8px 18px;font-size:13px;color:#4a7060;cursor:pointer;transition:all .15s;border-left:2px solid transparent}
.sb-a:hover{background:var(--ink3);color:#9de8c5}
.sb-a.on{background:rgba(13,110,79,.12);color:#3ec87e;border-left-color:#3ec87e}
.sb-dot{width:5px;height:5px;border-radius:50%;flex-shrink:0}
.pmain{background:var(--surf)}
.phead{background:var(--white);border-bottom:1px solid var(--line);padding:16px 26px;display:flex;align-items:center;justify-content:space-between}
.phead-title{font-size:15px;font-weight:500;letter-spacing:-.02em}
.phead-sub{font-size:12px;color:#888;margin-top:2px}
.panel{display:none;padding:26px}
.panel.on{display:block}
.mc-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:22px}
.mc{background:var(--white);padding:16px;border:1px solid var(--line)}
.mc-n{font-family:var(--mono);font-size:22px;font-weight:500;display:block;line-height:1}
.mc-l{font-size:10px;color:#888;margin-top:4px;text-transform:uppercase;letter-spacing:.04em}
.mc-tr{font-family:var(--mono);font-size:10px;margin-top:5px}
.tr-up{color:var(--sig)}.tr-dn{color:var(--crit)}
.dp{background:var(--white);border:1px solid var(--line)}
.dp-head{padding:12px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}
.dp-head h4{font-size:13px;font-weight:500;letter-spacing:-.01em}
.gate{background:var(--data2);border:1px solid rgba(26,58,92,.15);padding:12px 16px;font-size:13px;color:var(--data);margin-bottom:18px;line-height:1.6}
.gate strong{background:var(--data);color:#fff;padding:1px 6px;font-size:10px;margin-right:5px}
/* demo modal */
.overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:900;align-items:center;justify-content:center}
.overlay.open{display:flex}
.modal{background:var(--white);width:100%;max-width:520px;padding:34px;position:relative;max-height:90vh;overflow-y:auto}
.modal-close{position:absolute;top:14px;right:18px;font-size:18px;cursor:pointer;color:#888;background:none;border:none;font-family:var(--sans)}
/* footer */
.footer{background:var(--ink2);color:#4a7060;padding:44px 32px 22px;border-top:1px solid var(--ink3)}
.fg{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:36px;max-width:1120px;margin:0 auto 32px}
.footer h4{font-size:13px;font-weight:500;color:#b8d8c4;margin-bottom:9px;letter-spacing:-.01em}
.footer p{font-size:12px;line-height:1.7;color:#3a5040}
.fcol h5{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#2a4030;margin-bottom:10px}
.fcol a{display:block;font-size:12px;color:#3a5040;padding:2px 0;transition:color .15s}
.fcol a:hover{color:#3ec87e}
.fbot{max-width:1120px;margin:0 auto;padding-top:18px;border-top:1px solid var(--ink3);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;font-family:var(--mono);font-size:10px;color:#2a4030;letter-spacing:.04em}
.iptag{display:inline-block;font-family:var(--mono);font-size:10px;padding:2px 7px;border:1px solid var(--ink3);color:#2a4030;margin:0 2px}
/* responsive */
@media(max-width:900px){
  .nav{padding:0 16px}.nav-links{display:none}
  .con{padding:0 16px}.sec{padding:44px 0}
  .g2,.g3,.g4{grid-template-columns:1fr}
  .fr2{grid-template-columns:1fr}
  .fg{grid-template-columns:1fr 1fr;gap:22px}
  .hstats{flex-wrap:wrap}.hst{min-width:50%;border-bottom:1px solid var(--ink3)}
  .portal{grid-template-columns:1fr}.sidebar{display:none}
  .mc-row{grid-template-columns:1fr 1fr}
  .sysbar{padding:7px 16px}.sysbar .sys-r{display:none}
}