@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
.gallery-filters{display:flex;gap:6px;padding:10px 0}.gallery-filter{border:1px solid #e6e5de;border-radius:20px;background:transparent;padding:6px 11px;color:#78807c;font:500 10px 'DM Sans',sans-serif;cursor:pointer}.gallery-filter.active{background:#315e4d;color:white;border-color:#315e4d}.viewer-navigation{display:flex;align-items:center;gap:9px}.viewer-navigation button{border:1px solid #e3e2da;background:#fff;border-radius:5px;color:#315e4d;width:28px;height:25px;cursor:pointer}.viewer-navigation span{min-width:38px;text-align:center}
.gallery-group{min-height:0}.gallery-group h2{display:flex;justify-content:space-between;margin:8px 0 2px;padding:8px 0;border-bottom:1px solid var(--line);font:700 10px Manrope,sans-serif;color:#56635b}.gallery-group h2 span{color:#9aa198;font-weight:500}.photo-list{max-height:28vh}.unlocated-group{border-top:1px solid var(--line);margin-top:8px;padding-top:2px}.map-tools{display:flex;align-items:center;gap:8px}.map-tools select{pointer-events:auto;border:1px solid #fff;border-radius:5px;padding:8px 9px;background:#fbfaf7ed;color:#68736c;font:500 10px 'DM Sans',sans-serif;box-shadow:0 2px 12px #1d2b2114}.map-hint{pointer-events:none}
.secondary-button{height:36px;margin-top:7px;width:100%;border:1px solid #e4e3dc;border-radius:7px;background:transparent;color:#68736c;font:500 10px 'DM Sans',sans-serif;cursor:pointer}.secondary-button:hover{background:#f3f2ed}

:root{--ink:#242a28;--muted:#78807c;--paper:#faf9f6;--line:#e9e7e1;--green:#315e4d;--lime:#d4ef9b;--orange:#e78761;--shadow:0 20px 65px #1b2d2726}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif}.app-shell{min-height:100vh}.topbar{height:72px;padding:0 34px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:#fbfaf7}.brand{text-decoration:none;color:var(--ink);display:flex;align-items:center;gap:10px;font:800 18px Manrope,sans-serif;letter-spacing:-.7px}.brand-mark{width:29px;height:29px;background:var(--green);color:var(--lime);border-radius:9px;display:grid;place-items:center;font-size:19px}.brand-light{font-weight:500;color:#85908a}.topbar-right{display:flex;align-items:center;gap:8px;color:#818984;font-size:12px}.privacy-dot{width:7px;height:7px;border-radius:50%;background:#85a985;box-shadow:0 0 0 3px #85a98521}.workspace{height:calc(100vh - 72px);min-height:610px;display:grid;grid-template-columns:355px 1fr}.sidebar{position:relative;z-index:2;padding:34px 27px 22px 32px;border-right:1px solid var(--line);display:flex;flex-direction:column;overflow:hidden;background:#fbfaf7}.eyebrow{font-size:9px;letter-spacing:1.45px;font-weight:700;color:#9a9f99;margin:0 0 12px}.sidebar h1{font:700 32px/1.1 Manrope,sans-serif;letter-spacing:-1.7px;margin:0}.period{color:var(--orange)}.intro{color:#78807c;font-size:12px;line-height:1.65;margin:13px 0 22px;max-width:270px}.add-button{border:0;border-radius:8px;background:var(--green);color:white;height:45px;width:100%;font:600 12px 'DM Sans',sans-serif;cursor:pointer;box-shadow:0 5px 12px #315e4d22;transition:.18s}.add-button:hover{background:#254d3d;transform:translateY(-1px)}.plus{font-size:17px;vertical-align:-1px;margin-right:7px}.import-note{margin:12px 0 25px;padding:10px 11px;border:1px solid #eae8e1;background:#f5f4ef;border-radius:7px;display:flex;align-items:flex-start;gap:8px;color:#878d86;font-size:10px;line-height:1.5}.note-icon{font-size:17px;color:#9faaa0;line-height:1}.library-heading{padding:0 0 10px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.library-heading>div{display:flex;gap:9px;align-items:center}.library-heading .eyebrow{margin:0}.count{font-size:10px;color:#90978f;background:#f0efe9;border-radius:10px;padding:2px 7px}.text-button{border:0;background:none;color:#9a9e97;font:500 10px 'DM Sans',sans-serif;cursor:pointer}.text-button:hover{color:#b35e48}.photo-list{overflow-y:auto;min-height:0}.photo-row{display:flex;gap:10px;align-items:center;padding:10px 2px;border-bottom:1px solid #efeee9;cursor:pointer}.photo-row:hover .photo-name{color:var(--green)}.thumb-wrap{width:44px;height:44px;border-radius:6px;overflow:hidden;flex:none;background:#ebe9e2;position:relative}.thumb-wrap img{width:100%;height:100%;object-fit:cover}.sphere-badge{position:absolute;right:3px;bottom:3px;background:#263b33d9;color:white;border-radius:3px;font-size:8px;font-weight:700;padding:2px 3px}.photo-meta{min-width:0;flex:1}.photo-name{font-size:11px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:205px}.photo-place{font-size:9px;color:#929891;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-actions{display:flex;gap:4px;opacity:0;transition:.15s}.photo-row:hover .row-actions{opacity:1}.icon-button{border:0;background:transparent;color:#919790;cursor:pointer;padding:4px;font-size:13px}.icon-button:hover{color:#b35e48}.empty-state{padding:36px 16px 0;display:flex;align-items:center;text-align:center;flex-direction:column;gap:7px;color:#90968f}.empty-icon{font-size:31px;color:#c3c7be;margin-bottom:3px}.empty-state strong{font:600 11px Manrope,sans-serif;color:#646e67}.empty-state span{font-size:10px;line-height:1.55;max-width:190px}.sidebar-footer{margin-top:auto;padding-top:15px;border-top:1px solid var(--line);font-size:9px;color:#969c95}.key-hint{font-size:8px;letter-spacing:.8px;font-weight:700;color:#708477;background:#eef1e9;border-radius:3px;padding:3px 5px;margin-right:6px}.map-panel{position:relative;min-width:0;background:#e5eae4}.map-topline{position:absolute;z-index:500;left:22px;right:22px;top:18px;pointer-events:none;display:flex;align-items:center;justify-content:space-between}.map-label,.map-hint{background:#fbfaf7ed;box-shadow:0 2px 12px #1d2b2114;border:1px solid #fff;border-radius:5px;padding:9px 11px;font-size:8px;font-weight:700;letter-spacing:1.15px;color:#7e877f}.live-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#6c9b75;margin-right:7px;vertical-align:1px}.map-hint{letter-spacing:.1px;font-weight:500;font-size:10px;color:#91978f}#map{width:100%;height:100%;background:#e8ece5}.leaflet-container{font-family:'DM Sans',sans-serif}.leaflet-control-attribution{font-size:9px!important;background:#fbfaf7d9!important}.leaflet-control-zoom{border:0!important;box-shadow:0 3px 15px #14251f1c!important;border-radius:7px!important;overflow:hidden}.leaflet-control-zoom a{color:#3d5348!important;border:0!important;width:32px!important;height:32px!important;line-height:32px!important}.photo-pin{width:39px;height:48px;position:relative;filter:drop-shadow(0 3px 4px #1d302b38)}.photo-pin:before{content:'';position:absolute;left:4px;top:2px;width:31px;height:31px;background:var(--green);border:2px solid #fff;border-radius:50% 50% 50% 7px;transform:rotate(-45deg)}.photo-pin img{position:absolute;z-index:1;left:10px;top:8px;width:19px;height:19px;object-fit:cover;border-radius:50%}.photo-pin.sphere:after{content:'360';position:absolute;z-index:2;right:0;top:0;background:var(--lime);color:#30483b;border:1px solid white;border-radius:4px;padding:2px 3px;font-size:7px;font-weight:700}.leaflet-popup-content-wrapper{border-radius:8px!important;padding:0!important;box-shadow:0 6px 24px #24372c25!important}.leaflet-popup-content{margin:8px 10px!important;font:600 11px 'DM Sans',sans-serif!important}.leaflet-popup-content img{width:150px;height:82px;object-fit:cover;border-radius:5px;display:block;margin-bottom:7px}.popup-open{border:0;background:none;padding:0;color:var(--green);font:700 10px 'DM Sans',sans-serif;cursor:pointer}.map-legend{position:absolute;right:18px;bottom:21px;z-index:500;background:#fbfaf7ed;border:1px solid white;box-shadow:0 2px 12px #1d2b2114;border-radius:5px;padding:9px 11px;display:flex;align-items:center;gap:7px;color:#899087;font-size:8px;letter-spacing:.65px;font-weight:600}.legend-pin{color:var(--green);font-size:11px}.legend-divider{height:13px;width:1px;background:#e6e5de;margin:0 3px}.legend-drag{font-size:12px;color:#a0a79e}.map-message{position:absolute;z-index:600;left:50%;bottom:22px;transform:translate(-50%,16px);padding:9px 14px;border-radius:6px;background:#263d33;color:#fff;font-size:11px;opacity:0;transition:.2s;pointer-events:none}.map-message.show{opacity:1;transform:translate(-50%,0)}.modal{position:fixed;inset:0;z-index:1000;display:none;align-items:center;justify-content:center;padding:24px}.modal.open{display:flex}.viewer-backdrop{position:absolute;inset:0;background:#15211dd9;backdrop-filter:blur(5px)}.viewer-card{position:relative;width:min(100%,1000px);background:#f8f7f2;border-radius:12px;overflow:hidden;box-shadow:var(--shadow);animation:rise .2s ease-out}@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.viewer-header{height:70px;padding:13px 19px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.viewer-header .eyebrow{margin:0 0 3px;font-size:8px}.viewer-header h2{margin:0;font:700 15px Manrope,sans-serif;letter-spacing:-.4px}.close-button{width:31px;height:31px;border:1px solid #e5e3dc;background:#fff;border-radius:50%;font-size:21px;line-height:1;color:#657069;cursor:pointer}.viewer-stage{position:relative;height:min(67vh,620px);min-height:260px;background:#16201d}.viewer-stage>img{width:100%;height:100%;object-fit:contain;display:none}.viewer-stage>img.visible{display:block}.viewer-stage #sphere-viewer{width:100%;height:100%;display:none}.viewer-stage #sphere-viewer.visible{display:block}.viewer-loading{position:absolute;inset:0;display:grid;place-items:center;color:#bac5bd;font-size:12px}.viewer-footer{padding:12px 19px;display:flex;justify-content:space-between;align-items:center;color:#818982;font-size:10px;min-height:40px}.toast{position:fixed;z-index:1200;left:50%;bottom:22px;transform:translate(-50%,10px);opacity:0;transition:.2s;background:#263d33;color:white;padding:10px 15px;border-radius:6px;font-size:11px;pointer-events:none}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:760px){.topbar{height:60px;padding:0 17px}.workspace{height:auto;min-height:calc(100vh - 60px);grid-template-columns:1fr;grid-template-rows:auto minmax(430px,1fr)}.sidebar{padding:24px 19px 15px;border-right:0;border-bottom:1px solid var(--line);max-height:52vh}.sidebar h1{font-size:27px}.intro{margin:8px 0 14px}.import-note{margin:9px 0 14px}.empty-state{padding:15px 0}.sidebar-footer{padding-top:10px}.photo-list{max-height:130px}.map-panel{min-height:430px}.map-topline{left:12px;right:12px;top:12px}.map-legend{right:10px;bottom:10px}.viewer-stage{height:60vh;min-height:230px}.viewer-footer{gap:10px;font-size:9px}.topbar-right{font-size:10px}}
