:root {
  --ink: #17221e;
  --muted: #68746d;
  --paper: #f3f0e8;
  --panel: #fbfaf5;
  --line: #d9ded4;
  --green: #245c43;
  --mint: #c7e4c3;
  --yellow: #f0b84b;
  --coral: #df6e51;
  --blue: #b8d5db;
  --mono: "DM Mono", monospace;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: "Space Grotesk", sans-serif; }
button { font: inherit; cursor: pointer; }
.app-shell { max-width: 1440px; margin: auto; padding: 0 48px; }
.topbar { height: 78px; border-bottom: 1px solid var(--line); display: flex; align-items: center; justify-content: space-between; }
.brand { display: flex; align-items: center; gap: 10px; color: var(--ink); text-decoration: none; font-size: 18px; font-weight: 700; letter-spacing: -0.5px; }
.brand span span { color: var(--green); }
.brand-mark { display: grid; place-items: center; width: 27px; height: 27px; color: var(--paper); background: var(--green); border-radius: 50%; font-size: 24px; line-height: 1; }
.topbar-status, .meta-label, .kicker, .mono, label, .feed-notes, footer, .form-status { font-family: var(--mono); font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase; }
.topbar-status { color: var(--muted); display: flex; align-items: center; gap: 9px; }
.status-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--green); box-shadow: 0 0 0 4px rgba(36,92,67,.12); }
.divider { width: 1px; height: 14px; background: var(--line); margin: 0 5px; }
.icon-button, .map-control { border: 1px solid var(--line); background: var(--panel); color: var(--ink); width: 34px; height: 34px; border-radius: 50%; font-size: 18px; transition: .2s ease; }
.icon-button:hover, .map-control:hover { background: var(--green); color: white; border-color: var(--green); }
.hero { display: grid; grid-template-columns: 1fr 270px; gap: 40px; padding: 80px 0 76px; }
.eyebrow { color: var(--green); font-family: var(--mono); font-size: 11px; text-transform: uppercase; letter-spacing: .08em; margin: 0 0 20px; }
h1, h2, p { margin-top: 0; }
h1 { font-size: clamp(52px, 7vw, 104px); line-height: .94; letter-spacing: -5px; margin-bottom: 26px; font-weight: 600; }
h1 em { color: var(--green); font-family: Georgia, serif; font-weight: 400; letter-spacing: -5px; }
.hero-copy { max-width: 460px; color: var(--muted); font-size: 16px; line-height: 1.55; }
.hero-meta { align-self: end; border-left: 1px solid var(--green); padding: 8px 0 8px 18px; display: grid; gap: 8px; }
.hero-meta strong { font-size: 19px; font-weight: 500; }
.hero-meta span:last-child { color: var(--muted); font-size: 12px; }
.dashboard-grid { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(300px, .72fr); gap: 18px; }
.panel { background: var(--panel); border: 1px solid var(--line); }
.map-panel { min-width: 0; }
.panel-heading, .map-footer, .section-heading, .alert-head, .alert-route, .form-actions { display: flex; align-items: center; justify-content: space-between; }
.panel-heading { padding: 23px 25px 19px; }
.kicker { color: var(--muted); }
h2 { font-size: 21px; letter-spacing: -1px; margin: 7px 0 0; font-weight: 600; }
.map-badge, .live-chip { font-family: var(--mono); font-size: 10px; text-transform: uppercase; letter-spacing: .04em; color: var(--green); display: flex; gap: 8px; align-items: center; }
.map-canvas { height: 490px; position: relative; overflow: hidden; background-color: #dce5d9; background-image: linear-gradient(25deg, transparent 48%, rgba(255,255,255,.4) 49%, transparent 51%), linear-gradient(-35deg, transparent 48%, rgba(255,255,255,.25) 49%, transparent 51%); background-size: 118px 93px, 160px 121px; }
.map-canvas.google-map-ready { background: #dce5d9; }
.google-map-ready > div:not(:has(.gm-style)) { display: none; }
.map-canvas::after { content: ""; position: absolute; inset: 0; background: radial-gradient(circle at 55% 40%, transparent 0 26%, rgba(36,92,67,.08) 26.2% 26.6%, transparent 26.8%); pointer-events: none; }
.road { position: absolute; height: 5px; background: rgba(249,247,235,.9); border-top: 1px solid rgba(104,116,109,.3); border-bottom: 1px solid rgba(104,116,109,.3); transform-origin: left; }
.road-one { width: 85%; left: 3%; top: 66%; transform: rotate(-29deg); }.road-two { width: 73%; left: 28%; top: 17%; transform: rotate(52deg); }.road-three { width: 58%; left: 6%; top: 30%; transform: rotate(12deg); }
.water { position: absolute; width: 30%; height: 150%; top: -25%; left: 19%; background: rgba(184,213,219,.57); transform: rotate(24deg); border-left: 9px solid rgba(255,255,255,.25); border-right: 4px solid rgba(255,255,255,.18); }
.map-label { position: absolute; z-index: 2; font-family: var(--mono); font-size: 10px; letter-spacing: .08em; color: rgba(23,34,30,.56); }.map-label small { font-size: 8px; }.label-top { top: 42px; left: 37px; }.label-bottom { bottom: 25px; left: 40%; }.label-bottom span { color: var(--coral); margin: 0 8px; }
.corridor { position: absolute; z-index: 3; width: 77px; height: 77px; border: 2px solid var(--coral); background: rgba(223,110,81,.13); border-radius: 50%; display: grid; place-items: center; animation: pulse 2.8s infinite; cursor: pointer; }.corridor span { background: var(--coral); color: white; border-radius: 50%; width: 27px; height: 27px; display: grid; place-items: center; font-family: var(--mono); font-size: 10px; }.corridor-one { left: 29%; top: 55%; }.corridor-two { left: 65%; top: 27%; width: 63px; height: 63px; border-color: var(--yellow); background: rgba(240,184,75,.17); animation-delay: .6s; }.corridor-two span { background: var(--yellow); color: var(--ink); }.corridor-three { left: 58%; top: 72%; width: 55px; height: 55px; border-color: var(--green); background: rgba(36,92,67,.12); animation-delay: 1.1s; }.corridor-three span { background: var(--green); }
@keyframes pulse { 0%,100% { box-shadow: 0 0 0 0 rgba(223,110,81,.25); } 50% { box-shadow: 0 0 0 10px rgba(223,110,81,0); } }
.map-controls { position: absolute; z-index: 4; bottom: 20px; right: 20px; display: flex; gap: 6px; }.map-control { font-size: 20px; background: rgba(251,250,245,.9); }
.map-scale { position: absolute; z-index: 4; right: 20px; top: 20px; font: 10px var(--mono); color: var(--muted); }.map-scale span { display: inline-block; width: 42px; border-top: 2px solid var(--muted); margin-right: 5px; }
.map-footer { padding: 15px 25px; color: var(--muted); font-size: 11px; }.map-footer span { display: flex; align-items: center; gap: 7px; }.legend-line { width: 18px; height: 3px; display: inline-block; }.active-line { background: var(--coral); }.quiet-line { background: var(--green); }
.side-column { display: grid; gap: 18px; align-content: start; }.alert-card { background: var(--green); color: #edf2e8; padding: 23px 24px 21px; min-height: 277px; display: flex; flex-direction: column; }.alert-head { color: #b9d8b9; }.signal-icon { display: grid; place-items: center; width: 24px; height: 24px; border: 1px solid #b9d8b9; border-radius: 50%; font-family: var(--mono); }.alert-head .kicker { color: #b9d8b9; margin-right: auto; margin-left: 9px; }.live-chip { background: var(--mint); color: var(--green); padding: 6px 7px; }.alert-content { margin: 41px 0 31px; }.alert-content h2 { color: white; font-size: 25px; }.alert-content p { color: #c9d9ca; line-height: 1.45; font-size: 13px; margin: 9px 0 0; }.alert-route { color: #b9d8b9; font: 10px var(--mono); }.route-line { flex: 1; border-top: 1px dashed #7ca388; margin: 0 10px; }.primary-button { border: 0; background: var(--yellow); color: var(--ink); font-weight: 600; font-size: 12px; padding: 13px 14px; display: flex; justify-content: space-between; align-items: center; margin-top: 18px; transition: .2s ease; }.primary-button:hover { background: #ffd17a; transform: translateY(-1px); }.alert-card .primary-button { margin-top: auto; }.stats-panel { display: grid; grid-template-columns: repeat(3,1fr); padding: 20px 0; }.stat { padding: 0 17px; border-right: 1px solid var(--line); }.stat:last-child { border: 0; }.stat strong { display: block; font-size: 30px; font-weight: 500; letter-spacing: -2px; margin: 9px 0 2px; }.stat strong small { font-size: 14px; letter-spacing: 0; }.stat-note { color: var(--muted); font-size: 10px; }
.corridor-section { padding: 88px 0 80px; }.section-heading { margin-bottom: 20px; }.text-button { border: 0; background: none; color: var(--green); font: 11px var(--mono); text-transform: uppercase; letter-spacing: .05em; }.text-button span { font-size: 16px; margin-left: 5px; }.corridor-list { border-top: 1px solid var(--line); }.corridor-row { display: grid; grid-template-columns: 45px 1.3fr 1fr 120px 80px; gap: 15px; align-items: center; border-bottom: 1px solid var(--line); padding: 18px 5px; font-size: 13px; }.row-id, .row-detail { color: var(--muted); font: 10px var(--mono); text-transform: uppercase; }.row-name { font-weight: 600; }.row-species { color: var(--green); }.risk-pill { justify-self: start; color: var(--coral); font: 10px var(--mono); text-transform: uppercase; }.risk-pill::before { content: ""; display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: currentColor; margin-right: 7px; }.low-risk { color: var(--green); }.row-arrow { justify-self: end; color: var(--green); font-size: 18px; }
.risk-section { padding: 0 0 80px; }.risk-toolbar { display: flex; gap: 12px; margin: 22px 0 15px; }.search-box { flex: 1; display: flex; align-items: center; gap: 10px; background: var(--panel); border: 1px solid var(--line); padding: 0 14px; }.search-box span { font-size: 24px; color: var(--muted); }.search-box input { border: 0; outline: 0; background: transparent; width: 100%; padding: 13px 0; font: 12px var(--mono); }.secondary-button { background: var(--panel); color: var(--green); border: 1px solid var(--green); padding: 0 16px; font: 10px var(--mono); text-transform: uppercase; }.secondary-button:hover { background: var(--green); color: white; }.risk-list { border-top: 1px solid var(--line); }.risk-row { display: grid; grid-template-columns: 44px 1.4fr 1fr 110px 150px; align-items: center; gap: 15px; padding: 16px 5px; border-bottom: 1px solid var(--line); }.risk-rank { font: 11px var(--mono); color: var(--coral); }.risk-row strong, .risk-row span { display: block; }.risk-row span, .risk-animals, .risk-score span { color: var(--muted); font-size: 11px; margin-top: 4px; }.risk-animals { color: var(--green); }.risk-score b { font-size: 18px; font-weight: 500; }.risk-score span { font: 9px var(--mono); text-transform: uppercase; }.simulate-button { justify-self: end; border: 0; color: var(--green); background: transparent; font: 10px var(--mono); text-transform: uppercase; }.simulate-button span { display: inline; color: var(--green); font-size: 15px; }.data-note, .empty-state { color: var(--muted); font-size: 11px; margin: 15px 5px 0; }.approach-popup { position: fixed; z-index: 20; right: 28px; bottom: 28px; width: min(360px, calc(100vw - 40px)); background: var(--green); color: #f1f4e9; padding: 20px 22px; box-shadow: 0 12px 30px rgba(23,34,30,.25); transform: translateY(160%); transition: .3s ease; }.approach-popup.visible { transform: translateY(0); }.approach-popup button { position: absolute; top: 8px; right: 10px; background: none; border: 0; color: white; font-size: 22px; }.popup-mark { display: grid; place-items: center; width: 25px; height: 25px; border: 1px solid var(--mint); border-radius: 50%; margin-bottom: 15px; }.approach-popup .kicker { color: var(--mint); display: block; }.approach-popup strong { display: block; color: white; font-size: 25px; margin: 7px 0; }.approach-popup p { color: #d1e0d0; font-size: 12px; line-height: 1.45; margin: 0; }
.feed-section { display: grid; grid-template-columns: 1fr 1fr; gap: 70px; padding: 38px; background: #e7eadf; border-color: #d0d8c9; }.feed-copy h2 { font-size: 28px; max-width: 370px; margin-top: 12px; }.feed-copy p { color: var(--muted); font-size: 13px; line-height: 1.55; max-width: 410px; }.feed-notes { display: flex; gap: 18px; color: var(--green); margin-top: 28px; flex-wrap: wrap; }.feed-form label { color: var(--ink); display: flex; justify-content: space-between; margin-bottom: 9px; }.feed-form label span { color: var(--green); }.feed-form textarea { width: 100%; min-height: 164px; resize: vertical; border: 1px solid #c9d2c4; background: var(--panel); padding: 14px; font: 11px/1.6 var(--mono); color: var(--ink); outline-color: var(--green); }.form-actions { margin-top: 12px; }.form-status { color: var(--muted); }.form-status.error { color: var(--coral); }.form-status.success { color: var(--green); }
footer { color: var(--muted); display: flex; flex-direction: column; gap: 6px; padding: 30px 0 45px; font-size: 9px; }footer a { color: var(--green); }
.toast { position: fixed; bottom: 22px; left: 50%; transform: translate(-50%, 130%); background: var(--ink); color: white; padding: 14px 19px; font-size: 12px; transition: .25s ease; z-index: 10; box-shadow: 0 6px 18px rgba(23,34,30,.16); }.toast.show { transform: translate(-50%, 0); }
.archive-actions { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 9px; flex-wrap: wrap; }.archive-actions .secondary-button { padding: 8px 10px; }.archive-actions span { color: var(--muted); font: 9px var(--mono); text-transform: uppercase; }
@media (max-width: 850px) { .app-shell { padding: 0 20px; }.hero { grid-template-columns: 1fr; padding: 55px 0; gap: 25px; }.hero-meta { justify-self: start; }.dashboard-grid, .feed-section { grid-template-columns: 1fr; }.map-canvas { height: 380px; }.feed-section { gap: 35px; padding: 25px; }.corridor-row { grid-template-columns: 35px 1.4fr 1fr 80px; }.row-detail { display: none; }.row-arrow { display: none; } footer { display: block; line-height: 2; } }
@media (max-width: 850px) { .risk-row { grid-template-columns: 32px 1fr 90px; }.risk-animals { display: none; }.simulate-button { grid-column: 2 / 4; justify-self: start; }.risk-toolbar { flex-direction: column; }.secondary-button { padding: 12px; } }
@media (max-width: 520px) { .topbar-status { display: none; } h1 { font-size: 53px; letter-spacing: -3px; } h1 em { letter-spacing: -3px; }.panel-heading { padding: 18px; }.map-footer { padding: 13px 18px; gap: 8px; flex-wrap: wrap; }.map-footer span:nth-child(2) { display: none; }.stats-panel { grid-template-columns: 1fr; gap: 16px; }.stat { border: 0; display: grid; grid-template-columns: 1fr 1fr; align-items: center; }.stat strong { grid-row: span 2; grid-column: 2; grid-row: 1 / 3; justify-self: end; }.corridor-section { padding: 60px 0; }.corridor-row { grid-template-columns: 28px 1fr 75px; }.row-species { display: none; }.feed-notes { gap: 10px; }.feed-section { margin: 0 -1px; } }
