:root{--navy:#101d2f;--blue:#2475b9;--aqua:#6fd1cb;--ink:#172333;--muted:#687584;--surface:#fff;--soft:#eef4f6;--line:#dce5e8;--danger:#b73737}*{box-sizing:border-box}body{margin:0;background:#f6f8f9;color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.app-shell{max-width:1100px;margin:auto;padding:0 20px 92px}.topbar{height:76px;display:flex;align-items:center;justify-content:space-between}.brand{color:var(--navy);display:flex;align-items:center;gap:9px;font-size:14px;font-weight:800;letter-spacing:.1em;text-decoration:none}.brand-mark{background:var(--navy);color:var(--aqua);display:grid;place-items:center;width:31px;height:31px;clip-path:polygon(50% 0,100% 22%,100% 78%,50% 100%,0 78%,0 22%)}.brand-light{font-weight:500;color:var(--muted);font-size:10px}.connection{font-size:12px;color:var(--muted)}.connection span{display:inline-block;width:8px;height:8px;border-radius:50%;background:#42b883;margin-right:6px}.page{display:none}.page.active{display:block}.hero{padding:38px 0 28px}.eyebrow{margin:0 0 8px;color:var(--blue);font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}h1,h2,p{margin-top:0}h1{font-size:clamp(31px,6vw,56px);line-height:1.04;letter-spacing:-.045em;margin-bottom:14px}h2{font-size:20px}.hero>p:last-child{color:var(--muted);font-size:17px;max-width:510px;line-height:1.5}.upload-grid{display:grid;grid-template-columns:2fr 1fr;gap:20px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:17px;padding:22px;box-shadow:0 8px 20px rgba(22,39,55,.035)}.dropzone{min-height:190px;border:1.5px dashed #a8c5d3;border-radius:12px;background:#f8fcfd;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;cursor:pointer;padding:20px;gap:7px}.dropzone:hover{border-color:var(--blue);background:#f1f9fb}.dropzone input{position:absolute;width:1px;height:1px;opacity:0}.camera-icon{font-size:38px;line-height:1;color:var(--blue);transform:rotate(-25deg)}.dropzone small,.status,.preview small{color:var(--muted)}.previews{display:grid;gap:8px;margin:14px 0}.preview{display:flex;align-items:center;gap:10px;padding:8px;border:1px solid var(--line);border-radius:10px}.preview img{width:44px;height:44px;object-fit:cover;border-radius:7px}.preview div{min-width:0;flex:1}.preview strong,.preview small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview strong{font-size:13px}.preview button,.close{border:0;background:transparent;color:var(--muted);font-size:24px;cursor:pointer}.button{font:inherit;font-weight:700;border-radius:9px;border:1px solid transparent;padding:12px 16px;cursor:pointer}.button:disabled{cursor:not-allowed;opacity:.45}.primary{color:#fff;background:var(--navy);width:100%}.primary:hover{background:#1a3555}.secondary{background:#fff;border-color:var(--line);color:var(--navy)}.status{min-height:22px;margin:13px 0 0;font-size:13px}.note{background:var(--navy);color:#fff}.note .eyebrow{color:var(--aqua)}.note p:last-child{line-height:1.6;color:#cad6df}.map-head{display:flex;justify-content:space-between;align-items:end;padding:24px 0 17px}.map-head h1{font-size:38px;margin:0}.filters{display:flex;align-items:end;gap:13px;margin-bottom:14px;padding:13px 16px}.filters label{display:grid;gap:5px;flex:1;font-size:11px;font-weight:800;color:var(--muted);letter-spacing:.06em;text-transform:uppercase}.filters select,.filters input{height:37px;border:1px solid var(--line);border-radius:7px;padding:0 9px;background:#fff;color:var(--ink);font:inherit;text-transform:none;letter-spacing:0}.text-button{border:0;background:transparent;color:var(--blue);font-weight:700;padding:10px 3px;white-space:nowrap;cursor:pointer}#map{height:min(65vh,620px);border-radius:17px;border:1px solid var(--line);overflow:hidden;background:#d5dde0}.map-status{color:var(--muted);font-size:13px}.arrow-marker{width:32px;height:32px;filter:drop-shadow(0 2px 3px rgba(0,0,0,.4))}.arrow-marker::after{content:"";display:block;width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-bottom:29px solid #ffdd58;transform:translate(6px,1px)}.bottom-nav{position:fixed;z-index:600;bottom:0;left:0;right:0;height:70px;background:#fff;border-top:1px solid var(--line);display:flex;justify-content:center;gap:55px}.bottom-nav a{color:var(--muted);text-decoration:none;display:flex;flex-direction:column;justify-content:center;align-items:center;font-size:11px;font-weight:700;gap:3px}.bottom-nav a span{font-size:24px;line-height:20px}.bottom-nav a.active{color:var(--blue)}.photo-dialog{border:0;padding:0;width:min(900px,96vw);max-height:94vh;border-radius:16px;background:#fff;box-shadow:0 20px 60px #0008}.photo-dialog::backdrop{background:#0c1828c9}.photo-dialog .close{position:absolute;right:9px;top:5px;z-index:2;background:#fff;border-radius:50%;width:36px;height:36px;line-height:28px}.dialog-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(250px,1fr);max-height:94vh}.dialog-layout img{max-width:100%;max-height:94vh;width:100%;object-fit:contain;background:#172333}.details{padding:28px;overflow:auto}.details h2{padding-right:26px}.detail-list{color:var(--muted);font-size:14px;line-height:1.7}.edit-form{display:grid;gap:10px;margin-top:17px}.edit-form label{display:grid;gap:4px;font-size:12px;font-weight:700}.edit-form input{height:37px;border:1px solid var(--line);border-radius:7px;padding:7px;font:inherit}.dialog-actions{display:flex;gap:9px;margin-top:12px}.delete{color:var(--danger);margin-top:20px;background:none;border:0;font:inherit;font-weight:700;cursor:pointer;padding:0}.leaflet-popup-content-wrapper{border-radius:10px}.popup h3{margin:0 0 8px;font-size:14px}.popup p{margin:0 0 9px;color:var(--muted);font-size:12px}.popup button{background:var(--navy);color:#fff;border:0;border-radius:6px;padding:7px 9px;font-weight:700;cursor:pointer}@media(max-width:700px){.app-shell{padding:0 15px 88px}.connection{display:none}.hero{padding:26px 2px 22px}.upload-grid,.dialog-layout{grid-template-columns:1fr}.upload-grid{gap:12px}.note{display:none}.filters{display:grid;grid-template-columns:1fr 1fr;gap:10px}.text-button{grid-column:span 2}.map-head h1{font-size:31px}.dialog-layout img{max-height:53vh}.details{padding:22px}.bottom-nav{gap:75px}}
