*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}
:root{
  --forest:#1b3a2d;--forest-deep:#0f2118;--forest-2:#163325;--ink:#0a1812;--orange:#c96b1a;--sage:#5a9468;
  --cream:#f7f3eb;--tan:#e8dfc8;--dark:#12261e;
  --text:#2c1e0f;--muted:#6b5b45;--r:8px;
  --shadow:0 2px 12px rgba(0,0,0,.15);
}
html,body{height:100%;overflow:hidden;max-width:100%}
body{font-family:Georgia,serif;background:var(--cream);color:var(--text);line-height:1.6;display:flex;flex-direction:column}
input,select,textarea{font-size:16px}

/* NAV */
nav{background-color:#111210;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='600' height='62'%3E%3Cfilter id='rock'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.45 0.15' numOctaves='4' seed='8' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0.08 0 0 0 0 0.07 0 0 0 0 0.06 0 0 0 0.22 0'/%3E%3C/filter%3E%3Crect width='600' height='62' filter='url(%23rock)'/%3E%3C/svg%3E"),linear-gradient(180deg,#1c1a17 0%,#0f0e0c 60%,#0a0907 100%);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 28px;height:62px;position:sticky;top:0;z-index:1000;box-shadow:0 2px 14px rgba(0,0,0,.7);border-bottom:1px solid rgba(255,255,255,.05)}
.nav-brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:#fff}
.nav-brand img{height:34px;width:34px;border-radius:5px;flex-shrink:0;object-fit:cover}
.nav-brand span{font-size:1rem;letter-spacing:-.005em}
.nav-brand em{font-style:italic;color:var(--orange);font-weight:400}
.nav-links{display:flex;gap:16px;align-items:center}
.nav-links a{color:rgba(255,255,255,.78);text-decoration:none;font-size:.85rem;transition:color .2s}
.nav-links a:hover,.nav-links a.active{color:#fff}
.nav-links a.active{position:relative}
.nav-links a.active::after{content:"";position:absolute;left:0;right:0;bottom:-22px;height:2px;background:var(--orange)}
.nav-cta{background:var(--orange);color:#fff!important;padding:8px 16px;border-radius:6px;display:inline-flex;flex-direction:column;align-items:center;line-height:1.15;font-size:.86rem}
.nav-cta .cta-sub{font-size:.62rem;opacity:.85;letter-spacing:.04em}
.nav-cta:hover{background:var(--orange-h)!important}
.nav-huck{background:#2d6e4e!important;color:#fff!important;padding:6px 14px 6px 12px;border-radius:99px;font-size:.84rem;display:inline-flex!important;align-items:center;gap:7px}
.nav-huck::before{content:'';width:7px;height:7px;background:#a8e063;border-radius:50%;box-shadow:0 0 0 0 rgba(168,224,99,.55);animation:hpulse 2.2s infinite}
.nav-huck:hover{background:#245a40!important}
@keyframes hpulse{0%,100%{box-shadow:0 0 0 0 rgba(168,224,99,.55)}50%{box-shadow:0 0 0 6px rgba(168,224,99,0)}}
.hamburger{display:none;background:none;border:0;color:#fff;font-size:1.4rem;padding:11px 12px;line-height:1;touch-action:manipulation;cursor:pointer}
.mobile-nav{display:none;position:fixed;top:62px;left:0;right:0;background:#0f0e0c;z-index:998;flex-direction:column;box-shadow:0 6px 20px rgba(0,0,0,.4);max-height:calc(100svh - 62px);overflow-y:auto;-webkit-overflow-scrolling:touch}
.mobile-nav.open{display:flex}
.mobile-nav a{color:rgba(255,255,255,.92);text-decoration:none;padding:16px 28px;border-bottom:1px solid rgba(255,255,255,.06);font-size:.95rem;transition:background .15s}
.mobile-nav a:hover{background:rgba(255,255,255,.05);color:var(--orange)}
.mobile-nav a.nav-cta{background:var(--orange);text-align:center;justify-content:center;padding:14px 28px}
.mobile-nav a.nav-huck{background:#2d6e4e!important;border-radius:12px;margin:10px 24px;padding:12px 20px;justify-content:center;border-bottom:0}
@media(max-width:880px){.nav-links{display:none}.hamburger{display:block}}

/* PAGE */
.page-body{flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0}
.map-header{background:var(--forest-deep,#0f2118);background-image:linear-gradient(160deg,#080f0a 0%,#0f2118 45%,#1b3a2d 100%);box-shadow:inset 0 -2px 0 rgba(201,107,26,.45),0 4px 16px rgba(0,0,0,.22);color:#fff;padding:20px 24px 18px;flex-shrink:0;position:relative;overflow:hidden}
.map-header::before{content:'';position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='600' height='80'%3E%3Cg fill='none' stroke='%23a8c5a0' stroke-width='0.7' opacity='0.055'%3E%3Cellipse cx='300' cy='40' rx='280' ry='28'/%3E%3Cellipse cx='300' cy='40' rx='240' ry='22'/%3E%3Cellipse cx='300' cy='40' rx='200' ry='16'/%3E%3Cellipse cx='300' cy='40' rx='160' ry='11'/%3E%3Cellipse cx='300' cy='40' rx='120' ry='7'/%3E%3C/g%3E%3C/svg%3E");background-repeat:repeat;pointer-events:none}
.map-header::after{content:'';position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23g)' opacity='0.1'/%3E%3C/svg%3E");pointer-events:none;mix-blend-mode:overlay}
.map-header-inner{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;position:relative;z-index:1}
.map-header-text h1{font-size:1.42rem;margin-bottom:4px;font-weight:bold;letter-spacing:-.25px;line-height:1.2}
.map-header-text p{font-size:.81rem;opacity:.95;margin-bottom:12px;line-height:1.5}
.how-steps-inline{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:2px}
.how-step-inline{display:flex;align-items:center;gap:6px;font-size:.72rem;color:rgba(255,255,255,.85)}
.how-step-inline .hsn{width:18px;height:18px;border-radius:50%;background:var(--orange);color:#fff;font-size:.65rem;font-weight:bold;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.how-step-sep{color:rgba(255,255,255,.3);font-size:.8rem}

/* MAP + PANEL */
.map-body{flex:1;display:flex;overflow:hidden;min-height:0;background:#d4e3d8}
#map-wrap{flex:1;position:relative;overflow:hidden;min-width:0}
#map-wrap svg{display:block;width:100%;height:100%}
#map-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:.88rem;font-family:Georgia,serif}

/* D3 styles */
.state{fill:#9dbfaa;stroke:#fff;stroke-width:.7;cursor:pointer;transition:fill .18s,opacity .22s;opacity:1}
.state:hover{fill:var(--orange)}
.state.selected{opacity:1}
.state.dimmed{opacity:.87}
.state-borders{fill:none;stroke:rgba(255,255,255,.6);stroke-width:.5;pointer-events:none}
.state-label{font-size:7.5px;fill:#fff;pointer-events:none;text-anchor:middle;dominant-baseline:central;font-family:Georgia,serif;font-weight:bold;text-shadow:0 1px 2px rgba(0,0,0,.5);paint-order:stroke;stroke:#1b3a2d;stroke-width:1.5px;stroke-linejoin:round}

/* TOOLTIP */
#map-tip{position:fixed;background:rgba(18,38,30,.92);color:#fff;font-size:.75rem;padding:5px 12px;border-radius:6px;pointer-events:none;display:none;font-family:Georgia,serif;white-space:nowrap;z-index:2000;box-shadow:0 2px 8px rgba(0,0,0,.3)}

/* PANEL */
#state-panel{width:420px;flex-shrink:0;background:#fff;border-left:1px solid rgba(232,223,200,.5);box-shadow:-3px 0 22px rgba(0,0,0,.07);display:flex;flex-direction:column;overflow-y:auto;padding-bottom:120px;-webkit-overflow-scrolling:touch}
.panel-placeholder{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:36px 24px;text-align:center;color:var(--muted);height:100%}
.panel-placeholder .ph-icon{margin-bottom:14px;opacity:.4}
.panel-placeholder h3{font-size:1rem;color:var(--forest);margin-bottom:8px}
.panel-placeholder p{font-size:.8rem;line-height:1.6}
.panel-state-head{background:var(--forest-deep,#0f2118);background-image:linear-gradient(160deg,#080f0a 0%,#0f2118 45%,#1b3a2d 100%);color:#fff;padding:24px 20px 20px;position:relative;overflow:hidden}
.panel-state-head::after{content:'';position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23g)' opacity='0.08'/%3E%3C/svg%3E");pointer-events:none;mix-blend-mode:overlay;opacity:.9}
.panel-state-head h2{font-size:1.5rem;margin:6px 0 5px;line-height:1.15;position:relative;z-index:1;letter-spacing:-.3px}
.panel-state-head .agency{font-size:.72rem;opacity:.6;font-family:ui-monospace,monospace;position:relative;z-index:1;margin-top:4px;display:block}
.panel-links{padding:0 14px 10px;display:flex;flex-direction:column;gap:11px}
.panel-link{display:flex;align-items:center;gap:13px;padding:14px 15px;background:var(--cream);border:none;border-radius:12px;box-shadow:0 1px 5px rgba(0,0,0,.07);text-decoration:none;color:var(--text);transition:transform .18s ease,box-shadow .18s ease,background .15s;font-family:Georgia,serif}
.panel-link:hover{box-shadow:0 6px 20px rgba(0,0,0,.13),0 0 0 1.5px rgba(201,107,26,.28);background:#fff;transform:translateY(-2px);color:var(--forest)}.panel-link:hover .la{transform:translate(2px,-1px);color:var(--orange)}
.panel-link .li{font-size:1.2rem;flex-shrink:0}
.panel-link .lt{flex:1}
.panel-link .lt strong{display:block;font-size:.84rem;color:var(--forest);margin-bottom:1px}
.panel-link .lt span{font-size:.72rem;color:var(--muted)}
.panel-link .la{color:var(--muted);font-size:.85rem;flex-shrink:0;transition:transform .18s ease,color .15s}.link-cat-harvest{background:#c96b1a;color:#fff}
.panel-disc{padding:12px 14px 16px;font-size:.7rem;color:var(--muted);line-height:1.55;border-top:1px solid rgba(0,0,0,.06)}
.quick-look{padding:14px 16px 12px;border-bottom:1px solid var(--tan);background:var(--cream)}
.quick-look-label{font-family:ui-monospace,monospace;font-size:.62rem;text-transform:uppercase;letter-spacing:1.4px;color:var(--orange);font-weight:700;margin-bottom:4px}
.quick-look-state{font-size:1.15rem;font-weight:bold;color:var(--forest);font-family:Georgia,serif;line-height:1.2}
.quick-look-agency{font-size:.72rem;color:var(--muted);margin-top:2px;font-family:ui-monospace,monospace}
.panel-where-btn{display:block;margin:0 14px 14px;padding:11px 14px;background:var(--forest);color:#fff;text-align:center;border-radius:3px;text-decoration:none;font-size:.84rem;font-weight:bold;font-family:Georgia,serif;transition:background .15s;letter-spacing:.3px}
.panel-where-btn:hover{background:var(--forest-deep)}
.link-cat{font-family:ui-monospace,monospace;font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.5px;padding:6px 10px;border-radius:6px;color:#fff;flex-shrink:0;min-width:44px;text-align:center;box-shadow:0 1px 4px rgba(0,0,0,.18)}
.link-cat-reg{background:var(--forest)}
.link-cat-lic{background:var(--orange)}
.link-cat-edu{background:#4a6e7a}
.link-cat-cwd{background:#7a4e2a}


/* SPECIES TABS */
.sp-tabs{display:flex;flex-wrap:wrap;gap:0;padding:0 14px;border-bottom:none;box-shadow:0 2px 0 rgba(232,223,200,.9);background:#faf8f4;flex-shrink:0}
.sp-tab{background:none;border:none;cursor:pointer;font-family:ui-monospace,monospace;font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.6px;padding:10px 11px 8px;color:var(--muted);white-space:nowrap;border-bottom:2.5px solid transparent;margin-bottom:-2px;transition:all .15s}
.sp-tab.active{color:var(--forest);border-bottom-color:var(--orange)}
.sp-tab:hover{color:var(--forest)}
.sp-content{overflow:visible}
.season-tbl{padding:14px 14px 10px;display:flex;flex-direction:column;gap:9px}
.season-row{display:grid;grid-template-columns:28px 1fr auto;align-items:start;gap:8px;padding:9px 10px;background:var(--cream);border-radius:4px;box-shadow:0 1px 4px rgba(0,0,0,.07),0 0 0 1px rgba(0,0,0,.04);transition:box-shadow .15s}
.season-row:hover{box-shadow:0 2px 8px rgba(0,0,0,.11),0 0 0 1.5px rgba(201,107,26,.3)}
.srow-status{display:inline-block;font-family:ui-monospace,Menlo,monospace;font-size:.56rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;padding:2px 6px;border-radius:2px;white-space:nowrap;flex-shrink:0;vertical-align:middle}
.srow-open{background:#1a5e2a;color:#fff}
.srow-soon{background:rgba(201,107,26,.12);border:1px solid rgba(201,107,26,.25);color:#9a4a10}
.srow-closed-sm{background:#e0e0d4;color:#5a5a4a}
.srow-type{font-family:ui-monospace,monospace;font-size:.54rem;font-weight:700;text-transform:uppercase;width:26px;height:26px;display:flex;align-items:center;justify-content:center;border-radius:3px;color:#fff;flex-shrink:0;margin-top:2px}
.srow-archery{background:#4a7a5e}
.srow-rifle{background:#7a4e2a}
.srow-muzzle{background:#4a6e7a}
.srow-spring{background:#2d7a4e}
.srow-fall{background:#b06a1a}
.srow-info{display:flex;flex-direction:column;gap:1px;min-width:0}
.srow-name{font-size:.78rem;font-weight:bold;color:var(--forest);font-family:Georgia,serif;line-height:1.25}
.srow-dates{font-family:ui-monospace,monospace;font-size:.63rem;color:var(--muted);font-weight:600;margin-top:1px}
.srow-note{font-size:.63rem;color:var(--muted);line-height:1.4;margin-top:2px;font-style:italic}
.srow-badges{display:flex;flex-direction:column;gap:3px;align-items:flex-end;flex-shrink:0}
.srow-target,.srow-tag{font-family:ui-monospace,monospace;font-size:.53rem;font-weight:700;text-transform:uppercase;letter-spacing:.3px;padding:2px 6px;border-radius:3px;color:#fff;white-space:nowrap}
.sp-limits{padding:12px 14px 14px;border-top:1px solid rgba(0,0,0,.07);background:#faf8f4}
.sp-section-label{font-family:ui-monospace,monospace;font-size:.58rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--orange);margin-bottom:4px}
.sp-limit-row{font-size:.74rem;color:var(--text);line-height:1.55;padding:1px 0}
.sp-notes{padding:8px 14px 14px;font-size:.72rem;color:var(--muted);line-height:1.55;border-top:1px solid rgba(0,0,0,.07);font-style:italic}
.sp-no-season{padding:14px 12px;font-size:.78rem;color:var(--muted);font-style:italic;text-align:center}
.lic-cost{margin:16px 14px 8px;padding:14px 16px 12px;background:linear-gradient(135deg,#eef4ef 0%,#f0f5f1 100%);border-radius:6px;box-shadow:0 1px 8px rgba(0,0,0,.08),0 0 0 1px rgba(27,58,45,.09)}
.lic-cost-label{font-family:ui-monospace,monospace;font-size:.58rem;font-weight:700;text-transform:uppercase;letter-spacing:1.2px;color:var(--forest);margin-bottom:8px;opacity:.8}
.lic-cost-row{display:flex;justify-content:space-between;font-size:.8rem;color:var(--text);font-family:Georgia,serif;padding:3px 0}
.lic-cost-row span:last-child{font-weight:bold;color:var(--forest);font-family:ui-monospace,monospace}
.lic-cost-note{font-size:.63rem;color:var(--muted);line-height:1.5;margin-top:3px;font-style:italic}
.lic-add-row{border-top:1px dashed rgba(27,58,45,.12);margin-top:4px;padding-top:4px;opacity:.88}
.lic-add-row span:first-child{color:var(--muted);font-size:.78rem}
.lic-cost-label-wrap{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}
.lic-sp-badge{font-family:ui-monospace,monospace;font-size:.58rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;background:rgba(27,58,45,.08);color:var(--forest);border-radius:4px;padding:2px 6px;opacity:.9}
.panel-agency-label{font-family:ui-monospace,monospace;font-size:.58rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--muted);padding:28px 14px 6px;border-top:1px solid rgba(0,0,0,.06);margin-top:8px}

/* HUCK */
#huck-bubble{position:fixed;bottom:calc(24px + env(safe-area-inset-bottom));right:calc(24px + env(safe-area-inset-right));z-index:9999;display:flex;flex-direction:column;align-items:flex-end;gap:8px}
#huck-toggle{background:none;border:none;cursor:pointer;padding:0;display:flex;flex-direction:column;align-items:center;gap:0}
.huck-body{display:flex;flex-direction:column;align-items:center;gap:5px;animation:huck-idle 2.8s ease-in-out infinite;transition:transform .25s ease}
#huck-toggle:hover .huck-body{animation-play-state:paused;transform:translateY(-6px)}
#huck-ask-label{background:var(--forest);color:#fff;font-size:.73rem;font-weight:bold;padding:5px 14px;border-radius:12px;white-space:nowrap;box-shadow:0 2px 10px rgba(0,0,0,.3);transition:opacity .15s}
#huck-ask-label.hidden{opacity:0;pointer-events:none}
.huck-img{width:70px;height:70px;border-radius:50%;object-fit:cover;object-position:50% 8%;border:3px solid #fff;box-shadow:0 4px 18px rgba(0,0,0,.35)}
@keyframes huck-idle{0%,100%{transform:translateY(0)}45%{transform:translateY(-6px)}}
#huck-chat{background:#fff;border-radius:16px 16px 4px 16px;box-shadow:0 8px 32px rgba(0,0,0,.18);width:280px;overflow:hidden;display:none;animation:popIn .2s ease}
#huck-chat.open{display:block}
@keyframes popIn{from{opacity:0;transform:scale(.9) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}
.huck-chat-head{background:var(--forest);color:#fff;padding:12px 16px;display:flex;align-items:center;gap:10px}
.huck-chat-head-text{flex:1}
.huck-chat-head-text strong{display:block;font-size:.92rem}
.huck-chat-head-text span{font-size:.72rem;opacity:.7}
.huck-close{background:none;border:none;color:#fff;cursor:pointer;font-size:1.1rem;opacity:.7;padding:0}
.huck-body-chat{padding:16px;max-height:260px;overflow-y:auto}
.huck-msg{background:var(--cream);border-radius:10px 10px 10px 2px;padding:10px 13px;font-size:.83rem;color:var(--text);line-height:1.5;margin-bottom:10px}
.huck-suggestions{display:flex;flex-direction:column;gap:6px;margin-top:4px}
.huck-suggestion{background:#fff;border:1.5px solid var(--tan);border-radius:8px;padding:12px 13px;font-size:.78rem;color:var(--forest);cursor:pointer;text-align:left;line-height:1.4;transition:border-color .15s}
.huck-suggestion:hover{border-color:var(--orange);color:var(--orange)}
.huck-footer{padding:10px 12px;border-top:1px solid var(--tan);display:flex;gap:8px}
.huck-footer input{flex:1;border:1.5px solid var(--tan);border-radius:8px;padding:8px 10px;font-size:16px;font-family:inherit;outline:none;background:var(--cream)}
.huck-footer button{background:var(--orange);color:#fff;border:none;border-radius:8px;padding:8px 13px;font-size:.8rem;font-weight:bold;cursor:pointer;font-family:inherit;transition:background .15s}
.huck-footer button:hover{background:#b05c14}
.huck-footer button:disabled{opacity:.45;cursor:not-allowed}

/* MOBILE */
@media(max-width:768px){
  html,body{height:auto;overflow:auto}
  .page-body{overflow:visible;flex:none}
  .map-body{flex-direction:column;height:auto;overflow:visible;min-height:0}
  #map-wrap{height:320px;flex:none}
  #state-panel{width:100%;border-left:none;border-top:2px solid var(--tan);overflow-y:visible}
  .panel-placeholder{height:auto;min-height:180px}
  .map-header-inner{flex-direction:column;align-items:flex-start;gap:8px}
  .state-label{display:none}
}

/* ── Fixed slim footer for app-layout pages ── */
.app-footer-bar{position:fixed;bottom:0;left:0;right:0;padding-bottom:env(safe-area-inset-bottom);z-index:900;background:rgba(10,24,18,.88);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;justify-content:center;align-items:center;gap:20px;padding:6px 16px;font-size:.64rem;font-family:ui-monospace,monospace;color:rgba(245,240,232,.4);pointer-events:none}
.app-footer-bar a{color:rgba(245,240,232,.45);text-decoration:none;pointer-events:all;transition:color .12s;letter-spacing:.03em}
.app-footer-bar a:hover{color:rgba(245,240,232,.9)}
.app-footer-bar .afb-sep{opacity:.3}
@media(max-width:480px){.app-footer-bar{gap:12px;font-size:.6rem}}

/* anchor targets clear the 62px sticky nav */
html{scroll-padding-top:62px}

/* keyboard focus */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--orange,#c96b1a);outline-offset:2px}
