*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{--primary:#2563eb;--primary-dark:#1d4ed8;--danger:#dc2626;--success:#16a34a;--warning:#f59e0b;--bg:#fff;--text:#1e293b;--text-light:#64748b;--border:#e2e8f0;--shadow:0 4px 12px rgba(0,0,0,.15);--radius:12px}
body{font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;color:var(--text);overflow:hidden;height:100dvh;width:100vw;display:flex;flex-direction:column}
#app-header{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;background:var(--bg);border-bottom:1px solid var(--border);z-index:1000;flex-shrink:0}
#app-header h1{font-size:1.1rem;font-weight:700}
.header-right{display:flex;align-items:center;gap:8px}
.badge{background:var(--primary);color:#fff;padding:4px 10px;border-radius:20px;font-size:.75rem;font-weight:600}
.icon-btn{background:none;border:1px solid var(--border);border-radius:8px;padding:6px 10px;font-size:1.1rem;cursor:pointer}
.icon-btn:hover{background:#f1f5f9}
#map{flex:1;width:100%;z-index:1}
.fab{position:fixed;bottom:24px;right:16px;z-index:1000;background:var(--primary);color:#fff;border:none;border-radius:28px;padding:14px 20px;font-size:1rem;font-weight:600;cursor:pointer;box-shadow:var(--shadow);display:flex;align-items:center;gap:8px}
.fab:hover{background:var(--primary-dark);transform:scale(1.05)}
.fab-icon{font-size:1.3rem;line-height:1}
.info-banner{position:fixed;bottom:80px;left:16px;right:16px;z-index:999;background:#1e293b;color:#fff;padding:12px 16px;border-radius:var(--radius);font-size:.85rem;display:flex;align-items:center;justify-content:space-between;gap:12px;box-shadow:var(--shadow)}
.info-banner.hidden{opacity:0;pointer-events:none}
.banner-close{background:none;border:none;color:#fff;font-size:1.1rem;cursor:pointer}
.modal-overlay{position:fixed;inset:0;z-index:2000;background:rgba(0,0,0,.5);display:flex;align-items:flex-end;justify-content:center}
.modal-overlay.hidden{opacity:0;pointer-events:none}
.modal{background:var(--bg);border-radius:20px 20px 0 0;width:100%;max-width:500px;max-height:85dvh;overflow-y:auto;padding:20px}
.modal-overlay.hidden .modal{transform:translateY(100%)}
.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.modal-header h2{font-size:1.15rem}
.modal-close{background:#f1f5f9;border:none;border-radius:50%;width:32px;height:32px;font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center}
.form-group{margin-bottom:16px}
.form-group label{display:block;font-weight:600;font-size:.85rem;margin-bottom:6px}
.required{color:var(--danger)}
.help-text{font-size:.78rem;color:var(--text-light);margin-bottom:6px}
.coord-display{background:#f8fafc;padding:8px 12px;border-radius:8px;font-family:monospace;font-size:.85rem;color:var(--text-light)}
input[type="text"],input[type="number"],textarea,select{width:100%;padding:10px 14px;border:1.5px solid var(--border);border-radius:10px;font-size:.95rem;font-family:inherit}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--primary)}
textarea{resize:vertical}
.captcha-group{background:#f0f7ff;padding:14px;border-radius:var(--radius);border:1.5px solid #bfdbfe}
.link-btn{background:none;border:none;color:var(--primary);font-size:.8rem;cursor:pointer;margin-top:6px;text-decoration:underline}
.hp-field{position:absolute;left:-9999px;top:-9999px;width:1px;height:1px;overflow:hidden;opacity:0}
.form-error{background:#fef2f2;color:var(--danger);padding:10px 14px;border-radius:8px;font-size:.85rem;margin-bottom:12px;border:1px solid #fecaca}
.form-success{background:#f0fdf4;color:var(--success);padding:10px 14px;border-radius:8px;font-size:.85rem;margin-bottom:12px;border:1px solid #bbf7d0}
.hidden{display:none!important}
.btn-primary{width:100%;padding:14px;background:var(--primary);color:#fff;border:none;border-radius:12px;font-size:1rem;font-weight:600;cursor:pointer}
.btn-primary:hover{background:var(--primary-dark)}
.btn-primary:disabled{background:#94a3b8;cursor:not-allowed}
.cam-popup{font-family:'Inter',sans-serif;min-width:200px}
.cam-popup h3{font-size:.95rem;margin-bottom:4px}
.cam-popup .cam-meta{font-size:.78rem;color:var(--text-light);margin-bottom:8px}
.cam-popup .cam-desc{font-size:.83rem;margin-bottom:10px;color:#475569}
.cam-trust{display:inline-block;padding:2px 8px;border-radius:10px;font-size:.72rem;font-weight:600;margin-bottom:8px}
.cam-trust.confirmed{background:#dcfce7;color:#166534}
.cam-trust.unconfirmed{background:#fef3c7;color:#92400e}
.popup-actions{display:flex;gap:8px;margin-top:8px}
.popup-actions button{flex:1;padding:6px;border:1.5px solid var(--border);border-radius:8px;background:#fff;cursor:pointer;font-size:.78rem;font-weight:500}
.popup-actions .btn-confirm{color:var(--success);border-color:#bbf7d0}
.popup-actions .btn-report{color:var(--danger);border-color:#fecaca}
.cam-expires{font-size:.72rem;color:#94a3b8;margin-top:6px}
.spinner{display:inline-block;width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-radius:50%;border-top-color:#fff;animation:spin .6s linear infinite;margin-right:6px}
@keyframes spin{to{transform:rotate(360deg)}}
@media(min-width:600px){.modal{border-radius:20px;margin-bottom:20px;max-height:80vh}.modal-overlay{align-items:center}}
.leaflet-popup-content-wrapper{border-radius:12px!important}
.leaflet-popup-content{margin:12px 14px!important}
.placement-marker{background:none;border:none}
.placement-pin{font-size:2rem;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}

/* ─── Location Toggle ─────────────────────────────────── */
.location-toggle{display:flex;gap:4px;margin-bottom:12px;background:#f1f5f9;border-radius:10px;padding:4px}
.toggle-btn{flex:1;padding:8px 12px;border:none;border-radius:8px;background:transparent;font-size:.82rem;font-weight:500;cursor:pointer;color:var(--text-light);transition:all .2s}
.toggle-btn.active{background:white;color:var(--text);box-shadow:0 1px 3px rgba(0,0,0,.1)}

/* ─── Coordinate Inputs ───────────────────────────────── */
.coord-inputs{display:flex;gap:10px;margin-bottom:8px}
.coord-field{flex:1}
.coord-field label{display:block;font-size:.75rem;font-weight:500;margin-bottom:4px;color:var(--text-light)}
.coord-field input{width:100%;padding:8px 10px;border:1.5px solid var(--border);border-radius:8px;font-size:.9rem}
.btn-secondary{width:100%;padding:10px;background:#f1f5f9;color:var(--text);border:1.5px solid var(--border);border-radius:10px;font-size:.9rem;font-weight:500;cursor:pointer;transition:background .2s}
.btn-secondary:hover{background:#e2e8f0}