
:root{
  --navy:#071f2f;--navy2:#0a3651;--ocean:#0d7188;--teal:#159e9a;--sky:#dff4f7;
  --gold:#eeb03b;--green:#16845b;--red:#d94753;--orange:#e47b2e;--paper:#fff;
  --ink:#17242d;--muted:#647682;--line:#dbe5e9;--soft:#f3f7f8;--shadow:0 12px 30px rgba(6,31,47,.13);
  --radius:20px;
}
*{box-sizing:border-box}
html{background:#eaf1f4;color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
body{margin:0;min-height:100vh}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
.hidden{display:none!important}
.app{min-height:100vh;background:#f5f8f9}
.topbar{position:sticky;top:0;z-index:50;background:linear-gradient(135deg,var(--navy),var(--navy2));color:#fff;padding:13px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px;box-shadow:0 7px 22px rgba(4,27,42,.25)}
.brand{display:flex;align-items:center;gap:10px;font-weight:1000;letter-spacing:.3px}
.brand-logo{width:42px;height:42px;border-radius:14px;background:#fff;display:grid;place-items:center;overflow:hidden}
.brand-logo img{width:42px;height:42px}
.brand small{display:block;font-size:11px;font-weight:700;opacity:.72}
.top-actions{display:flex;gap:8px;align-items:center}
.icon-button{border:1px solid rgba(255,255,255,.24);background:rgba(255,255,255,.11);color:#fff;border-radius:13px;padding:9px 11px;font-weight:900}
.sync-pill{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:7px 10px;font-size:12px;font-weight:900;background:#fff0c5;color:#6f5200}
.sync-pill.online{background:#d9f8eb;color:#135d45}
.sync-pill.offline{background:#ffe6e9;color:#8b2735}
.shell{max-width:1320px;margin:auto;padding:18px 18px 90px}
.hero{background:linear-gradient(145deg,#0e6078,#0a3651);border-radius:26px;color:#fff;padding:20px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.hero:after{content:"";position:absolute;width:260px;height:260px;border-radius:50%;right:-90px;top:-130px;border:35px solid rgba(255,255,255,.07)}
.hero-grid{display:grid;grid-template-columns:1.4fr .9fr;gap:18px;align-items:center;position:relative;z-index:1}
.eyebrow{text-transform:uppercase;letter-spacing:1.5px;font-size:12px;font-weight:900;opacity:.75}
.hero h1{margin:6px 0 8px;font-size:clamp(28px,5vw,48px);line-height:1.04}
.hero p{margin:0;max-width:700px;font-weight:650;opacity:.88}
.session-card{background:rgba(255,255,255,.96);color:var(--ink);border-radius:21px;padding:16px}
.session-card.active{outline:4px solid #84e1bf}
.session-title{font-size:22px;font-weight:1000}
.session-meta{font-size:13px;color:var(--muted);font-weight:750;margin-top:4px}
.button-row{display:flex;gap:9px;flex-wrap:wrap;margin-top:14px}
.btn{border:0;border-radius:14px;padding:11px 15px;font-weight:950;background:#1474d4;color:#fff;box-shadow:0 5px 12px rgba(20,116,212,.18)}
.btn.secondary{background:#e7f0f4;color:var(--navy)}
.btn.good{background:var(--green)}
.btn.danger{background:var(--red)}
.btn.gold{background:var(--gold);color:#503900}
.btn.small{padding:8px 11px;font-size:13px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:15px}
.stat{background:#fff;border-radius:18px;padding:14px;box-shadow:0 6px 18px rgba(6,31,47,.08)}
.stat strong{display:block;font-size:25px;color:var(--navy)}
.stat small{font-weight:800;color:var(--muted)}
.layout{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(310px,.75fr);gap:16px;margin-top:16px}
.panel{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:17px}
.panel h2,.panel h3{margin:0 0 8px;color:var(--navy)}
.panel-sub{color:var(--muted);font-weight:700;font-size:13px;margin-top:-3px}
.toolbar{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin:13px 0}
.toolbar input,.toolbar select{min-width:150px}
.field,.field label{display:grid;gap:6px}
.field label,.label{font-size:13px;font-weight:900;color:#344752}
input,select,textarea{width:100%;border:2px solid var(--line);border-radius:13px;padding:11px 12px;background:#fff;color:var(--ink);outline:none}
input:focus,select:focus,textarea:focus{border-color:#2c91c8;box-shadow:0 0 0 3px rgba(44,145,200,.13)}
textarea{min-height:88px;resize:vertical}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.full{grid-column:1/-1}
.radio-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.radio-card{border:2px solid var(--line);border-radius:13px;padding:9px 10px;font-weight:850;display:flex;align-items:center;gap:7px}
.radio-card:has(input:checked){border-color:#178aa9;background:#e4f8fb}
.radio-card input{width:auto}
.notice{border-radius:14px;padding:10px 12px;font-weight:780;font-size:13px;line-height:1.4;background:#eef7fb;border:2px solid #c8e7f0}
.notice.warn{background:#fff7d9;border-color:#f4d875}
.notice.error{background:#fff0f1;border-color:#ffb8c1;color:#8b2735}
.notice.good{background:#e9fbf4;border-color:#b4e9d5;color:#155e45}
.catch-list{display:grid;gap:10px}
.catch-card{border:2px solid var(--line);border-radius:17px;padding:12px;display:grid;grid-template-columns:78px 1fr auto;gap:12px;align-items:center}
.catch-photo{width:78px;height:78px;border-radius:14px;background:linear-gradient(135deg,#dff4f7,#d6e4e9);display:grid;place-items:center;overflow:hidden;font-size:30px}
.catch-photo img{width:100%;height:100%;object-fit:cover}
.catch-title{font-weight:1000;font-size:17px}
.catch-meta{font-size:13px;color:var(--muted);font-weight:700;margin-top:3px}
.badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px}
.badge{display:inline-flex;border-radius:999px;padding:5px 8px;font-size:11px;font-weight:950;background:#e5eef2;color:#324854}
.badge.green{background:#dff7ec;color:#126144}
.badge.blue{background:#dff1ff;color:#165e8a}
.badge.red{background:#ffe4e7;color:#912b3a}
.badge.gold{background:#fff0bd;color:#725500}
.badge.orange{background:#ffe6cf;color:#8a4812}
.map-wrap{position:relative;border-radius:18px;overflow:hidden;background:#0c536c;min-height:380px}
.map-wrap > .map-layer > img{width:100%;height:100%;min-height:380px;object-fit:cover;display:block}
.map-layer{position:absolute;inset:0;transform-origin:center;transition:transform .2s ease}
.map-marker{position:absolute;width:27px;height:27px;border-radius:50% 50% 50% 0;background:#1b86df;border:4px solid #fff;box-shadow:0 5px 12px rgba(0,0,0,.33);transform:translate(-50%,-100%) rotate(-45deg)}
.map-marker:after{content:"";position:absolute;width:6px;height:6px;background:white;border-radius:50%;left:6px;top:6px}
.map-marker.current{background:#f1ad2f;width:32px;height:32px;z-index:5}
.map-label{position:absolute;transform:translate(-50%,-125%);background:#fff;color:#18303d;border-radius:10px;padding:5px 7px;font-size:11px;font-weight:900;white-space:nowrap;box-shadow:0 4px 10px rgba(0,0,0,.22)}
.map-controls{position:absolute;left:10px;top:10px;display:grid;gap:5px;z-index:10}
.map-controls button{width:38px;height:38px;border:0;border-radius:10px;background:#fff;font-weight:1000;font-size:20px;box-shadow:0 4px 10px rgba(0,0,0,.2)}
.map-status{position:absolute;right:10px;bottom:10px;background:rgba(255,255,255,.94);border-radius:12px;padding:8px 10px;font-size:11px;font-weight:850;max-width:230px}
.nav-tabs{display:flex;gap:5px;overflow:auto;padding:5px;background:#e6eef1;border-radius:16px;margin:15px 0}
.nav-tab{border:0;background:transparent;padding:10px 13px;border-radius:12px;font-weight:900;color:#49616e;white-space:nowrap}
.nav-tab.active{background:#fff;color:var(--navy);box-shadow:0 3px 8px rgba(6,31,47,.1)}
.view{display:none}.view.active{display:block}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:16px}
table{border-collapse:collapse;width:100%;min-width:840px;background:#fff}
th,td{text-align:left;padding:11px 10px;border-bottom:1px solid var(--line);font-size:13px}
th{background:#edf4f6;color:#314955;font-weight:1000;position:sticky;top:0;cursor:pointer}
tr:hover td{background:#f8fbfc}
.sort-arrow{opacity:.4;margin-left:4px}
.modal{border:0;border-radius:22px;padding:0;box-shadow:0 25px 70px rgba(0,0,0,.34);width:min(820px,94vw);max-height:90vh}
.modal::backdrop{background:rgba(3,20,31,.64)}
.modal-card{padding:19px;max-height:90vh;overflow:auto;background:#fff}
.modal-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:12px}
.modal-head h2{margin:0;color:var(--navy)}
.close-btn{border:0;background:#eef3f5;border-radius:10px;width:38px;height:38px;font-size:22px}
.login-screen{min-height:100vh;background:linear-gradient(145deg,#041b2b,#0b526b);display:grid;place-items:center;padding:18px}
.login-card{width:min(920px,100%);display:grid;grid-template-columns:1.15fr .85fr;background:#fff;border-radius:28px;overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,.35)}
.login-art{padding:34px;background:linear-gradient(145deg,#0a3651,#0d7188);color:#fff;position:relative;overflow:hidden}
.login-art img{width:100px;height:100px}
.login-art h1{font-size:clamp(36px,7vw,70px);margin:16px 0 8px;line-height:.95}
.login-art p{font-weight:720;opacity:.85;max-width:520px}
.login-form{padding:34px;display:grid;align-content:center}
.login-form h2{font-size:30px;margin:0 0 7px}
.login-form p{color:var(--muted);font-weight:700}
.demo-box{margin-top:14px;background:#eef7fb;border-radius:14px;padding:11px;font-size:13px;font-weight:780;line-height:1.5}
.admin-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;margin:12px 0}
.kpi{border-radius:17px;padding:14px;color:#fff;background:linear-gradient(135deg,#0d7188,#0a3651)}
.kpi strong{display:block;font-size:27px}.kpi small{font-weight:800;opacity:.8}
.species-list{display:grid;gap:8px}
.species-row{display:grid;grid-template-columns:1fr 145px 100px auto;gap:8px;align-items:center;border:2px solid var(--line);border-radius:14px;padding:9px}
.empty{text-align:center;padding:30px 12px;color:var(--muted);font-weight:850}
.bottom-nav{position:fixed;z-index:40;bottom:0;left:0;right:0;background:#fff;border-top:1px solid var(--line);display:flex;justify-content:center;box-shadow:0 -7px 20px rgba(6,31,47,.1)}
.bottom-nav-inner{width:min(760px,100%);display:grid;grid-template-columns:repeat(5,1fr)}
.bottom-link{border:0;background:#fff;padding:9px 5px 10px;color:#657985;font-size:11px;font-weight:900}
.bottom-link span{display:block;font-size:20px;margin-bottom:2px}
.bottom-link.active{color:#0b7894;background:#eef9fb}
.desktop-only{display:block}
.mobile-only{display:none}
@media(max-width:950px){
  .hero-grid,.layout{grid-template-columns:1fr}
  .stats-grid{grid-template-columns:repeat(2,1fr)}
  .admin-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:680px){
  .shell{padding:12px 11px 84px}
  .topbar{padding:10px 11px}
  .brand-text{display:none}
  .hero{padding:16px;border-radius:21px}
  .stats-grid{gap:8px}
  .stat{padding:11px}
  .layout{gap:11px}
  .panel{padding:13px;border-radius:17px}
  .form-grid,.form-grid.three{grid-template-columns:1fr}
  .radio-cards{grid-template-columns:1fr 1fr}
  .catch-card{grid-template-columns:62px 1fr}
  .catch-photo{width:62px;height:62px}
  .catch-card>.btn{grid-column:1/-1}
  .login-card{grid-template-columns:1fr}
  .login-art{padding:22px}
  .login-art h1{font-size:40px}
  .login-form{padding:22px}
  .admin-grid{grid-template-columns:1fr 1fr}
  .species-row{grid-template-columns:1fr 105px}
  .species-row .species-active,.species-row .species-delete{grid-row:2}
  .desktop-only{display:none}
  .mobile-only{display:block}
}


.cloud-feature-list{display:grid;gap:8px;margin-top:22px;font-weight:800;font-size:14px}
.auth-tabs{display:flex;gap:5px;background:#e8f0f3;padding:5px;border-radius:15px;margin-bottom:18px}
.auth-tab{flex:1;border:0;background:transparent;border-radius:11px;padding:10px;font-weight:950;color:#5d707b}
.auth-tab.active{background:#fff;color:var(--navy);box-shadow:0 3px 10px rgba(6,31,47,.12)}
.pending-card{width:min(560px,94vw);background:#fff;border-radius:28px;padding:30px;text-align:center;box-shadow:0 30px 80px rgba(0,0,0,.35)}
.pending-logo{width:82px;height:82px;border-radius:22px}
.pending-icon{font-size:54px;margin:12px 0 3px}
.pending-card h1{color:var(--navy);margin:4px 0 9px}
.pending-card p{color:var(--muted);font-weight:700;line-height:1.5}
.account-label{max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:850;opacity:.78}
.sync-error-text{font-size:11px;color:#a52c3d;font-weight:800;margin-top:5px}
.badge.syncing{background:#dff1ff;color:#165e8a}
.badge.error{background:#ffe4e7;color:#912b3a}
.user-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.user-actions select{min-width:105px;padding:7px 8px}
.photo-cloud-note{font-size:11px;color:var(--muted);font-weight:750;margin-top:5px}
@media(max-width:680px){
  .account-label{display:none}
  .top-actions{gap:5px}
  .icon-button{padding:8px 9px;font-size:12px}
}


/* FishCap v2.1: online satellite maps, improved GPS and environment */
.online-map{height:340px;min-height:340px;background:#123b4d}
#fullMap.online-map,.view #fullMap{height:620px;min-height:620px}
.leaflet-container{font-family:inherit;background:#153d4d}
.leaflet-control-layers{font-size:12px;font-weight:800}
.leaflet-popup-content{font-weight:750;line-height:1.35}
.gps-pin-icon{background:transparent;border:0}
.gps-pin-dot{width:28px;height:28px;border-radius:50% 50% 50% 0;background:#f1ad2f;border:4px solid white;box-shadow:0 4px 12px rgba(0,0,0,.4);transform:rotate(-45deg)}
.catch-pin-dot{width:18px;height:18px;border-radius:50%;background:#168bd1;border:3px solid white;box-shadow:0 3px 9px rgba(0,0,0,.35)}
.gps-progress{width:240px;max-width:70vw;height:9px;background:#d8e7ec;border-radius:999px;overflow:hidden;margin-top:8px}
.gps-progress span{display:block;height:100%;width:4%;background:linear-gradient(90deg,#eeb03b,#159e9a);transition:width .25s ease}
.environment-panel{background:#f8f4e8;border:2px solid #ead9a8}
.environment-attribution{margin-top:8px;font-size:11px;font-weight:750;color:#69747a}
.species-status{display:inline-flex;border-radius:999px;padding:5px 8px;font-size:11px;font-weight:950}
.species-status.pending{background:#fff0bd;color:#725500}
.species-status.approved{background:#dff7ec;color:#126144}
.species-status.rejected{background:#ffe4e7;color:#912b3a}
.species-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.species-proposer{font-size:11px;color:var(--muted);font-weight:750;margin-top:4px}
@media(max-width:680px){
  .online-map{height:360px;min-height:360px}
  #fullMap.online-map,.view #fullMap{height:560px;min-height:560px}
  .gps-progress{width:100%}
}


/* FishCap v2.2 pressure tendency */
.pressure-trend-card{
  display:flex;align-items:center;gap:13px;border-radius:17px;padding:13px 15px;
  border:2px solid #dbe5e9;background:#f3f7f8;
}
.pressure-trend-card.rising{background:#e7f8ef;border-color:#aee0c5;color:#155e45}
.pressure-trend-card.falling{background:#fff0f1;border-color:#f2bdc5;color:#8b2735}
.pressure-trend-card.steady,.pressure-trend-card.neutral{background:#eef7fb;border-color:#c8e7f0;color:#264b5d}
.pressure-trend-arrow{font-size:34px;font-weight:1000;line-height:1}
.pressure-trend-card strong{display:block;font-size:17px;text-transform:uppercase;letter-spacing:.4px}
.pressure-trend-card div div{font-size:12px;font-weight:800;margin-top:3px}


/* FishCap v2.3 effort periods */
.current-effort-list{display:grid;gap:8px;margin-top:12px}
.current-effort-item{background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.22);border-radius:14px;padding:10px 12px}
.current-effort-item strong{display:block;font-size:14px}
.current-effort-item small{display:block;margin-top:3px;opacity:.9;font-weight:750}
.effort-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:10px;margin:14px 0}
.effort-summary-card{border:1px solid var(--line);border-radius:16px;padding:13px;background:#f7fafb}
.effort-summary-card strong{font-size:21px;color:var(--navy);display:block}
.effort-summary-card small{color:var(--muted);font-weight:800}
.effort-target-finfish{background:#e8f6ff;color:#155e86}
.effort-target-sharks_rays{background:#fff0df;color:#8b4b0d}
@media(max-width:760px){
  .effort-summary-grid{grid-template-columns:repeat(2,minmax(130px,1fr))}
}


/* FishCap v2.3.1 explicit port-session confirmation */
#sessionCard .notice.warn{border-left:5px solid #e0a326}


/* FishCap v2.4 quick field entry */
.data-filter-bar{
  display:flex;align-items:end;gap:8px;flex-wrap:wrap;
  padding:10px 12px;margin:10px 0 14px;background:#f3f7f8;
  border:1px solid #d9e6ea;border-radius:15px
}
.data-filter-bar select,.data-filter-bar input{min-height:38px}
.compact-date-field{display:grid;gap:3px;font-size:10px;font-weight:900;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}
.data-filter-count{font-size:12px;font-weight:850;color:var(--muted);margin-left:auto}

.quick-target-controls{
  margin-top:12px;padding:12px;border-radius:17px;
  background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.24)
}
.quick-target-title{font-size:11px;font-weight:950;text-transform:uppercase;letter-spacing:.6px;margin-bottom:8px}
.quick-target-row{display:grid;grid-template-columns:minmax(90px,1fr) auto minmax(90px,1fr) auto auto;gap:7px;align-items:center}
.quick-target-row select{min-width:0;padding:9px;border-radius:11px;border:0}
.quick-target-btn{border:0;border-radius:12px;padding:10px 12px;font-weight:950;cursor:pointer;white-space:nowrap}
.quick-target-btn.finfish{background:#dff3ff;color:#075b87}
.quick-target-btn.sharks{background:#ffe7cd;color:#914b00}
.quick-target-btn.split{background:#fff;color:#183b4f}
.quick-target-btn.active{outline:3px solid #f5c04b;box-shadow:0 0 0 2px rgba(0,0,0,.18)}
.quick-target-status{font-size:11px;font-weight:800;margin-top:8px;opacity:.9}

.quick-catch-card{width:min(760px,96vw);padding-bottom:84px}
.quick-catch-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
.catch-target-banner{
  display:flex;justify-content:space-between;gap:12px;align-items:center;
  padding:11px 13px;margin-bottom:12px;border-radius:14px;background:#e8f4f7;color:var(--navy)
}
.catch-target-banner span{font-size:11px;font-weight:900;text-transform:uppercase}
.catch-target-banner strong{text-align:right}
.compact-gps-panel{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  margin-top:13px;padding:12px 14px;background:#eef7f9;border-radius:15px;border:1px solid #d4e8ed
}
.compact-actions{margin:0}
.catch-details{
  margin-top:11px;border:1px solid #dce7ea;border-radius:14px;background:#fff;overflow:hidden
}
.catch-details>summary{padding:12px 14px;cursor:pointer;font-weight:900;color:var(--navy);background:#f8fafb}
.catch-details[open]{padding-bottom:12px}
.catch-details[open]>:not(summary){margin-left:12px;margin-right:12px}
.sticky-save-row{
  position:sticky;bottom:-1px;z-index:5;display:flex;gap:9px;
  margin:16px -20px -20px;padding:13px 20px;
  background:rgba(255,255,255,.96);border-top:1px solid #dae5e9;backdrop-filter:blur(8px)
}
.admin-environment-details{background:#fffaf0}
.review-all-highlight{box-shadow:0 0 0 3px rgba(27,157,107,.16)}

@media(max-width:760px){
  .quick-target-row{grid-template-columns:1fr auto}
  .quick-target-row .split{grid-column:1/-1}
  .quick-catch-grid{grid-template-columns:1fr 1fr}
  .compact-gps-panel{align-items:flex-start;flex-direction:column}
}
@media(max-width:520px){
  .quick-catch-grid{grid-template-columns:1fr}
  .data-filter-bar{align-items:stretch}
  .data-filter-bar>*{width:100%}
  .data-filter-count{margin-left:0}
}


/* FishCap v2.5 tide position and movement */
.tide-summary-card{
  margin-top:12px;padding:14px;border:1px solid #c9dfe6;border-radius:17px;
  background:#eef7fb;color:#244a5d
}
.tide-summary-card.rising{background:#e8f7f1;border-color:#b5dfcb;color:#145c46}
.tide-summary-card.falling{background:#fff3e8;border-color:#edcbaa;color:#8a4b13}
.tide-summary-card.slack{background:#f1f3f6;border-color:#d5dbe2;color:#4b5563}
.tide-summary-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}
.tide-summary-head small{display:block;font-size:10px;font-weight:950;text-transform:uppercase;letter-spacing:.6px}
.tide-summary-head strong{display:block;margin-top:2px;font-size:18px}
.tide-summary-head div div{margin-top:4px;font-size:12px;font-weight:750}
.tide-movement-badge{
  border-radius:999px;padding:7px 10px;background:rgba(255,255,255,.8);
  font-size:11px;font-weight:950;white-space:nowrap
}
.tide-level-scale{
  position:relative;height:44px;margin-top:16px;border-radius:14px;
  background:linear-gradient(90deg,#dceaf4 0%,#f4f7f8 50%,#d9edf0 100%);
  border:1px solid rgba(31,74,94,.18)
}
.tide-level-scale::before{
  content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;background:rgba(31,74,94,.28)
}
.tide-level-scale span{
  position:absolute;bottom:5px;font-size:9px;font-weight:900;text-transform:uppercase
}
.tide-scale-low{left:7px}
.tide-scale-mid{left:50%;transform:translateX(-50%)}
.tide-scale-high{right:7px}
.tide-level-marker{
  position:absolute;top:5px;width:14px;height:14px;border-radius:50%;
  background:#f2b83f;border:3px solid #fff;box-shadow:0 1px 7px rgba(0,0,0,.3);
  transform:translateX(-50%);transition:left .25s ease
}

/* FishCap v2.6 historical records */
.badge.historical{background:#eee4ff;color:#5d2b89;border:1px solid #cfb8eb}


/* FishCap v2.7 approved-species search */
.species-search-field{position:relative}
.species-suggestions{
  position:absolute;left:0;right:0;top:calc(100% - 26px);z-index:60;
  max-height:280px;overflow:auto;background:#fff;border:1px solid #c9dce2;
  border-radius:14px;box-shadow:0 14px 32px rgba(15,44,58,.20);padding:5px
}
.species-suggestions button{
  display:flex;width:100%;justify-content:space-between;align-items:center;
  gap:12px;text-align:left;border:0;background:#fff;padding:10px 11px;
  border-radius:10px;cursor:pointer;color:var(--navy)
}
.species-suggestions button:hover,.species-suggestions button.active{
  background:#e6f4f7
}
.species-suggestions button strong{font-size:13px}
.species-suggestions button small{font-size:10px;color:var(--muted);text-align:right}
#newSpeciesNotice{margin-top:8px;font-size:11px}


/* FishCap v2.8 safe test mode */
.test-session-toggle{display:flex;align-items:flex-start;gap:11px;padding:13px 14px;border:2px solid #d97706;border-radius:15px;background:#fff7ed}
.test-session-toggle input{width:20px;height:20px;margin-top:2px}
.test-session-toggle strong{display:block;color:#9a3412}
.test-session-toggle small{display:block;margin-top:3px;color:#7c2d12;font-weight:700}
.session-card.test-session{background:linear-gradient(135deg,#7c2d12,#b45309);box-shadow:0 12px 30px rgba(154,52,18,.24)}
.test-record-banner{margin-bottom:12px;padding:10px 13px;border-radius:13px;background:#7f1d1d;color:#fff;font-weight:950;text-align:center;letter-spacing:.4px}
.badge.test{background:#7f1d1d;color:#fff;border:1px solid #fecaca}
.test-row{background:#fff7ed}
.selection-count{display:inline-flex;align-items:center;padding:7px 10px;border-radius:999px;background:#edf2f4;color:var(--navy);font-size:11px;font-weight:900}
.btn.warning{background:#d97706;color:#fff}


/* FishCap v2.8.1 direct deletion and GPS tile recovery */
.map-refresh-bar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:10px;margin-bottom:7px}
.map-refresh-bar span{font-size:11px;font-weight:900;color:var(--muted)}
.online-map{overflow:hidden;contain:layout paint;background:#dce8ec}
.online-map.leaflet-container{width:100%;height:100%;min-height:320px}
.online-map .leaflet-tile{image-rendering:auto;backface-visibility:hidden}
.delete-scope-options{display:grid;gap:10px;margin:12px 0}
.delete-scope-option{display:flex;gap:11px;align-items:flex-start;padding:12px;border:1px solid #ccd9de;border-radius:14px;background:#fff}
.delete-scope-option.recommended{border-color:#d97706;background:#fff7ed}
.delete-scope-option input{width:19px;height:19px;margin-top:2px}
.delete-scope-option strong{display:block;color:var(--navy)}
.delete-scope-option small{display:block;margin-top:4px;color:var(--muted);font-weight:700;line-height:1.35}


/* FishCap v2.8.3 satellite tile alignment and iPhone display fix */
.leaflet-container,
.leaflet-map-pane,
.leaflet-tile-pane,
.leaflet-layer{image-rendering:auto!important}
.map-wrap.leaflet-container img.leaflet-tile,
.leaflet-container img.leaflet-tile,
.leaflet-container .fishcap-esri-tile{
  width:256px!important;height:256px!important;min-height:0!important;
  max-width:none!important;max-height:none!important;object-fit:fill!important;
  image-rendering:auto!important;backface-visibility:hidden;
  -webkit-backface-visibility:hidden
}
.leaflet-container .leaflet-marker-icon,
.leaflet-container .leaflet-marker-shadow,
.leaflet-container .leaflet-control img{
  max-width:none!important;max-height:none!important;min-height:0!important
}
#catchMapPreview.online-map.leaflet-container{
  position:relative;overflow:hidden;min-height:320px;
  transform:translateZ(0);-webkit-transform:translateZ(0)
}

/* FishCap v2.8.4 camera tag scanner */
#catchTag{
  font-size:24px;
  font-weight:1000;
  letter-spacing:2px;
  text-transform:uppercase;
}
.tag-entry-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:8px;
  align-items:stretch;
}
.tag-scan-btn{
  min-width:132px;
  white-space:nowrap;
}
.visually-hidden-file{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  padding:0!important;
  margin:-1px!important;
  overflow:hidden!important;
  clip:rect(0,0,0,0)!important;
  white-space:nowrap!important;
  border:0!important;
  opacity:0!important;
  pointer-events:none!important;
}
.tag-scan-confirmation{
  margin-top:7px;
  border-radius:11px;
  padding:8px 10px;
  background:#e4f8ef;
  color:#146347;
  font-weight:900;
  font-size:13px;
}
.tag-scanner-dialog{
  width:min(760px,96vw);
  max-height:94vh;
}
.tag-scanner-card{
  padding:17px;
}
.tag-scanner-card .modal-head p{
  margin:5px 0 0;
  color:var(--muted);
  font-weight:750;
  line-height:1.35;
}
.tag-scan-preview{
  position:relative;
  height:min(44vh,390px);
  min-height:240px;
  overflow:auto;
  border:2px solid #cbdde4;
  border-radius:17px;
  background:#101a20;
  display:grid;
  place-items:center;
  touch-action:pan-x pan-y pinch-zoom;
}
.tag-scan-preview img{
  display:block;
  max-width:100%;
  max-height:100%;
  width:auto;
  height:auto;
  object-fit:contain;
  transition:max-width .15s ease;
}
.tag-scan-preview.zoomed{
  display:block;
}
.tag-scan-preview.zoomed img{
  max-width:none;
  max-height:none;
  width:180%;
  min-width:1100px;
}
.tag-scan-guide{
  position:absolute;
  left:6%;
  right:6%;
  top:31%;
  height:38%;
  border:3px solid rgba(255,205,78,.95);
  border-radius:15px;
  box-shadow:0 0 0 9999px rgba(0,0,0,.15);
  pointer-events:none;
}
.tag-scan-guide span{
  position:absolute;
  left:50%;
  top:-15px;
  transform:translate(-50%,-100%);
  background:rgba(4,28,42,.88);
  color:#fff;
  border-radius:999px;
  padding:5px 10px;
  font-size:12px;
  font-weight:950;
  white-space:nowrap;
}
.tag-scan-preview.empty img,
.tag-scan-preview.empty .tag-scan-guide{
  display:none;
}
.tag-scan-empty-text{
  display:none;
  color:#c6d7dd;
  font-weight:900;
}
.tag-scan-preview.empty .tag-scan-empty-text{
  display:block;
}
.tag-scan-preview-actions{
  display:flex;
  gap:8px;
  justify-content:flex-end;
  margin-top:8px;
  flex-wrap:wrap;
}
.tag-scan-progress{
  margin:13px 0 10px;
  display:grid;
  grid-template-columns:minmax(120px,1fr) auto;
  gap:10px;
  align-items:center;
}
.tag-scan-progress-track{
  height:11px;
  border-radius:999px;
  background:#dce9ed;
  overflow:hidden;
}
.tag-scan-progress-track span{
  display:block;
  height:100%;
  width:0;
  border-radius:inherit;
  background:linear-gradient(90deg,#eeb03b,#159e9a);
  transition:width .2s ease;
}
.tag-scan-progress strong{
  color:#47616d;
  font-size:12px;
  text-align:right;
}
.tag-result-field{
  margin-top:12px;
}
#tagScanResult{
  font-size:34px;
  font-weight:1000;
  letter-spacing:5px;
  text-align:center;
  text-transform:uppercase;
  min-height:60px;
  border-width:3px;
}
#tagScanResult[aria-invalid="true"]{
  border-color:#d64b5d;
  background:#fff4f5;
}
.tag-scan-details{
  margin-top:10px;
  border:1px solid var(--line);
  border-radius:12px;
  padding:8px 10px;
}
.tag-scan-details summary{
  cursor:pointer;
  font-weight:850;
  color:#506973;
}
.tag-scan-details pre{
  white-space:pre-wrap;
  word-break:break-word;
  max-height:110px;
  overflow:auto;
  margin:8px 0 0;
  font-size:12px;
}
.tag-scan-privacy{
  margin-top:10px;
  border-radius:12px;
  padding:9px 11px;
  background:#eef7fb;
  color:#365867;
  font-size:12px;
  font-weight:800;
}
.tag-scanner-actions{
  justify-content:flex-end;
  margin-top:13px;
}
.tag-scanner-actions .btn:disabled,
.tag-scan-btn:disabled{
  opacity:.5;
  cursor:not-allowed;
}
@media(max-width:680px){
  .tag-entry-row{
    grid-template-columns:1fr;
  }
  .tag-scan-btn{
    width:100%;
    min-height:48px;
  }
  .tag-scanner-card{
    padding:13px;
  }
  .tag-scan-preview{
    height:38vh;
    min-height:230px;
  }
  .tag-scan-progress{
    grid-template-columns:1fr;
    gap:5px;
  }
  .tag-scan-progress strong{
    text-align:left;
  }
  #tagScanResult{
    font-size:31px;
    letter-spacing:4px;
  }
  .tag-scanner-actions{
    display:grid;
    grid-template-columns:1fr 1fr;
  }
  .tag-scanner-actions #confirmScannedTagBtn{
    grid-column:1/-1;
    min-height:51px;
  }
}

/* FishCap v2.8.5 assisted tag scanner */
.tag-scan-preview{
  width:100%;
  height:auto;
  min-height:210px;
  aspect-ratio:16 / 9;
  overflow:hidden;
}
.tag-scan-preview video,
.tag-scan-preview img{
  display:block;
  width:100%;
  height:100%;
  max-width:none;
  max-height:none;
  object-fit:cover;
}
.tag-scan-preview.camera-mode img,
.tag-scan-preview.photo-mode video,
.tag-scan-preview.empty video,
.tag-scan-preview.empty img{
  display:none!important;
}
.tag-scan-preview.zoomed{
  overflow:auto;
  display:block;
  touch-action:pan-x pan-y pinch-zoom;
}
.tag-scan-preview.zoomed img{
  width:180%;
  height:auto;
  min-width:900px;
  object-fit:contain;
}
.tag-scan-guide{
  left:5%;
  right:auto;
  width:90%;
  height:auto;
  aspect-ratio:4.75 / 1;
  top:50%;
  transform:translateY(-50%);
  border-width:4px;
  box-shadow:0 0 0 9999px rgba(0,0,0,.28), 0 0 20px rgba(255,205,78,.35);
}
.tag-scan-preview.camera-mode .tag-scan-guide,
.tag-scan-preview.photo-mode .tag-scan-guide{
  display:block;
}
.tag-scan-preview.empty .tag-scan-guide{
  display:none;
}
.tag-scan-preview-actions{
  justify-content:flex-start;
}
.tag-scan-preview-actions #captureTagPhotoBtn{
  min-height:46px;
  min-width:150px;
}
.tag-scan-tips,
.native-text-scan-help{
  margin-top:10px;
  border-radius:12px;
  padding:10px 12px;
  line-height:1.4;
  font-size:13px;
}
.tag-scan-tips{
  background:#fff7dc;
  border:1px solid #eed57a;
  color:#674d08;
}
.native-text-scan-help{
  background:#eef7fb;
  border:1px solid #c9e2ed;
  color:#365867;
}
.tag-candidate-section{
  margin-top:12px;
  padding:12px;
  border:2px solid #c9dde5;
  border-radius:14px;
  background:#f7fbfc;
}
.tag-candidate-section > strong{
  display:block;
  font-size:15px;
  color:#1c4c5d;
}
.tag-candidate-section > p{
  margin:4px 0 10px;
  color:var(--muted);
  font-size:12px;
  font-weight:750;
}
.tag-candidate-buttons{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
}
.tag-candidate-btn{
  appearance:none;
  border:2px solid #b9d2dc;
  background:#fff;
  border-radius:12px;
  padding:10px 9px;
  color:#183f4f;
  text-align:center;
  cursor:pointer;
}
.tag-candidate-btn strong{
  display:block;
  font-size:24px;
  letter-spacing:2px;
  font-weight:1000;
}
.tag-candidate-btn small{
  display:block;
  margin-top:3px;
  color:#607883;
  font-size:10px;
  font-weight:800;
}
.tag-candidate-btn.selected{
  border-color:#159e9a;
  background:#e4f8f4;
  box-shadow:0 0 0 2px rgba(21,158,154,.14);
}
@media(max-width:680px){
  .tag-scan-preview{
    min-height:180px;
    aspect-ratio:16 / 9;
  }
  .tag-scan-guide span{
    top:-10px;
    font-size:10px;
    padding:4px 8px;
  }
  .tag-scan-preview-actions{
    display:grid;
    grid-template-columns:1fr 1fr;
  }
  .tag-scan-preview-actions #captureTagPhotoBtn{
    grid-column:1/-1;
    width:100%;
  }
  .tag-candidate-buttons{
    grid-template-columns:1fr 1fr;
  }
  .tag-candidate-btn strong{
    font-size:21px;
  }
  .tag-scanner-actions{
    grid-template-columns:1fr 1fr;
  }
  .tag-scanner-actions #useNativeTextScanBtn,
  .tag-scanner-actions #confirmScannedTagBtn{
    grid-column:1/-1;
  }
}

/* FishCap v2.9.0 legacy angler support */
.tag-scan-preview{
  position:relative;
  width:100%;
  min-height:210px;
  aspect-ratio:16 / 9;
  overflow:hidden;
  border:2px solid #cbdde4;
  border-radius:17px;
  background:#101a20;
}
.tag-scan-preview.camera-mode{
  display:block;
}
.tag-scan-preview.camera-mode video{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:50% 50%;
}
.tag-scan-preview.photo-mode{
  display:flex;
  align-items:center;
  justify-content:flex-start;
  overflow:auto;
  padding:10px 0;
  touch-action:pan-x pan-y pinch-zoom;
  -webkit-overflow-scrolling:touch;
}
.tag-scan-preview.photo-mode img{
  display:block;
  flex:none;
  height:auto!important;
  max-width:none!important;
  max-height:none!important;
  object-fit:contain;
  transform-origin:center center;
}
.tag-scan-preview.empty{
  display:grid;
  place-items:center;
}
.tag-scan-preview.photo-mode .tag-scan-guide,
.tag-scan-preview.empty .tag-scan-guide{
  display:none!important;
}
.tag-scan-guide{
  position:absolute;
  left:5%;
  top:50%;
  width:90%;
  height:auto;
  aspect-ratio:4.75 / 1;
  transform:translateY(-50%);
  border:4px solid rgba(255,205,78,.98);
  border-radius:15px;
  box-shadow:0 0 0 9999px rgba(0,0,0,.28), 0 0 20px rgba(255,205,78,.38);
  pointer-events:none;
}
.tag-photo-tools{
  margin-top:9px;
  padding:10px;
  border:1px solid #c9dde5;
  border-radius:14px;
  background:#f4f9fb;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  flex-wrap:wrap;
}
.tag-photo-tools.hidden{
  display:none!important;
}
.tag-zoom-controls,
.tag-filter-controls{
  display:flex;
  align-items:center;
  gap:7px;
  flex-wrap:wrap;
}
.tag-zoom-controls strong{
  min-width:54px;
  text-align:center;
  color:#234d5d;
  font-size:13px;
}
.tag-filter-controls .btn.active{
  background:#dff6f1;
  border-color:#159e9a;
  color:#075f5c;
  box-shadow:0 0 0 2px rgba(21,158,154,.12);
}
.tag-magnifier-status{
  margin:11px 0 8px;
  color:#47616d;
  font-size:12px;
  font-weight:900;
}
#tagEntryStatus.valid{
  color:#08735e;
  font-weight:900;
}
#tagScanResult{
  font-size:36px;
  letter-spacing:6px;
  font-weight:1000;
  min-height:68px;
}
@media(max-width:680px){
  .tag-scan-preview{
    min-height:190px;
  }
  .tag-photo-tools{
    display:grid;
    grid-template-columns:1fr;
  }
  .tag-zoom-controls,
  .tag-filter-controls{
    justify-content:center;
  }
  .tag-filter-controls .btn{
    flex:1 1 auto;
  }
  #tagScanResult{
    font-size:32px;
    letter-spacing:5px;
  }
}


/* Home tide and pressure panel — v2.9.1 */
.home-conditions-card{
  margin:14px 0 16px;
  padding:16px;
  border-radius:24px;
  color:#0d2535;
  background:
    radial-gradient(circle at 90% -20%,rgba(37,176,217,.18),transparent 42%),
    linear-gradient(145deg,#ffffff,#f2f8fa);
  border:1px solid #d7e5ea;
  box-shadow:0 12px 30px rgba(12,61,78,.11);
}
.home-conditions-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.home-conditions-eyebrow{color:#1682a2;font-size:11px;line-height:1.2;font-weight:900;letter-spacing:.12em;text-transform:uppercase}
.home-conditions-head h2{margin:3px 0 2px;font-size:22px;color:#092d43}
.home-conditions-meta{color:#697d88;font-size:12px;line-height:1.35}
.conditions-refresh-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid #c8dbe1;border-radius:999px;min-height:38px;padding:8px 12px;color:#0a6681;background:#fff;font-weight:900;cursor:pointer;white-space:nowrap}
.conditions-refresh-btn:disabled{opacity:.58;cursor:wait}
.home-conditions-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.condition-module{min-width:0;padding:14px;border-radius:19px;border:1px solid #dbe7eb;background:rgba(255,255,255,.94);overflow:hidden}
.condition-module-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.condition-module-head small{display:block;margin-bottom:2px;color:#71838d;font-size:10px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.condition-module-head strong{display:block;color:#092d43;font-size:19px;line-height:1.1}
.condition-badge{border-radius:999px;padding:5px 8px;font-size:10px;font-weight:950;white-space:nowrap}
.condition-badge.rising{color:#087647;background:#ddf5e8}
.condition-badge.falling{color:#9b4e0b;background:#fff0dc}
.condition-badge.slack,.condition-badge.neutral{color:#61747c;background:#edf2f4}
.tide-cycle-visual{margin:9px 0 2px}
.tide-cycle-visual svg{display:block;width:100%;height:72px;overflow:visible}
.tide-fill{fill:url(#homeTideFill)}
.tide-line{fill:none;stroke:#168db5;stroke-width:3;stroke-linecap:round}
.tide-mid-line{stroke:#bdced4;stroke-width:1;stroke-dasharray:3 4}
.home-tide-marker{fill:#fff;stroke:#08799b;stroke-width:3;filter:drop-shadow(0 2px 3px rgba(0,70,95,.28));transition:cx .5s ease,cy .5s ease}
.tide-cycle-labels{display:grid;grid-template-columns:1fr 1fr 1fr;margin-top:-5px;color:#71848d;font-size:9px;font-weight:850;text-transform:uppercase}
.tide-cycle-labels span:nth-child(2){text-align:center}
.tide-cycle-labels span:last-child{text-align:right}
.condition-main-row,.pressure-summary-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-top:7px}
.condition-main-row strong{color:#092d43;font-size:25px}
.condition-main-row span,.pressure-summary-row span{color:#657a85;font-size:11px;font-weight:850;text-align:right}
.condition-detail{margin-top:5px;color:#71838d;font-size:11px;line-height:1.35}
.pressure-direction-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:14px;font-size:27px;font-weight:950}
.pressure-direction-icon.rising{color:#087647;background:#ddf5e8}
.pressure-direction-icon.falling{color:#a84a20;background:#ffeadf}
.pressure-direction-icon.steady,.pressure-direction-icon.neutral{color:#61747c;background:#edf2f4}
.pressure-trend-visual{margin:7px 0 0}
.pressure-trend-visual svg{display:block;width:100%;height:64px}
.pressure-base-line{stroke:#d6e2e6;stroke-width:1;stroke-dasharray:3 4}
.pressure-sparkline{fill:none;stroke:#1388a8;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;transition:d .35s ease}
.pressure-spark-dot{fill:#fff;stroke:#087994;stroke-width:2.5}
.pressure-summary-row strong{color:#092d43;font-size:14px}
.home-conditions-status{display:flex;align-items:center;gap:6px;margin-top:10px;color:#71838d;font-size:10px;line-height:1.35}
.home-conditions-status.loading{color:#096f8e}
.home-conditions-status.warning{color:#92520e}
.home-conditions-status.good{color:#177049}
@media(max-width:520px){
  .home-conditions-card{padding:13px;border-radius:20px}
  .home-conditions-head h2{font-size:20px}
  .conditions-refresh-btn span:last-child{display:none}
  .conditions-refresh-btn{width:40px;padding:8px}
  .home-conditions-grid{gap:8px}
  .condition-module{padding:11px;border-radius:16px}
  .condition-module-head strong{font-size:16px}
  .tide-cycle-visual svg{height:62px}
  .pressure-trend-visual svg{height:56px}
  .condition-main-row strong{font-size:21px}
  .condition-main-row span,.pressure-summary-row span{font-size:9px}
  .pressure-summary-row strong{font-size:12px}
}
@media(max-width:350px){.home-conditions-grid{grid-template-columns:1fr}}


/* FishCap Research Command Centre v3.0.0 */
.research-tab{font-weight:950}
.research-hero{
  display:flex;justify-content:space-between;align-items:center;gap:20px;
  padding:22px;margin:4px 0 14px;border-radius:24px;color:#fff;
  background:
    radial-gradient(circle at 90% -20%,rgba(42,190,168,.55),transparent 42%),
    linear-gradient(135deg,#082f48,#0b6f83 72%,#168d78);
  box-shadow:0 16px 34px rgba(7,55,74,.18);
  overflow:hidden;position:relative
}
.research-hero:after{
  content:"";position:absolute;width:240px;height:240px;border:1px solid rgba(255,255,255,.12);
  border-radius:50%;right:-85px;bottom:-130px
}
.research-hero h3{margin:5px 0 7px;font-size:clamp(24px,4vw,34px);line-height:1.05}
.research-hero p{max-width:730px;margin:0;color:#d9edef;line-height:1.5}
.research-eyebrow{
  color:#70d9cc;font-size:10px;font-weight:950;letter-spacing:.13em;text-transform:uppercase
}
.research-hero-mark{
  flex:none;display:grid;grid-template-columns:1fr auto 1fr;gap:8px;align-items:center;
  min-width:220px;padding:16px;border:1px solid rgba(255,255,255,.18);
  border-radius:18px;background:rgba(255,255,255,.08);backdrop-filter:blur(8px);
  font-size:11px;font-weight:950;letter-spacing:.09em
}
.research-hero-mark strong{font-size:24px;color:#7be2cf}
.research-controls-card{
  padding:14px;border:1px solid var(--line);border-radius:18px;background:#f8fbfc;margin-bottom:14px
}
.research-controls{display:grid;grid-template-columns:minmax(180px,1.5fr) minmax(130px,.7fr) minmax(130px,.7fr) auto;gap:10px;align-items:end}
.research-controls label{display:grid;gap:5px}
.research-controls label>span{color:var(--muted);font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.06em}
.research-controls select,.research-controls input{
  width:100%;min-height:42px;border:1px solid #cad9de;border-radius:12px;background:#fff;padding:9px 11px;color:var(--navy)
}
.research-control-actions{display:flex;gap:7px;flex-wrap:wrap}
.research-filter-summary{margin-top:9px;color:var(--muted);font-size:11px;font-weight:800}
.research-kpi-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px;margin:14px 0}
.research-kpi{
  padding:15px;border:1px solid var(--line);border-radius:18px;background:#fff;
  box-shadow:0 7px 18px rgba(6,45,62,.06)
}
.research-kpi.highlight{background:linear-gradient(135deg,#0b6f83,#0c927e);color:#fff;border-color:transparent}
.research-kpi small{display:block;color:var(--muted);font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.06em}
.research-kpi.highlight small,.research-kpi.highlight span{color:#d8f0ed}
.research-kpi strong{display:block;margin:8px 0 4px;color:var(--navy);font-size:29px;line-height:1}
.research-kpi.highlight strong{color:#fff}
.research-kpi span{display:block;color:var(--muted);font-size:11px;font-weight:750}
.research-panel{
  margin-top:14px;padding:17px;border:1px solid var(--line);border-radius:21px;background:#fff;
  box-shadow:0 8px 22px rgba(6,45,62,.06)
}
.research-panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}
.research-panel-head.compact{margin-bottom:8px}
.research-panel-head h3{margin:3px 0 4px;color:var(--navy);font-size:20px}
.research-panel-head p{margin:0;color:var(--muted);font-size:12px;line-height:1.4}
.replay-actions{display:flex;gap:7px;flex-wrap:wrap}
.research-replay-map{
  min-height:390px;border-radius:17px;overflow:hidden;border:1px solid #cbdde2;background:#bddfe1
}
.replay-timeline{margin-top:12px}
.replay-timeline input{width:100%;accent-color:#0b8191}
.replay-timeline-meta{display:flex;justify-content:space-between;gap:10px;color:var(--muted);font-size:11px}
.replay-timeline-meta strong{color:var(--navy)}
.replay-legend{display:flex;flex-wrap:wrap;gap:10px 16px;margin-top:10px;color:var(--muted);font-size:10px;font-weight:850}
.legend-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:4px;vertical-align:-1px;background:#168bd1}
.legend-dot.tagged{background:#e19a22}
.legend-dot.recapture{background:#c5444f}
.legend-line{display:inline-block;width:18px;border-top:3px solid #8a5ccb;margin-right:4px;vertical-align:3px}
.research-insight-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.research-insight{
  display:grid;grid-template-columns:44px minmax(0,1fr);gap:10px;padding:13px;
  border-radius:16px;border:1px solid #dce7e9;background:#f8fbfc
}
.research-insight.good{background:#eef8f3;border-color:#cfe8da}
.research-insight.warn{background:#fff7e9;border-color:#f1dfbd}
.research-insight.neutral{background:#f5f6fb;border-color:#dedff0}
.research-insight-icon{
  width:44px;height:44px;border-radius:13px;display:grid;place-items:center;
  background:#e5f2f3;color:#0a7182;font-size:20px;font-weight:950
}
.research-insight h4{margin:0 0 4px;color:var(--navy);font-size:14px}
.research-insight p{margin:0;color:var(--muted);font-size:11px;line-height:1.4}
.research-chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.research-chart{min-height:210px}
.empty-chart{display:grid;place-items:center;color:var(--muted);font-size:12px;background:#f8fbfc;border-radius:14px}
.vertical-chart{
  height:220px;display:flex;align-items:flex-end;gap:8px;padding:16px 8px 28px;border-bottom:1px solid #dbe5e8;
  background:linear-gradient(to top,rgba(12,112,132,.04),transparent);overflow-x:auto
}
.vertical-bar-wrap{min-width:48px;flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:5px;position:relative}
.vertical-bar{
  width:min(32px,75%);min-height:3px;border-radius:8px 8px 2px 2px;
  background:linear-gradient(180deg,#2bb9a6,#0b7587);box-shadow:0 5px 12px rgba(9,117,135,.2)
}
.vertical-bar-value{color:var(--navy);font-size:9px;font-weight:950}
.vertical-bar-label{position:absolute;top:calc(100% + 7px);font-size:8px;color:var(--muted);white-space:nowrap}
.histogram-bars{
  min-height:210px;display:flex;align-items:flex-end;gap:6px;padding:15px 6px 31px;border-bottom:1px solid #dbe5e8
}
.histogram-bin{flex:1;min-width:42px;height:170px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;position:relative}
.histogram-bar{width:80%;min-height:3px;border-radius:7px 7px 2px 2px;background:linear-gradient(180deg,#e2a23a,#d06f35)}
.histogram-count{font-size:9px;font-weight:950;color:var(--navy);margin-bottom:4px}
.histogram-label{position:absolute;top:calc(100% + 7px);font-size:8px;color:var(--muted);white-space:nowrap}
.environment-group{margin-bottom:14px}
.environment-group:last-child{margin-bottom:0}
.environment-group h4{margin:0 0 7px;color:var(--navy);font-size:12px}
.horizontal-bar-row{display:grid;grid-template-columns:90px 1fr 34px;gap:8px;align-items:center;margin:7px 0}
.horizontal-bar-row span{font-size:10px;color:var(--muted)}
.horizontal-bar-track{height:11px;border-radius:999px;background:#e9f0f2;overflow:hidden}
.horizontal-bar-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,#1283a0,#2db69e)}
.horizontal-bar-row strong{font-size:10px;color:var(--navy);text-align:right}
.readiness-layout{display:grid;grid-template-columns:150px 1fr;gap:16px;align-items:center}
.readiness-ring{
  --score:0;
  width:135px;height:135px;border-radius:50%;display:grid;place-items:center;align-content:center;
  background:conic-gradient(#1e9b79 calc(var(--score)*1%),#e7eef0 0);
  position:relative;margin:auto
}
.readiness-ring:before{content:"";position:absolute;inset:14px;border-radius:50%;background:#fff}
.readiness-ring strong,.readiness-ring span{position:relative;z-index:1}
.readiness-ring strong{font-size:30px;color:var(--navy)}
.readiness-ring span{color:var(--muted);font-size:10px;text-transform:uppercase;font-weight:900}
.readiness-checks{display:grid;gap:7px}
.readiness-check{
  display:grid;grid-template-columns:22px 1fr auto;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid #edf2f3
}
.readiness-check:last-child{border-bottom:0}
.readiness-check i{width:22px;height:22px;border-radius:8px;display:grid;place-items:center;background:#e5f5ed;color:#158054;font-style:normal;font-weight:950}
.readiness-check span{font-size:11px;color:var(--navy);font-weight:800}
.readiness-check strong{font-size:10px;color:var(--muted)}
.export-panel{display:flex;justify-content:space-between;align-items:center;gap:18px;background:linear-gradient(135deg,#eef8f5,#f3f8fb)}
.export-panel h3{margin:3px 0 4px;color:var(--navy)}
.export-panel p{margin:0;color:var(--muted);font-size:12px;max-width:720px}
.research-current-marker{
  width:22px;height:22px;border-radius:50%;background:#fff;border:5px solid #d6424e;
  box-shadow:0 0 0 5px rgba(214,66,78,.22),0 5px 12px rgba(0,0,0,.25)
}
@media(max-width:900px){
  .research-controls{grid-template-columns:repeat(2,minmax(0,1fr))}
  .research-control-actions{grid-column:1/-1}
  .research-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .research-chart-grid{grid-template-columns:1fr}
}
@media(max-width:620px){
  .research-hero{display:block;padding:18px}
  .research-hero-mark{margin-top:14px;min-width:0;width:100%}
  .research-controls{grid-template-columns:1fr}
  .research-control-actions{grid-column:auto}
  .research-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .research-kpi{padding:12px}
  .research-kpi strong{font-size:24px}
  .research-insight-grid{grid-template-columns:1fr}
  .research-panel{padding:13px}
  .research-panel-head{display:block}
  .replay-actions{margin-top:9px}
  .research-replay-map{min-height:310px}
  .readiness-layout{grid-template-columns:1fr}
  .export-panel{display:block}
  .export-panel .btn{width:100%;margin-top:13px}
}


/* Super Admin Long-Timeline Chart Renderer v3.2.15 */
.ai-tab{font-weight:950;color:#5a358b}
.ai-hero{
  display:flex;justify-content:space-between;align-items:center;gap:20px;
  padding:25px;margin:4px 0 14px;border-radius:24px;color:#fff;
  background:
    radial-gradient(circle at 88% 0,rgba(182,117,255,.48),transparent 42%),
    linear-gradient(135deg,#102c4a,#273a70 64%,#68438c);
  box-shadow:0 16px 34px rgba(23,39,82,.2);overflow:hidden;position:relative
}
.ai-hero:after{content:"";position:absolute;width:230px;height:230px;border:1px solid rgba(255,255,255,.13);border-radius:50%;right:-70px;bottom:-150px}
.ai-hero h3{margin:5px 0 8px;font-size:clamp(25px,4vw,36px);line-height:1.05}
.ai-hero p{max-width:760px;margin:0;color:#e5e7f6;line-height:1.5}
.ai-eyebrow{color:#cbb7ff;font-size:10px;font-weight:950;letter-spacing:.13em;text-transform:uppercase}
.ai-readonly-mark{flex:none;min-width:120px;padding:17px 20px;border:1px solid rgba(255,255,255,.22);border-radius:18px;background:rgba(255,255,255,.1);text-align:center;position:relative;z-index:1}
.ai-readonly-mark span,.ai-readonly-mark strong{display:block;letter-spacing:.13em}
.ai-readonly-mark span{font-size:10px;color:#d7d7ed}.ai-readonly-mark strong{font-size:22px;color:#fff;margin-top:3px}
.ai-privacy-strip{display:flex;gap:10px;align-items:center;padding:12px 15px;border:1px solid #d9d0ee;border-radius:16px;background:#f6f2ff;color:#4a3a68;font-size:12px;margin-bottom:14px}
.ai-privacy-strip strong{white-space:nowrap}.ai-privacy-strip span{color:#655d74}
.ai-workspace{display:grid;grid-template-columns:minmax(330px,.82fr) minmax(420px,1.18fr);gap:14px;align-items:start}
.ai-question-panel,.ai-result-panel,.ai-method-card{border:1px solid var(--line);border-radius:21px;background:#fff;box-shadow:0 8px 22px rgba(6,45,62,.06)}
.ai-question-panel,.ai-result-panel{padding:17px;min-height:470px}
.ai-panel-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:13px}
.ai-panel-heading h3{margin:3px 0 0;color:var(--navy);font-size:20px}
.ai-scope-badge{max-width:180px;padding:7px 10px;border-radius:999px;background:#eef3f6;color:#536773;font-size:9px;font-weight:900;text-align:center}
.ai-starter-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px}
.ai-starter-grid button{min-height:68px;padding:11px;border:1px solid #d8d0ec;border-radius:15px;background:linear-gradient(145deg,#fbfaff,#f1edfa);color:#293d5d;text-align:left;font:inherit;font-size:12px;font-weight:900;cursor:pointer;transition:.15s ease}
.ai-starter-grid button:hover{transform:translateY(-1px);border-color:#9477c1;box-shadow:0 6px 15px rgba(82,56,128,.12)}
.ai-starter-grid button:disabled{opacity:.55;cursor:wait;transform:none}
.ai-question-field{display:grid;gap:6px}.ai-question-field>span{font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.ai-question-field textarea{width:100%;min-height:112px;resize:vertical;border:1px solid #cad9de;border-radius:15px;padding:12px;color:var(--navy);font:inherit;line-height:1.45}
.ai-question-field textarea:focus{outline:3px solid rgba(121,83,174,.15);border-color:#7953ae}
.ai-actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}.ai-status{margin-top:11px;font-size:11px}.ai-status.busy{background:#fff7e7;border-color:#ead49e}.ai-status.error{background:#fff0f1;border-color:#efc5c9;color:#8b2933}
.ai-result-panel{background:linear-gradient(160deg,#fff,#faf9fd);overflow-wrap:anywhere}
.ai-empty-state{min-height:430px;display:grid;place-items:center;align-content:center;text-align:center;color:var(--muted)}
.ai-empty-icon{display:grid;place-items:center;width:65px;height:65px;border-radius:22px;background:#eee8f7;color:#6c4799;font-size:30px;margin-bottom:10px}.ai-empty-state h3{margin:0;color:var(--navy)}.ai-empty-state p{margin:7px 0 0}
.ai-answer-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding-bottom:13px;border-bottom:1px solid #e5e8ec}.ai-answer-head h3{margin:4px 0 0;color:var(--navy);font-size:22px}.ai-confidence{padding:7px 10px;border-radius:999px;background:#e8f5ef;color:#19704f;font-size:10px;font-weight:950;white-space:nowrap}
.ai-answer-text{font-size:13px;line-height:1.65;color:#344957;margin:15px 0;white-space:pre-line}
.ai-answer-block{margin-top:15px;padding-top:13px;border-top:1px solid #e7ecee}.ai-answer-block h4{margin:0 0 8px;color:var(--navy);font-size:13px}.ai-answer-block ul{margin:0;padding-left:19px}.ai-answer-block li{margin:6px 0;color:#475d69;font-size:12px;line-height:1.45}
.ai-chart{overflow:hidden}.ai-chart>p{margin:0 0 10px;color:var(--muted);font-size:10px}.ai-chart-scroll{max-width:100%;overflow-x:auto;padding-bottom:5px}.ai-line-chart{display:block;height:auto;min-height:180px;background:#f7f9fc;border-radius:13px}.ai-line-chart line{stroke:#cad6dd;stroke-width:1}.ai-line-chart polyline{fill:none;stroke:#6c4799;stroke-width:4;stroke-linejoin:round;stroke-linecap:round}.ai-line-chart circle{fill:#fff;stroke:#0b8f86;stroke-width:3}.ai-line-chart text{fill:#64767f;font-size:8px}.ai-bar-chart{display:flex;align-items:flex-end;gap:5px;min-height:190px;padding:12px 7px 0;border-radius:13px;background:#f7f9fc;overflow-x:auto}.ai-bar-item{display:grid;grid-template-rows:22px 150px 34px;align-items:end;min-width:31px;flex:1;text-align:center}.ai-bar-item strong{align-self:center;color:#425866;font-size:8px}.ai-bar-item span{display:block;width:72%;max-width:40px;margin:auto;border-radius:7px 7px 2px 2px;background:linear-gradient(180deg,#7953ae,#0b8f86)}.ai-bar-item small{align-self:start;padding-top:4px;color:#64767f;font-size:7px;line-height:1.15;overflow:hidden}
.ai-answer-meta{margin-top:15px;padding:9px 11px;border-radius:12px;background:#f0f3f7;color:#65747d;font-size:9px;font-weight:800}
.ai-method-card{margin-top:14px;padding:17px}.ai-method-card h3{margin:0 0 11px;color:var(--navy)}.ai-method-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.ai-method-grid div{padding:12px;border-radius:14px;background:#f5f6fa}.ai-method-grid strong,.ai-method-grid span{display:block}.ai-method-grid strong{font-size:12px;color:var(--navy);margin-bottom:4px}.ai-method-grid span{font-size:10px;line-height:1.4;color:var(--muted)}
@media(max-width:980px){.ai-workspace{grid-template-columns:1fr}.ai-question-panel,.ai-result-panel{min-height:0}.ai-empty-state{min-height:240px}.ai-method-grid{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.ai-hero{display:block;padding:19px}.ai-readonly-mark{margin-top:14px;min-width:0;width:100%}.ai-privacy-strip{display:block}.ai-privacy-strip strong,.ai-privacy-strip span{display:block}.ai-privacy-strip span{margin-top:4px}.ai-starter-grid{grid-template-columns:1fr}.ai-method-grid{grid-template-columns:1fr}.ai-panel-heading{display:block}.ai-scope-badge{display:inline-block;margin-top:8px;max-width:none}}


/* Historical Migration Centre v3.1.0 */
.migration-tab{font-weight:950}
.migration-hero{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:22px;border-radius:24px;color:#fff;background:radial-gradient(circle at 90% -20%,rgba(235,170,47,.48),transparent 42%),linear-gradient(135deg,#092e47,#0a7180 75%,#138d74);box-shadow:0 16px 34px rgba(7,55,74,.17)}
.migration-eyebrow{font-size:10px;font-weight:950;letter-spacing:.13em;text-transform:uppercase;color:#91e3d6}
.migration-hero h3{margin:5px 0 7px;font-size:clamp(24px,4vw,34px)}
.migration-hero p{margin:0;max-width:760px;color:#dceff0;line-height:1.45}
.migration-lock{flex:none;text-align:center;padding:14px 17px;border:1px solid rgba(255,255,255,.22);border-radius:17px;background:rgba(255,255,255,.08);font-size:10px;letter-spacing:.1em;font-weight:900}
.migration-lock strong{display:block;font-size:18px;margin-top:3px;color:#ffd576}
.migration-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0}
.migration-summary-grid article{padding:14px;border:1px solid var(--line);border-radius:17px;background:#fff}
.migration-summary-grid small{display:block;color:var(--muted);font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.06em}
.migration-summary-grid strong{display:block;margin:7px 0 4px;color:var(--navy);font-size:27px}
.migration-summary-grid span{font-size:10px;color:var(--muted)}
.migration-panel,.migration-method-card{margin-top:12px;padding:16px;border:1px solid var(--line);border-radius:19px;background:#fff;box-shadow:0 7px 19px rgba(7,55,74,.05)}
.migration-panel-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.migration-panel-head span{display:block;color:#0c8d80;font-size:9px;font-weight:950;text-transform:uppercase;letter-spacing:.08em}
.migration-panel-head h3{margin:3px 0;color:var(--navy)}
.migration-panel>p{color:var(--muted);font-size:12px;line-height:1.45}
.migration-badge{border-radius:999px;padding:6px 9px;font-size:9px;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}
.migration-badge.pending{background:#edf1f3;color:#667982}.migration-badge.ready{background:#ddf4e8;color:#14764f}.migration-badge.warn{background:#fff0d7;color:#95570e}.migration-badge.error{background:#ffe1e3;color:#a42b35}
.migration-source-note{padding:10px 12px;border-radius:13px;background:#eef7f7;color:#426774;font-size:11px;line-height:1.4}
.migration-progress{height:12px;margin:13px 0 6px;border-radius:999px;background:#e4ecee;overflow:hidden}
.migration-progress>div{width:0;height:100%;border-radius:999px;background:linear-gradient(90deg,#0b8091,#29b69d);transition:width .3s ease}
.migration-progress-text{font-size:11px;color:var(--muted);min-height:18px}
.migration-validation-list{display:grid;gap:7px;margin:12px 0;padding:12px;border-radius:13px;background:#f7fafb;color:#526a76;font-size:11px}
.migration-validation-list .ok{color:#14764f;font-weight:850}.migration-validation-list .bad{color:#a42b35;font-weight:850}.migration-validation-list .warn{color:#95570e;font-weight:850}
.migration-final-panel{background:linear-gradient(145deg,#f5fbf8,#f8fbfc)}
.migration-confirm-row{display:flex;gap:9px;align-items:flex-start;margin:12px 0;padding:11px;border-radius:13px;background:#fff7e8;color:#705423;font-size:11px;font-weight:800}
.migration-result{margin-top:10px;font-size:11px;color:var(--muted);line-height:1.45;white-space:pre-line}
.migration-method-card{background:#f7fafb}
.migration-method-card h3{margin:0 0 8px;color:var(--navy)}
.migration-method-card ul{margin:0;padding-left:19px;color:var(--muted);font-size:11px;line-height:1.55}
@media(max-width:720px){.migration-hero{display:block}.migration-lock{margin-top:14px}.migration-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ============================================================
   FishCap v3.2.1 — Golden Ratio Preview
   Visual-only layout layer. No data, schema or workflow changes.
   Major desktop compositions use approximately 61.8% / 38.2%.
   ============================================================ */
:root{
  --phi:1.618;
  --space-1:8px;
  --space-2:13px;
  --space-3:21px;
  --space-4:34px;
  --space-5:55px;
  --radius-small:13px;
  --radius-medium:21px;
  --radius-large:34px;
}

body{
  background:
    radial-gradient(circle at 8% 0%,rgba(21,158,154,.07),transparent 30%),
    linear-gradient(180deg,#eef5f6 0,#f7f9fa 32%,#eef3f5 100%);
}
.app{background:transparent}
.shell{max-width:1440px;padding-top:21px}
.topbar{padding:13px 21px}
.brand{flex:1.618 1 0}
.top-actions{flex:1 1 auto;justify-content:flex-end}
.brand-logo{border-radius:13px;box-shadow:0 5px 13px rgba(0,0,0,.18)}
.brand small{letter-spacing:.06em;color:#bfe9e7;opacity:1}
.panel,.stat,.home-conditions-card,.research-panel,.research-controls-card{border-color:rgba(14,70,91,.11)}
.btn{transition:transform .16s ease,box-shadow .16s ease,filter .16s ease}
.btn:hover{transform:translateY(-1px);filter:saturate(1.04)}
.btn:active{transform:translateY(0)}

/* Login composition: 61.8% identity / 38.2% access */
.login-card{grid-template-columns:minmax(0,1.618fr) minmax(320px,1fr);border-radius:34px}
.login-art{padding:55px 34px}
.login-form{padding:34px}

/* Home hierarchy */
.hero{border-radius:34px;padding:34px;background:
  radial-gradient(circle at 105% -10%,rgba(89,226,199,.28),transparent 38%),
  linear-gradient(145deg,#082f48 0%,#0a5d72 62%,#0d827e 100%)}
.hero-grid{grid-template-columns:minmax(0,1.618fr) minmax(270px,1fr);gap:21px}
.hero h1{max-width:12ch;letter-spacing:-.035em}
.session-card{border-radius:21px;padding:21px;box-shadow:0 13px 34px rgba(2,25,39,.22)}
.session-card .button-row{gap:8px}
.session-card .button-row .btn{flex:1 1 128px}
.session-card .button-row #heroAddCatchBtn{flex-basis:100%;order:-1;padding:14px 18px;font-size:16px}
#sessionCard .quick-target-controls{background:#eef7f9;border-color:#d4e8ed;color:var(--navy)}
#sessionCard .quick-target-status{color:#4d6673}

.home-conditions-card{border-radius:34px;padding:21px}
.condition-module{border-radius:21px;padding:21px}
.stats-grid{gap:13px;margin-top:21px}
.stat{border-radius:21px;padding:21px;min-width:0}
.stat strong{font-size:clamp(24px,2.2vw,34px);letter-spacing:-.035em}
#homeView .stat:first-child{background:linear-gradient(135deg,#0a6077,#0b887f);color:#fff}
#homeView .stat:first-child strong,#homeView .stat:first-child small{color:#fff}
#homeView .stat:first-child small{opacity:.82}
#homeView .stat:nth-child(2){background:linear-gradient(145deg,#ffffff,#eef8f7);border:1px solid #d1e8e3}
.layout{grid-template-columns:minmax(0,1.618fr) minmax(330px,1fr);gap:21px;margin-top:21px}
.layout>.panel{border-radius:21px;padding:21px}
.layout>aside.panel{align-self:start}
#addCatchBtn,#allAddCatchBtn{padding-left:21px;padding-right:21px}

/* Catch cards: image / scientific record / action */
.catch-list{gap:13px}
.catch-card{grid-template-columns:89px minmax(0,1.618fr) auto;gap:13px;padding:13px;border-radius:21px;background:linear-gradient(145deg,#fff,#fbfdfd)}
.catch-photo{width:89px;height:89px;border-radius:16px}
.catch-card>.btn{min-width:112px}
.catch-title{font-size:18px}

/* Data filters use one dominant search field and quieter secondary controls */
.toolbar input:first-child{flex:1.618 1 260px}
.toolbar select{flex:1 1 150px}
.data-filter-bar{padding:13px;border-radius:21px;background:#f1f6f7}

/* Fast catch entry: 61.8% required capture / 38.2% status and optional detail */
@media(min-width:980px){
  .quick-catch-modal{width:min(1180px,96vw);max-width:none}
  .quick-catch-card{
    width:auto;max-width:none;padding:21px 21px 0;overflow:auto;
    display:grid;grid-template-columns:minmax(0,1.618fr) minmax(320px,1fr);
    column-gap:21px;align-items:start
  }
  .quick-catch-card>.modal-head{grid-column:1/-1;grid-row:1}
  .quick-catch-card>#catchTestBanner{grid-column:1/-1;grid-row:2}
  .quick-catch-card>#catchTargetBanner{grid-column:1/-1;grid-row:3;margin-bottom:13px}
  .quick-catch-card>.quick-catch-grid{grid-column:1;grid-row:4 / span 4}
  .quick-catch-card>.compact-gps-panel{grid-column:2;grid-row:4;margin-top:0}
  .quick-catch-card>#catchGpsDetails{grid-column:2;grid-row:5}
  .quick-catch-card>#catchOptionalDetails{grid-column:2;grid-row:6}
  .quick-catch-card>#adminEnvironmentDetails{grid-column:2;grid-row:7}
  .quick-catch-card>#catchFormMessage{grid-column:1;grid-row:8}
  .quick-catch-card>.sticky-save-row{grid-column:1/-1;grid-row:9;margin:21px -21px 0;padding:13px 21px}
  .quick-catch-grid{grid-template-columns:minmax(0,1.618fr) minmax(180px,1fr);gap:13px}
  .compact-gps-panel{display:grid;grid-template-columns:1fr;align-content:start;padding:21px;border-radius:21px}
  .compact-gps-panel .compact-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .catch-details{border-radius:16px;margin-top:13px}
}

/* Admin report controls: 61.8% actions / 38.2% filters, table stays full width */
@media(min-width:1180px){
  #adminReports{display:grid;grid-template-columns:minmax(0,1.618fr) minmax(360px,1fr);gap:13px 21px;align-items:start}
  #adminReports>.admin-grid{grid-column:1/-1;margin:0 0 8px}
  #adminReports>.toolbar{grid-column:1;margin:0;padding:13px;border:1px solid var(--line);border-radius:21px;background:#fbfdfd}
  #adminReports>.data-filter-bar{grid-column:2;margin:0;display:grid;grid-template-columns:1fr 1fr;align-items:end}
  #adminReports>.data-filter-bar .data-filter-count{grid-column:1/-1;margin-left:0}
  #adminReports>#effortSummary{grid-column:1/-1}
  #adminReports>.table-wrap{grid-column:1/-1}
  #adminReports>.toolbar #adminSearch{flex-basis:100%}
}
.admin-grid{grid-template-columns:minmax(0,1.618fr) repeat(4,minmax(0,1fr))}
.admin-grid .kpi:first-child{background:linear-gradient(135deg,#075e76,#0c8a80)}

/* Research command centre: map/story 61.8%, interpretation 38.2% */
@media(min-width:1100px){
  #adminResearch{display:grid;grid-template-columns:minmax(0,1.618fr) minmax(330px,1fr);gap:21px;align-items:start}
  #adminResearch>.research-hero,
  #adminResearch>.research-controls-card,
  #adminResearch>.research-kpi-grid,
  #adminResearch>.research-chart-grid,
  #adminResearch>.export-panel{grid-column:1/-1;margin-top:0;margin-bottom:0}
  #adminResearch>.study-replay-panel{grid-column:1;margin-top:0;height:100%}
  #adminResearch>.study-replay-panel + .research-panel{grid-column:2;margin-top:0;height:100%}
  #adminResearch>.study-replay-panel + .research-panel .research-insight-grid{grid-template-columns:1fr}
  .research-kpi-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1.618fr) repeat(3,minmax(0,1fr));gap:13px}
  .research-chart-grid{grid-template-columns:minmax(0,1.618fr) minmax(330px,1fr);gap:21px}
  .research-chart-grid>.research-panel{margin-top:0}
  .research-chart-grid>.research-panel:nth-child(1){grid-column:1;grid-row:1}
  .research-chart-grid>.research-panel:nth-child(2){grid-column:1;grid-row:2}
  .research-chart-grid>.research-panel:nth-child(3){grid-column:2;grid-row:1}
  .research-chart-grid>.research-panel:nth-child(4){grid-column:2;grid-row:2}
}
.research-hero{border-radius:34px;padding:34px}
.research-controls-card,.research-kpi,.research-panel{border-radius:21px}
.research-kpi.highlight{box-shadow:0 13px 34px rgba(11,117,119,.22)}
.research-replay-map{min-height:420px}

/* Desktop 61.8 / 38.2 home composition */
@media(min-width:1180px){
  #homeView{display:grid;grid-template-columns:minmax(0,1.618fr) minmax(360px,1fr);gap:21px;align-items:stretch}
  #homeView>.hero{grid-column:1;margin:0;min-height:100%;display:flex}
  #homeView>.hero>.hero-grid{width:100%}
  #homeView>.home-conditions-card{grid-column:2;margin:0;height:100%}
  #homeView>.home-conditions-card .home-conditions-grid{grid-template-columns:1fr}
  #homeView>.stats-grid,#homeView>.layout{grid-column:1/-1;width:100%}
  #homeView>.stats-grid{grid-template-columns:minmax(0,1.618fr) repeat(5,minmax(0,1fr))}
  .layout>aside.panel{position:sticky;top:89px}
}

/* Mid-size screens keep the proportions without squeezing field controls */
@media(min-width:951px) and (max-width:1179px){
  .layout{grid-template-columns:minmax(0,1.618fr) minmax(300px,1fr)}
  .stats-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .admin-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}

/* Mobile: preserve a clear vertical 38% action / 62% information flow */
@media(max-width:979px){
  .login-card{grid-template-columns:1fr}
  .login-art{padding:34px 21px}
}
@media(max-width:680px){
  .shell{padding:13px 11px 89px}
  .hero{padding:21px;border-radius:21px}
  .hero-grid{grid-template-columns:1fr;gap:13px}
  .hero h1{font-size:34px;max-width:none}
  .session-card{padding:13px}
  .home-conditions-card{padding:13px;border-radius:21px}
  .condition-module{padding:13px;border-radius:16px}
  .stats-grid{grid-template-columns:1.618fr 1fr;gap:8px;margin-top:13px}
  .stat{padding:13px;border-radius:16px}
  .layout{margin-top:13px}
  .layout>.panel{padding:13px}
  .catch-card{grid-template-columns:62px minmax(0,1fr);gap:13px}
  .catch-photo{width:62px;height:62px}
  .catch-card>.btn{grid-column:1/-1;width:100%}
  .bottom-nav-inner{grid-template-columns:repeat(5,1fr)}
  .bottom-link{min-height:55px}
  .research-hero{padding:21px;border-radius:21px}
}

/* v3.2.1 preview refinements found during responsive visual testing */
#sessionCard .quick-target-row{grid-template-columns:minmax(78px,1fr) auto}
#sessionCard .quick-target-row .split{grid-column:1/-1}

@media(min-width:900px){
  #homeView .layout .data-filter-bar{
    display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:end
  }
  #homeView .layout .data-filter-bar select,
  #homeView .layout .data-filter-bar input{width:100%;min-width:0}
  #homeView .layout .data-filter-bar .data-filter-count{grid-column:1/-1;margin-left:0}
}

@media(min-width:1180px){
  #homeView.view.active{display:grid;grid-template-columns:minmax(0,1.618fr) minmax(360px,1fr);gap:21px;align-items:stretch}
  #homeView:not(.active){display:none}
}

@media(max-width:950px){
  .hero-grid,.layout{grid-template-columns:1fr}
  .layout>aside.panel{position:static}
  .admin-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media(max-width:680px){
  #sessionCard .quick-target-row{grid-template-columns:1fr auto}
  #homeView .layout .data-filter-bar{display:grid;grid-template-columns:1fr 1fr}
  #homeView .layout .data-filter-bar>select{grid-column:1/-1}
  #homeView .layout .data-filter-bar .data-filter-count{grid-column:1/-1;margin-left:0}
}

/* v3.2.2 admin recovery */
.admin-session-head{display:flex;justify-content:space-between;gap:13px;align-items:flex-start;flex-wrap:wrap}
.admin-session-table{min-width:1120px}
.admin-session-table td{vertical-align:top}
.admin-session-actions{display:flex;gap:7px;flex-wrap:wrap;min-width:210px}
.admin-session-effort{display:grid;gap:4px;min-width:180px}
.admin-session-effort small{display:block;color:var(--muted)}
.admin-recovery-banner{display:grid;gap:8px;margin:0 0 13px;padding:13px;border:1px solid #b77a00;border-radius:16px;background:#fff7df;color:#5f4300}
.admin-recovery-banner strong{font-size:14px;letter-spacing:.04em}
.admin-recovery-banner label{font-weight:700;margin-top:3px}
.admin-recovery-banner textarea{min-height:74px;background:#fff}
.badge.recovered{background:#fff0c2;color:#725000;border:1px solid #dfbd58}

@media(max-width:680px){
  .admin-session-head>.btn{width:100%}
  #adminSessionDialog .button-row{display:grid;grid-template-columns:1fr}
}


/* FishCap v3.2.3 explicit camera and gallery photo picker */
.catch-photo-actions{margin-top:0}
.catch-photo-actions .btn{flex:1 1 170px}
.catch-photo-status{
  margin-top:9px;
  border:1px solid var(--border,#d8e2e8);
  border-radius:11px;
  padding:8px 10px;
  background:var(--surface-soft,#f7fafb);
  font-size:13px;
  font-weight:750;
  line-height:1.35;
}
.catch-photo-status.good{background:#e9fbf4;border-color:#b4e9d5;color:#155e45}
.catch-photo-status.error{background:#fff0f1;border-color:#ffb8c1;color:#8b2735}
.catch-photo-preview{
  display:block;
  width:min(100%,420px);
  max-height:320px;
  object-fit:contain;
  margin-top:10px;
  border-radius:13px;
  border:1px solid var(--border,#d8e2e8);
  background:#eef3f5;
}


/* v3.2.9 bounded large-dataset table navigation */
.table-pager{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:12px;
  padding:12px 8px 18px;
  font-weight:800;
  color:var(--muted);
}
.table-pager span{min-width:150px;text-align:center}
@media(max-width:640px){
  .table-pager{position:sticky;bottom:0;background:rgba(247,251,252,.96);z-index:4}
}


/* v3.2.10 historical evidence / validation semantics */
.map-evidence-note{
  line-height:1.45;
}
.map-site-summary{
  display:flex;
  flex-wrap:wrap;
  gap:7px;
  margin:9px 0 7px;
}
.map-site-chip{
  display:inline-flex;
  gap:6px;
  align-items:center;
  padding:6px 9px;
  border-radius:999px;
  background:rgba(255,255,255,.76);
  border:1px solid rgba(15,81,100,.14);
  font-size:.82rem;
}
.badge.historical{
  white-space:normal;
}
