@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:wght@600;700&display=swap');
:root{--ink:#202b2b;--muted:#768181;--cream:#f7f6f1;--paper:#fff;--line:#e5e7e0;--coral:#e76f51;--sage:#7a9b8b;--shadow:0 18px 50px #26343412}*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--ink);font:14px 'DM Sans',sans-serif}button,input,textarea{font:inherit}button{cursor:pointer;border:0}.eyebrow{letter-spacing:.15em;font-size:10px;font-weight:700;color:var(--coral);margin:0 0 7px}.muted,small{color:var(--muted)}h1,h2{font-family:'Playfair Display',serif;margin:0;font-weight:700}h1{font-size:31px}h2{font-size:25px}#sidebar{width:280px;background:#fbfbf8;border-right:1px solid var(--line);position:fixed;inset:0 auto 0 0;padding:30px 22px;display:flex;flex-direction:column;z-index:10}.top{display:flex;align-items:center;gap:12px}.logo,.brand-mark{display:grid;place-items:center;background:var(--coral);color:#fff;border-radius:13px;width:40px;height:40px;font-size:21px}.trip{font-family:'Playfair Display';font-size:15px}.profile{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:28px 0;padding:17px 0;display:flex;align-items:center;gap:10px}.avatar{background:#e5b7a7;color:#853d2d;border-radius:50%;width:34px;height:34px;display:grid;place-items:center;font-weight:700}.profile small{display:block;font-size:11px;margin-top:2px}.logout{font-size:11px;color:var(--muted);background:none;margin-left:auto}.cities-head{display:flex;justify-content:space-between;color:#9a9f99;font-size:10px;font-weight:700;letter-spacing:.13em;margin-bottom:13px}.cities-head button{background:none;color:var(--coral);font-size:11px}#cities button{display:block;width:100%;text-align:left;background:none;color:#586362;padding:10px 11px;border-radius:8px}.city-btn.active,.city-btn:hover{background:#eef2ed!important;color:var(--ink)!important;font-weight:700}.city-btn span{float:right;color:#a4aaa4;font-size:11px}.side-bottom{margin-top:auto}.tip{background:#f0eee5;border-radius:11px;padding:14px;display:flex;gap:10px}.tip>span{color:var(--coral);font-size:20px}.tip b,.tip small{display:block}.tip b{font-size:12px}.tip small{font-size:11px;line-height:1.4;margin-top:3px}#content{margin-left:280px;min-height:100vh;padding:36px 48px}header{display:flex;align-items:end;justify-content:space-between;margin-bottom:27px}.primary{background:var(--ink);color:white;padding:12px 17px;border-radius:8px;font-weight:600;box-shadow:0 5px 15px #202b2b1c}.primary:hover{background:var(--coral)}.map-wrap{position:relative;height:400px;border-radius:15px;overflow:hidden;box-shadow:var(--shadow);border:4px solid white}.map-wrap #map{height:100%;background:#dfe8e1}.map-label{position:absolute;bottom:16px;left:16px;background:#fff;padding:8px 11px;border-radius:7px;z-index:500;box-shadow:0 3px 12px #0002;font-size:11px;color:#66706d}.live-dot{display:inline-block;width:7px;height:7px;background:var(--coral);border-radius:50%;margin-right:6px}.saved{padding:32px 0}.section-title{display:flex;align-items:end;gap:10px;margin-bottom:18px}.section-title .count,.count{color:var(--coral);font-size:12px;font-weight:700;margin-bottom:3px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}.card{background:white;border:1px solid var(--line);border-radius:11px;padding:17px;transition:.2s;position:relative}.card:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.card h3{font-family:'Playfair Display';font-size:19px;margin:0 0 7px}.card p{font-size:12px;color:var(--muted);line-height:1.45;margin:4px 0}.card .tag{color:var(--coral);font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.card-actions{display:flex;gap:10px;margin-top:13px;border-top:1px solid var(--line);padding-top:10px}.card-actions button{background:none;color:var(--muted);font-size:11px;padding:0}.card-actions button:hover{color:var(--coral)}.empty{text-align:center;background:#fff;border:1px dashed #ccd3cc;border-radius:11px;padding:35px;color:var(--muted)}.icon-btn{background:none;color:var(--muted);font-size:21px}.menu,.mobile-close{display:none}.modal{position:fixed;inset:0;background:#17232380;z-index:30;display:grid;place-items:center;padding:20px}.hidden{display:none}.modal-card{background:#fff;border-radius:15px;width:min(480px,100%);padding:30px;position:relative;max-height:90vh;overflow:auto}.modal-close{position:absolute;right:18px;top:15px;background:none;font-size:25px;color:var(--muted)}label{display:block;font-size:12px;font-weight:600;margin:17px 0;color:#5c6664}input,textarea{display:block;width:100%;border:1px solid #d9ded8;border-radius:7px;padding:12px;margin-top:7px;outline:none;background:#fff}input:focus,textarea:focus{border-color:var(--coral);box-shadow:0 0 0 3px #e76f5120}textarea{min-height:75px;resize:vertical}.optional{font-weight:400;color:#9ba19e}.full{width:100%;margin-top:5px}.candidate{border:1px solid var(--line);border-radius:8px;padding:12px;margin-top:9px;display:flex;justify-content:space-between;gap:12px;align-items:center}.candidate b{font-size:13px}.candidate small{display:block;margin-top:3px;line-height:1.35}.candidate button{background:#eff3ee;color:#466052;border-radius:6px;padding:8px 10px;font-size:11px;font-weight:700;white-space:nowrap}.error{color:#c94d3a;font-size:12px}.spinner{color:var(--muted);padding:15px 0;font-size:12px}#toast{position:fixed;bottom:24px;right:24px;background:var(--ink);color:white;border-radius:8px;padding:12px 16px;opacity:0;transform:translateY(8px);transition:.2s;z-index:50}#toast.show{opacity:1;transform:none}.login-page{display:grid;place-items:center;min-height:100vh;background:linear-gradient(120deg,#f7f6f1,#e8eee9)}.login-card{width:min(390px,calc(100% - 40px));background:#fff;padding:43px;border-radius:17px;box-shadow:var(--shadow)}.login-card .brand-mark{margin-bottom:25px}.login-card h1{font-size:36px;line-height:1.08}.login-card>.muted{line-height:1.5;margin-bottom:28px}.login-card button{width:100%;background:var(--coral);color:white;padding:13px;border-radius:7px;font-weight:700;margin-top:8px}.login-card button span{float:right;font-size:18px}
@media(max-width:800px){#sidebar{transform:translateX(-100%);transition:.25s;width:290px;box-shadow:10px 0 30px #0002}#sidebar.open{transform:none}.menu,.mobile-close{display:block}.mobile-close{margin-left:auto}#content{margin-left:0;padding:22px 18px}header{align-items:center;gap:15px}.menu{margin-right:0}header h1{font-size:25px}.add-top{margin-left:auto;padding:10px 12px}.add-top span{display:none}.map-wrap{height:330px}.saved{padding-top:26px}}
/* Keep the add form above every Leaflet pane and interactive control. */
.modal{z-index:9999!important;pointer-events:auto!important}
.modal-card{z-index:10000;pointer-events:auto}
.leaflet-container{z-index:0}
.place-photo{display:block;width:calc(100% + 34px);height:145px;object-fit:cover;margin:-17px -17px 15px;border-radius:11px 11px 0 0}.candidate-photo{width:72px;height:60px;object-fit:cover;border-radius:6px;flex:0 0 72px}.description{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;color:#66706d!important;font-size:12px!important}
.secondary{background:#eef2ed;color:#466052;padding:12px 17px;border-radius:8px;font-weight:600}.manual-divider{display:flex;align-items:center;gap:10px;color:#9aa19c;font-size:10px;text-transform:uppercase;letter-spacing:.12em;margin:20px 0 10px}.manual-divider:before,.manual-divider:after{content:'';height:1px;background:#e5e7e0;flex:1}.manual-entry{border-top:1px solid #e5e7e0;margin-top:12px;padding-top:2px}
