:root{--bg:#0f1512;--panel:#16201b;--panel-2:#1c2822;--border:#2a3830;--text:#e7efe9;--text-dim:#9db3a6;--accent:#5fd18c;--accent-dim:#2f6b49;--danger:#e0665f;--radius:10px}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.5}a{color:var(--accent);text-decoration:none}button{font:inherit;cursor:pointer}.topbar{background:var(--panel);border-bottom:1px solid var(--border);align-items:center;gap:1rem;padding:.6rem 1rem;display:flex}.topbar .brand{letter-spacing:.02em;color:var(--text);font-weight:700}.topbar nav{gap:.75rem;margin-left:auto;font-size:.9rem;display:flex}.topbar nav a,.topbar nav button{color:var(--text-dim);font:inherit;background:0 0;border:none;border-radius:6px;padding:.3rem .6rem;text-decoration:none}.topbar nav a:hover,.topbar nav a.active,.topbar nav button:hover{color:var(--text);background:var(--panel-2)}main.page{max-width:640px;margin:2rem auto;padding:0 1rem 3rem}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:1.25rem;padding:1.25rem 1.5rem}.card h2{margin-top:0;font-size:1.05rem}.field{margin-bottom:.9rem}.field label{color:var(--text-dim);margin-bottom:.3rem;font-size:.85rem;display:block}.field input,.field select{background:var(--panel-2);border:1px solid var(--border);width:100%;color:var(--text);font-size:.95rem;font:inherit;border-radius:6px;padding:.5rem .6rem}.field input:focus,.field select:focus{border-color:var(--accent-dim);outline:none}.actions{flex-wrap:wrap;gap:.6rem;margin-top:1rem;display:flex}.actions button,.btn{border:1px solid var(--border);background:var(--panel-2);color:var(--text);border-radius:8px;padding:.5rem .9rem}.actions button:hover,.btn:hover{filter:brightness(1.15)}.actions button:disabled,.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--accent-dim);border-color:var(--accent-dim);color:#fff}.btn.danger{border-color:var(--danger);color:var(--danger);background:0 0}.status-line{min-height:1.2em;margin-top:.6rem;font-size:.88rem}.status-line.ok{color:var(--accent)}.status-line.err{color:var(--danger)}.status-line.pending{color:var(--text-dim)}.badge{border:1px solid var(--border);color:var(--text-dim);border-radius:999px;margin-left:.4rem;padding:.15rem .5rem;font-size:.75rem;display:inline-block}.badge.on{color:var(--accent);border-color:var(--accent-dim)}.banner{color:#f0d78a;text-align:center;background:#3a2f14;border:1px solid #6b5420;padding:.6rem 1rem;font-size:.9rem}.banner a{color:#fff;text-decoration:underline}.auth-wrap{justify-content:center;align-items:center;min-height:100%;padding:1rem;display:flex}.auth-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:360px;padding:2rem 1.75rem;box-shadow:0 12px 40px #0006}.auth-card .brand{text-align:center;color:var(--text);margin-bottom:1.5rem;font-size:1.4rem;font-weight:700;display:block}.auth-card .btn.primary{width:100%;margin-top:.4rem;padding:.65rem;font-weight:600}.auth-links{justify-content:space-between;margin-top:1.1rem;font-size:.82rem;display:flex}.auth-links a{color:var(--text-dim)}.auth-links a:hover{color:var(--text)}.maplibregl-popup-content{border:1px solid var(--border);background:var(--panel)!important;color:var(--text)!important}.maplibregl-popup-tip{border-top-color:var(--panel)!important;border-bottom-color:var(--panel)!important}.popup-title{margin-bottom:.3rem;font-weight:700}.popup-meta{color:var(--text-dim);font-size:.82rem;line-height:1.5}.popup-meta a{color:var(--accent)}
