:root{--bg-primary: #0a0f0d;--bg-secondary: #111916;--bg-card: #161f1b;--bg-elevated: #1c2824;--bg-input: #0e1512;--surface-hover: #1f2d27;--surface-active: #253530;--accent: #2dd4a0;--accent-dim: #1a8f6b;--accent-glow: rgba(45, 212, 160, .15);--text-primary: #e8ede9;--text-secondary: #8fa498;--text-tertiary: #5a7568;--text-accent: #2dd4a0;--border: #1c2824;--border-hover: #2a3d34;--border-accent: rgba(45, 212, 160, .3);--danger: #f87171;--warning: #fbbf24;--success: #2dd4a0;--info: #60a5fa;--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 48px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 20px;--radius-xl: 28px;--radius-full: 9999px;--ease: cubic-bezier(.4, 0, .2, 1);--nav-height: 64px;--header-height: 56px;--max-width: 480px;--safe-bottom: env(safe-area-inset-bottom, 0px)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body{font-family:var(--font);background:var(--bg-primary);color:var(--text-primary);line-height:1.5;min-height:100dvh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{max-width:var(--max-width);margin:0 auto;min-height:100dvh;position:relative}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}img{max-width:100%;display:block}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:12px 20px;border:none;border-radius:var(--radius-md);font:inherit;font-size:.75rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;transition:all .2s var(--ease);line-height:1;white-space:normal;min-width:0;overflow-wrap:anywhere}.btn:active{transform:scale(.96)}.btn:disabled{opacity:.5;pointer-events:none}.btn-primary{background:var(--accent);color:var(--bg-primary)}.btn-primary:hover{background:#38e8b0}.btn-secondary{background:var(--bg-elevated);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover{border-color:var(--border-hover);background:var(--surface-hover)}.btn-dark{background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border)}.btn-danger{background:#f871711a;color:var(--danger);border:1px solid rgba(248,113,113,.2)}.btn-ghost{background:transparent;color:var(--text-secondary);padding:8px 12px}.btn-ghost:hover{color:var(--text-primary);background:var(--surface-hover)}.btn-full{width:100%}.btn-lg{padding:16px 24px;font-size:.8125rem;border-radius:var(--radius-lg)}.input,.textarea{width:100%;padding:14px 16px;background:var(--bg-input);border:1.5px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);font:inherit;font-size:.875rem;font-weight:500;transition:border-color .2s var(--ease)}.input:focus,.textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.input::placeholder,.textarea::placeholder{color:var(--text-tertiary)}.textarea{min-height:100px;resize:vertical}.label{display:block;font-size:.625rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:var(--space-sm)}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-lg);transition:border-color .2s var(--ease)}.card:hover{border-color:var(--border-hover)}.card-sm{padding:var(--space-md);border-radius:var(--radius-md)}.mode-switch{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:var(--space-lg);padding:4px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-secondary)}.mode-switch button{min-height:40px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--text-tertiary);font:inherit;font-size:.625rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer}.mode-switch button.active{background:var(--bg-card);border-color:var(--border);color:var(--accent)}.trust-icon{width:40px;height:40px;border-radius:12px;background:var(--accent-glow);color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}.app-header{position:sticky;top:0;z-index:100;height:var(--header-height);display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-md);background:#0a0f0dd9;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--border)}.app-header h1{font-size:1rem;font-weight:900;letter-spacing:-.02em;color:var(--text-primary)}.app-header .subtitle{font-size:.5625rem;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--text-tertiary)}.bottom-nav{position:fixed;bottom:0;left:0;right:0;max-width:var(--max-width);margin:0 auto;height:calc(var(--nav-height) + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:#0a0f0deb;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-top:1px solid var(--border);display:flex;z-index:200}.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:none;border:none;cursor:pointer;color:var(--text-tertiary);transition:color .2s var(--ease);position:relative;font-family:var(--font)}.nav-item.active{color:var(--accent)}.nav-item.active:before{content:"";position:absolute;top:0;width:24px;height:2px;background:var(--accent);border-radius:0 0 4px 4px}.nav-item svg{width:20px;height:20px;stroke-width:2}.nav-item span{font-size:.5625rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.nav-center{color:var(--accent)}.nav-center-icon{width:44px;height:44px;border-radius:14px;background:linear-gradient(135deg,var(--accent) 0%,var(--accent-dim) 100%);display:flex;align-items:center;justify-content:center;color:var(--bg-primary);margin-top:-18px;box-shadow:0 4px 20px #2dd4a04d;transition:all .2s var(--ease)}.nav-center:active .nav-center-icon{transform:scale(.92)}.nav-center span{color:var(--accent)}.page{padding:var(--space-md);padding-bottom:calc(var(--nav-height) + var(--space-2xl));animation:fadeIn .4s var(--ease)}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:var(--radius-full);font-size:.5625rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.badge-accent{background:var(--accent-glow);color:var(--accent)}.badge-warning{background:#fbbf241a;color:var(--warning)}.badge-danger{background:#f871711a;color:var(--danger)}.badge-info{background:#60a5fa1a;color:var(--info)}.status-dot{width:6px;height:6px;border-radius:50%;display:inline-block}.status-dot.draft{background:var(--text-tertiary)}.status-dot.processed{background:var(--warning)}.status-dot.verified{background:var(--info)}.status-dot.public{background:var(--accent)}.spinner{width:20px;height:20px;border:2.5px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .6s linear infinite}.spinner-lg{width:40px;height:40px;border-width:3px}.data-table{width:100%;border-collapse:collapse;font-size:.8125rem}.data-table th,.data-table td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border)}.data-table th{font-size:.625rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--text-tertiary)}.data-table td{color:var(--text-secondary)}.data-table tr:hover td{color:var(--text-primary)}.leaflet-container{font-family:var(--font);background:var(--bg-secondary)}.leaflet-popup-content-wrapper{background:var(--bg-card)!important;color:var(--text-primary)!important;border-radius:var(--radius-lg)!important;border:1px solid var(--border)!important;box-shadow:0 20px 40px #0006!important;padding:4px!important}.leaflet-popup-content{margin:8px!important;color:var(--text-primary)!important}.leaflet-popup-tip{display:none!important}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:normal;min-width:0;overflow-wrap:anywhere}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.flex-center{display:flex;align-items:center;justify-content:center}.full-screen-loader{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);background:var(--bg-primary);z-index:999}.photo-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-md)}.photo-slot{aspect-ratio:1;border-radius:var(--radius-lg);overflow:hidden;border:2px dashed var(--border);display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:all .2s var(--ease);position:relative;background:var(--bg-secondary)}.photo-slot:hover{border-color:var(--border-hover)}.photo-slot.filled{border:1px solid var(--border)}.photo-slot.required{border-color:var(--accent-dim)}.photo-slot img{width:100%;height:100%;object-fit:cover}.photo-slot .slot-label{font-size:.5625rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary);text-align:center;padding:0 var(--space-sm)}.photo-slot .slot-number{position:absolute;bottom:8px;left:8px;width:20px;height:20px;border-radius:6px;background:#00000080;color:#fff;font-size:.625rem;font-weight:800;display:flex;align-items:center;justify-content:center}.photo-slot .remove-btn{position:absolute;top:6px;right:6px;width:24px;height:24px;border-radius:8px;background:#0009;color:var(--danger);border:none;cursor:pointer;font-size:.75rem;display:flex;align-items:center;justify-content:center}.toast{position:fixed;top:var(--space-md);left:50%;transform:translate(-50%);max-width:calc(var(--max-width) - 32px);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);padding:10px 16px;font-size:.75rem;font-weight:600;color:var(--text-primary);z-index:1000;animation:fadeIn .3s var(--ease)}.section-title{font-size:.625rem;font-weight:800;letter-spacing:.15em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:var(--space-md)}.page-title{font-size:1.5rem;font-weight:900;letter-spacing:-.03em;color:var(--text-primary);line-height:1.2}.page-subtitle{font-size:.8125rem;color:var(--text-secondary);font-weight:500;margin-top:4px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;padding:var(--space-lg);z-index:500;animation:fadeIn .3s var(--ease)}.modal{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--space-xl);width:100%;max-width:400px;max-height:90vh;overflow-y:auto}.stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-md)}.stat-item{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-md);text-align:center}.stat-value{font-size:1.5rem;font-weight:900;color:var(--text-primary)}.stat-label{font-size:.5625rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--text-tertiary);margin-top:2px}.map-container{position:absolute;top:0;right:0;bottom:0;left:0;top:var(--header-height);bottom:var(--nav-height)}.map-search{position:absolute;top:12px;left:12px;right:12px;z-index:1000}.map-search input{width:100%;padding:12px 16px;background:#0a0f0dd9;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--text-primary);font:inherit;font-size:.8125rem;font-weight:600}.map-search input::placeholder{color:var(--text-tertiary)}.map-search input:focus{outline:none;border-color:var(--accent)}.map-fab-bar{position:absolute;bottom:16px;right:12px;z-index:1000;display:flex;flex-direction:column;gap:var(--space-sm)}.fab{width:48px;height:48px;border-radius:var(--radius-md);border:1px solid var(--border);background:#0a0f0dd9;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);color:var(--text-primary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s var(--ease)}.fab:hover{border-color:var(--accent);color:var(--accent)}.fab:active{transform:scale(.92)}.fab-accent{background:var(--accent);color:var(--bg-primary);border-color:var(--accent)}.fab-accent:hover{background:#38e8b0}.wallet-hero{background:linear-gradient(135deg,var(--bg-card) 0%,var(--bg-elevated) 100%);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--space-xl);text-align:center;position:relative;overflow:hidden}.wallet-hero:before{content:"";position:absolute;top:-50%;right:-30%;width:200px;height:200px;background:var(--accent-glow);border-radius:50%;filter:blur(60px)}.wallet-balance{font-size:2.5rem;font-weight:900;color:var(--accent);position:relative}.wallet-label{font-size:.625rem;font-weight:800;letter-spacing:.15em;text-transform:uppercase;color:var(--text-tertiary);margin-top:4px}@media(min-width:481px){#root{border-left:1px solid var(--border);border-right:1px solid var(--border);box-shadow:0 0 80px #0000004d}}.page-stack{display:flex;flex-direction:column;gap:var(--space-lg)}.hero-panel{position:relative;overflow:hidden;padding:var(--space-xl);border-radius:var(--radius-xl);border:1px solid rgba(45,212,160,.18);background:radial-gradient(circle at top right,rgba(96,165,250,.2),transparent 42%),linear-gradient(135deg,#2dd4a029,#0a0f0deb)}.hero-panel:before{content:"";position:absolute;inset:auto -40px -70px auto;width:180px;height:180px;border-radius:50%;background:#2dd4a01f;filter:blur(8px)}.inline-points{display:flex;flex-wrap:wrap;gap:8px}.metrics-grid,.two-column-grid,.soft-card-grid{display:grid;gap:var(--space-md)}.metrics-grid,.two-column-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.soft-card-grid{grid-template-columns:1fr}.metric-card,.soft-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-md)}.metric-value{font-size:1.125rem;font-weight:900;color:var(--text-primary)}.metric-label{margin-top:4px;font-size:.5625rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--text-tertiary)}.state-panel{display:flex;flex-direction:column;gap:12px;padding:var(--space-lg);border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--bg-card)}.state-panel-compact{padding:var(--space-md)}.state-panel-default{border-color:var(--border)}.state-panel-info{border-color:#60a5fa40;background:#60a5fa14}.state-panel-success{border-color:#2dd4a03d;background:#2dd4a014}.state-panel-warning{border-color:#fbbf243d;background:#fbbf2414}.state-panel-danger{border-color:#f871713d;background:#f8717114}.state-panel-icon{width:44px;height:44px;border-radius:14px;display:inline-flex;align-items:center;justify-content:center;background:#ffffff0a}.state-panel-eyebrow{font-size:.5625rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:6px}.state-panel-title{font-size:1rem;font-weight:900;color:var(--text-primary)}.state-panel-description{margin-top:6px;font-size:.75rem;line-height:1.7;color:var(--text-secondary)}.state-panel-body,.state-panel-actions{display:flex;flex-direction:column;gap:12px}.state-panel-actions{flex-direction:row;flex-wrap:wrap}.point-list,.timeline-list{display:grid;gap:10px}.point-list{list-style:none}.point-list li,.timeline-item{padding:12px 14px;border-radius:var(--radius-md);border:1px solid var(--border);background:#ffffff05}.timeline-item-title{font-size:.75rem;font-weight:800;color:var(--text-primary)}.timeline-item-copy{margin-top:4px;font-size:.6875rem;line-height:1.7;color:var(--text-secondary)}.prompt-chip{padding:10px 12px;border-radius:10px;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-secondary);font:inherit;font-size:.6875rem;font-weight:700;line-height:1.5;text-align:left;cursor:pointer}.prompt-chip:hover{border-color:var(--border-hover);color:var(--text-primary)}@media(min-width:380px){.soft-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.public-map-notices .state-panel{background:var(--bg-card)}.capture-page{max-width:560px;margin:0 auto}.capture-heading{margin:4px 0 20px}.capture-heading h1,.capture-success h1{font-size:clamp(1.65rem,5vw,2rem);line-height:1.2;letter-spacing:-.04em;margin:6px 0 8px}.capture-heading h1:focus{outline:none}.capture-heading p,.capture-camera-card p,.capture-detail-card p{font-size:.875rem;line-height:1.5;color:var(--text-secondary)}.capture-heading .capture-step{font-size:.75rem;color:var(--accent);font-weight:700}.capture-page .btn{text-transform:none;letter-spacing:0;font-size:.9375rem;min-height:48px;line-height:1.25}.capture-page button:focus-visible,.capture-page summary:focus-visible{outline:3px solid var(--accent);outline-offset:4px}.capture-fields{border:0;padding:0;margin:0;min-width:0}.capture-camera-card{padding:24px 20px 20px;background:linear-gradient(150deg,#172b22,#111c17);border:1px solid #2b4739;border-radius:22px;text-align:center}.capture-viewfinder{width:108px;height:92px;border:1px solid #537362;border-radius:18px;display:grid;place-items:center;margin:0 auto 20px;color:var(--accent);background:#14291f}.capture-camera-card h2,.capture-photo-heading h2,.capture-detail-card h2,.capture-field-title{font-size:1rem;font-weight:700;line-height:1.4}.capture-camera-card p{margin:8px auto 20px;max-width:300px}.capture-camera-card .btn-primary{min-height:56px}.capture-photo-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:22px 0 12px}.capture-photo-heading span{color:var(--text-secondary);font-size:.8125rem}.capture-photo-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.capture-thumbnail{min-width:0;text-align:center}.capture-angle{width:100%;aspect-ratio:1;display:grid;place-items:center;background:var(--bg-secondary);border:1px dashed #537362;color:var(--text-secondary);border-radius:12px;cursor:pointer;position:relative;overflow:hidden;padding:0}.capture-angle.is-filled{border-style:solid;border-color:var(--accent)}.capture-angle img{width:100%;height:100%;object-fit:cover;position:absolute}.capture-check{position:absolute;right:4px;bottom:4px;background:var(--accent);color:var(--bg-primary);border-radius:50%;padding:3px;display:flex}.capture-angle-label{display:block;font-size:.75rem;line-height:1.4;margin-top:8px;color:var(--text-primary)}.capture-remove{min-height:44px;width:100%;background:none;border:0;color:var(--text-secondary);font:inherit;font-size:.6875rem;display:flex;align-items:center;justify-content:center;gap:2px;cursor:pointer}.capture-extras{border-top:1px solid var(--border);margin-top:20px}.capture-extras summary{padding:16px 0;font-size:.875rem;color:var(--text-secondary);cursor:pointer;min-height:48px}.capture-hint{color:var(--text-secondary);font-size:.75rem;line-height:1.5;margin-top:8px}.capture-details[hidden],.capture-page section[hidden]{display:none}.capture-details{display:grid;gap:16px}.capture-back{justify-self:start;padding-left:0}.capture-detail-card{border:1px solid var(--border);background:var(--bg-secondary);border-radius:16px;padding:18px}.capture-detail-card h2,.capture-field-title{display:block;margin-bottom:12px}.capture-detail-card p{margin-top:10px}.capture-detail-card .capture-coordinates{font-size:.75rem}.capture-unknown{margin-top:8px;padding-left:0;text-align:left}.capture-extra-fields{display:grid;gap:10px}.capture-extra-fields .label{margin:8px 0 0}.capture-save{margin-top:20px}.capture-error,.capture-notice{padding:12px;border:1px solid #864444;background:#2d1c1c;border-radius:12px;font-size:.875rem;line-height:1.5;margin-bottom:16px;color:#ffb9b9}.capture-notice{border-color:#536a5e;background:var(--bg-secondary);color:var(--text-primary)}.capture-success{margin-top:20px}.capture-success .btn+.btn{margin-top:12px}@media(max-width:374px){.capture-camera-card{padding:20px 16px 16px}.capture-photo-grid{gap:8px}}.capture-progress{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:24px 0 20px}.capture-progress>span{width:10px;height:10px;border-radius:50%;background:#3e5147}.capture-progress>span.complete{background:var(--accent)}.capture-progress p{flex-basis:100%;text-align:center;font-size:.8125rem;color:var(--text-secondary);margin-top:4px}.capture-page .capture-hint{text-align:center}.capture-summary{display:grid;gap:8px}.capture-summary p{display:flex;align-items:center;gap:8px;font-size:.875rem}.capture-summary svg{width:18px;height:18px;color:var(--accent)}.capture-details{gap:12px}.capture-details .capture-extras{margin-top:0}.capture-details .capture-extras summary{padding:12px 0}.capture-camera-card .capture-viewfinder{width:144px;height:132px;margin-bottom:16px}.capture-camera-card .capture-camera-caption{margin-bottom:24px}.capture-page .capture-field-title{font-size:.875rem}.capture-species-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}.capture-species-controls .capture-unknown{margin:0;padding:8px;font-size:.8125rem}.capture-confirmation .capture-heading{margin-bottom:12px}.capture-confirmation .capture-heading h1{font-size:1.5rem}.capture-confirmation .capture-details{gap:8px}.capture-confirmation .capture-detail-card{padding:14px}.capture-confirmation .capture-save{margin-top:12px}
