:root{font-family:Manrope,system-ui,-apple-system,"Segoe UI",Arial,sans-serif;color:#19352f;background:#f4f6f2;font-synthesis:none}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;overscroll-behavior:contain}button{font:inherit;cursor:pointer}button:focus-visible,.map-stage:focus-visible{outline:3px solid #f2d943;outline-offset:2px}button:disabled{cursor:not-allowed;opacity:.45}
.app{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}.masthead{height:86px;flex-shrink:0;background:#17332d;color:#fff;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px clamp(18px,3vw,46px);border-bottom:3px solid #e4d73c}.brand{display:flex;gap:15px;align-items:center}.brand-icon{display:flex;align-items:center;justify-content:center;background:#e7de46;color:#1a3430;width:48px;height:48px;border-radius:14px}.brand-icon svg{height:26px;width:26px}.brand-copy .eyebrow{display:block;letter-spacing:.16em;font-size:10px;font-weight:800;color:#c8d6cd;margin-bottom:4px}.brand h1{margin:0;font-size:clamp(16px,1.55vw,23px);font-weight:800;letter-spacing:-.035em;line-height:1.15}.brand h1 span{color:#e8dd4b}.status{display:inline-flex;align-items:center;gap:9px;font-size:12px;font-weight:700;color:#d6e4da;white-space:nowrap;border:1px solid #4c6559;padding:10px 15px;border-radius:99px}.status-dot{width:7px;height:7px;background:#dfe45b;border-radius:100%}
.content{display:grid;grid-template-columns:298px minmax(0,1fr);flex:1;min-height:0}.sidebar{padding:26px 18px 20px 22px;background:#fff;border-right:1px solid #e1e8dd;display:flex;flex-direction:column;min-height:0}.sidebar-head{padding:0 8px 12px}.overline,.current-caption{font-size:10px;font-weight:800;color:#5a8173;letter-spacing:.17em;margin:0 0 8px}.sidebar h2{font-size:19px;letter-spacing:-.04em;margin:0 0 8px}.sidebar-head p:not(.overline){font-size:12px;line-height:1.6;color:#73857b;margin:0}.map-nav{display:flex;flex-direction:column;gap:5px;overflow-y:auto;min-height:0;padding:5px 3px 6px}.nav-option{text-align:left;width:100%;border:1px solid transparent;border-radius:12px;background:transparent;min-height:66px;display:flex;gap:12px;align-items:center;padding:7px 10px 7px 8px;color:#213d36;transition:background .14s,border-color .14s}.nav-option:hover{background:#f5f8f2}.nav-option.is-active{background:#f0f5e9;border-color:#bcccaf}.nav-option img{height:46px;width:59px;object-fit:cover;border-radius:7px;background:#dee7db}.nav-label{min-width:0;display:flex;flex:1;flex-direction:column;gap:4px}.nav-label strong{font-size:13px;font-weight:800}.nav-label small{font-size:11px;color:#73877d}.nav-chevron{font-size:22px;color:#9aada1;line-height:1}.nav-option.is-active .nav-chevron{color:#1f6354}.sidebar-note{display:flex;gap:9px;padding:15px 9px 4px;font-size:11px;line-height:1.5;color:#819289;margin-top:auto}.sidebar-note svg{flex-shrink:0;width:18px;height:18px;color:#8da89c}
.workspace{min-width:0;padding:22px 25px;display:flex;flex-direction:column;min-height:0}.mobile-nav{display:none}.viewer-panel{display:flex;flex-direction:column;min-height:520px;flex:1;overflow:hidden;background:white;border:1px solid #e0e8e0;border-radius:17px;box-shadow:0 10px 38px rgba(25,53,47,.055)}.viewer-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 22px;background:white;flex-shrink:0;border-bottom:1px solid #edf0eb}.current-map h2{margin:2px 0;font-size:20px;letter-spacing:-.04em;font-weight:800}.current-map p{margin:3px 0 0;color:#819189;font-size:12px}.current-caption{margin:0;font-size:9px;color:#718d7f}.map-tools{display:flex;align-items:center;gap:6px}.tool-btn{display:grid;place-items:center;border:1px solid #dfe7df;background:#f7f9f6;color:#263b34;border-radius:9px;width:39px;height:39px;font-size:25px;font-weight:500;line-height:1;transition:background .14s}.tool-btn svg{width:17px;height:17px}.tool-btn:hover{background:#eaf1e7}.zoom-indicator{text-align:center;min-width:58px;font-size:12px;font-weight:800;color:#4c6557;white-space:nowrap}.map-stage{position:relative;background:#e4eae2;overflow:hidden;flex:1;min-height:400px;cursor:grab;touch-action:none;user-select:none}.map-stage.is-dragging{cursor:grabbing}.map-stage img{position:absolute;top:50%;left:50%;max-width:none;display:block;transform-origin:center center;pointer-events:none;user-select:none;will-change:transform;box-shadow:0 2px 20px rgba(24,42,32,.07)}.map-pattern{position:absolute;inset:0;background-image:radial-gradient(#c9d7ca 0.6px,transparent 0.6px);background-size:18px 18px}.map-loading{position:absolute;z-index:5;top:50%;left:50%;transform:translate(-50%,-50%);background:rgba(255,255,255,.94);border:1px solid #dfe8dc;border-radius:12px;padding:13px 18px;color:#637a6e;font-weight:700;font-size:13px;box-shadow:0 6px 20px #2343;transition:opacity .2s}.map-loading.is-hidden{opacity:0;pointer-events:none}.stage-hint{position:absolute;z-index:2;bottom:16px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;background:#142d27d9;color:#f1f6f1;border-radius:999px;padding:10px 15px;pointer-events:none;font-size:11px;font-weight:700;white-space:nowrap;transition:opacity .25s}.stage-hint svg{height:16px;width:16px}.stage-hint.is-hidden{opacity:0}.viewer-bottom{padding:12px 19px;display:flex;align-items:center;justify-content:space-between;gap:14px;border-top:1px solid #ecf0e9;background:#fff;min-height:49px}.legend{display:flex;align-items:center;gap:17px;flex-wrap:wrap}.legend span{display:inline-flex;align-items:center;gap:7px;font-weight:600;color:#63766b;font-size:11px;white-space:nowrap}.key{display:inline-block;width:15px;height:5px;border-radius:8px}.key-yellow{background:#ffe027}.key-blue{background:#80d5e1}.viewer-note{color:#8fa096;font-size:10px;text-align:right}.footer{min-height:43px;background:#f4f6f2;border-top:1px solid #e1e8df;padding:10px 28px;display:flex;justify-content:space-between;align-items:center;gap:15px;color:#91a096;font-size:10px;font-weight:600}.viewer-panel:fullscreen{border:0;border-radius:0}.viewer-panel:fullscreen .map-stage{min-height:0}
@media(max-width:1000px){.content{grid-template-columns:246px minmax(0,1fr)}.sidebar{padding:20px 11px}.workspace{padding:16px}.viewer-bottom{flex-wrap:wrap}.viewer-note{display:none}}
@media(max-width:720px){.masthead{height:74px;padding:12px 15px}.brand{gap:10px}.brand-icon{height:43px;width:43px;border-radius:11px}.brand-copy .eyebrow{font-size:8px}.brand h1{font-size:16px}.brand h1 span{display:block;font-size:14px;margin-top:3px}.status{display:none}.content{display:flex;flex-direction:column;min-height:0}.sidebar{display:none}.workspace{padding:0;min-height:0;flex:1}.mobile-nav{display:flex;gap:9px;flex-shrink:0;padding:12px 12px;overflow-x:auto;background:#fff;border-bottom:1px solid #dfe7dc;scrollbar-width:none}.mobile-nav::-webkit-scrollbar{display:none}.sector-chip{flex-shrink:0;border:1px solid #d9e4d9;border-radius:100px;min-width:43px;padding:9px 12px;background:#f7faf5;color:#35574b;font-size:13px;font-weight:800}.sector-chip.is-active{background:#1d4537;color:white;border-color:#1d4537}.viewer-panel{border:0;border-radius:0;box-shadow:none;min-height:0;flex:1}.viewer-toolbar{padding:11px 13px;gap:6px}.current-map{min-width:0}.current-caption{font-size:8px}.current-map h2{font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.current-map p{font-size:10px;max-width:175px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map-tools{gap:3px}.tool-btn{width:32px;height:34px;font-size:22px;border-radius:8px}.tool-btn svg{width:14px;height:14px}.zoom-indicator{min-width:44px;font-size:10px}.fullscreen-btn{display:none}.map-stage{min-height:50vh;min-height:50dvh}.viewer-bottom{padding:10px 13px;min-height:41px}.legend{gap:13px}.legend span{font-size:9px}.footer{padding:10px 14px;font-size:9px}.footer span:last-child{display:none}.stage-hint{bottom:13px;max-width:calc(100% - 24px);font-size:10px}}
@media(max-width:380px){.brand h1{font-size:15px}.brand-icon{height:39px;width:39px}.map-tools{gap:2px}.tool-btn{width:30px}.zoom-indicator{min-width:41px}.reset-btn{display:none}}
/* The image and grave marker share the exact zoom/pan transformation. */
.map-stage .map-layer{position:absolute;top:50%;left:50%;transform-origin:center center;max-width:none;will-change:transform;box-shadow:0 2px 20px #182a2012}
.map-stage .map-layer img{position:static;transform:none;max-width:none;width:100%;height:100%;box-shadow:none}
.grave-marker{position:absolute;left:0;top:0;width:32px;height:32px;border-radius:50%;border:5px solid #fff32f;background:#ffeb004d;box-shadow:0 0 0 3px #162e2c,0 0 16px #050d1acc;transform:translate(-50%,-50%);pointer-events:none;z-index:2}
.grave-marker[hidden]{display:none}
.finder{background:#edf5e9;border-top:1px solid #dce9d4;padding:12px 20px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.finder[hidden]{display:none}
.finder label{font-size:12px;font-weight:800}
.finder-row{display:flex;gap:7px}
.finder input{border-radius:8px;border:1px solid #b5c6bb;background:#fff;width:92px;height:37px;padding:6px 10px;font-size:14px}
.finder button{border:0;border-radius:8px;padding:8px 14px;background:#173f34;color:white;font-weight:800;font-size:12px}
.finder-message{font-size:11px;color:#617d6f;flex:1;min-width:220px}
.grave-dialog{border:1px solid #d8e5da;border-radius:20px;width:min(520px,calc(100vw - 24px));max-height:min(85vh,760px);padding:0;background:#fff;color:#18352c;box-shadow:0 25px 90px #06160f75;overflow:auto}
.grave-dialog::backdrop{background:rgba(8,20,17,.68)}
.dialog-top{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;padding:22px 23px 12px}
.dialog-eyebrow{font-size:10px;font-weight:900;letter-spacing:.12em;color:#719084}
.dialog-top h2{font-size:25px;letter-spacing:-.045em;margin:5px 0 0}
.dialog-close{display:grid;place-items:center;border:1px solid #dae4db;border-radius:9px;background:#f4f7f2;color:#2a4036;width:38px;height:38px;font-size:25px}
.draft-warning{background:#fff8df;color:#70560b;border:1px solid #f1dea8;border-radius:10px;font-weight:700;font-size:11px;line-height:1.5;margin:0 23px 14px;padding:12px}
.people-list{padding:0 23px 10px;display:flex;flex-direction:column;gap:10px}
.person-card{background:#f5f8f4;border:1px solid #e4ece3;border-radius:12px;padding:14px}
.person-card h3{font-size:16px;margin:0 0 9px;line-height:1.3}
.person-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.person-fields div{display:flex;flex-direction:column;gap:4px}
.person-fields small{font-size:10px;color:#778c7e}
.person-fields strong{font-size:13px}
.empty-card{font-size:13px;line-height:1.6;color:#657a6e;padding:18px;border:1px dashed #b3c6b9;border-radius:12px}
.private-note{font-size:11px;line-height:1.55;color:#677d71;padding:13px 20px 21px;border-top:1px solid #edf1ec;margin:8px 0 0}
@media(max-width:720px){.finder{padding:10px 12px;gap:6px}.finder-row{flex:1}.finder input{flex:1;min-width:0;max-width:110px}.finder-message{min-width:100%;font-size:10px}.dialog-top{padding:18px 17px 10px}.draft-warning{margin:0 17px 12px}.people-list{padding:0 17px 12px}.private-note{padding:10px 17px 17px}}

/* The overview photo is the navigation: tap anywhere inside a sector. */
.map-stage.is-overview{cursor:pointer}
.map-stage.is-overview.is-dragging{cursor:grabbing}

/* Admin demo: no real personal information or authentication. */
.test-banner{display:flex;align-items:center;gap:12px;padding:12px 16px;margin:0 0 12px;border:1px solid #eddfaf;border-radius:12px;background:#fff9e8;color:#634d0a;font-size:12px;line-height:1.45}
.test-banner strong{white-space:nowrap;letter-spacing:.05em;font-size:10px;background:#d6ae36;color:#251b06;border-radius:7px;padding:7px 9px}
.admin-dialog{width:min(570px,calc(100vw - 22px));max-height:min(92dvh,920px)}
.admin-content{padding:0 23px 20px}.list-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:15px 0 11px}.list-toolbar h3{font-size:14px;margin:0;color:#213e35}.count-pill{display:inline-flex;min-width:24px;justify-content:center;background:#e3eee5;color:#295340;border-radius:30px;font-size:11px;padding:4px 6px;margin-left:4px}.action-button{border:0;background:#184c3a;color:#fff;border-radius:10px;font-weight:800;padding:11px 14px;font-size:12px;white-space:nowrap}.admin-dialog .people-list{padding:0;gap:9px}.admin-dialog .person-card{padding:14px}.admin-dialog .person-card h3{margin:0;font-size:14px}.person-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:9px}.person-actions{display:flex;gap:7px}.mini-btn{border:1px solid #d6e2d7;background:#fff;border-radius:8px;padding:7px 9px;font-size:12px;font-weight:700;color:#234b3b;white-space:nowrap}.mini-btn.delete{color:#9c4943}.admin-dialog .empty-card{padding:24px 15px;text-align:center}.record-tag{display:inline-block;background:#fff1ce;color:#85631c;border-radius:6px;font-size:10px;padding:3px 6px;margin:5px 0 0}.editor-form{display:flex;flex-direction:column;gap:10px;border:1px solid #cbdccb;background:#f8faf6;border-radius:14px;margin:14px 0 0;padding:17px}.editor-form[hidden]{display:none}.form-title{display:flex;justify-content:space-between;align-items:center}.form-title h3{margin:0;font-size:16px}.editor-form label{font-size:12px;font-weight:800;display:block;margin-top:2px}.editor-form label span{color:#ba3030}.editor-form input,.editor-form textarea{width:100%;max-width:100%;border:1px solid #c8d8cc;background:#fff;color:#263d32;border-radius:9px;min-height:42px;padding:10px 11px;font:inherit;font-size:14px}.editor-form textarea{resize:vertical;min-height:62px}.form-two{display:grid;grid-template-columns:1fr 1fr;gap:11px}.form-two div{min-width:0}.form-two label{margin-bottom:8px}.text-button{background:transparent;border:0;color:#38664f;text-decoration:underline;text-underline-offset:3px;font-weight:750;font-size:12px}.danger-text{color:#a35343}.save-button{background:#204d3f;color:#fff;border:0;border-radius:11px;padding:13px;font-weight:850;font-size:13px}.inner-note{padding:10px;margin:0;border-radius:9px;background:#eaf1e9;border:1px solid #dde6d7}.admin-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid #e7ede6;margin-top:15px;padding-top:15px;font-size:10px;color:#76877b;line-height:1.4}.save-notice{margin:8px 0 0;color:#246348;font-size:12px;font-weight:700;min-height:0}.save-notice:empty{display:none}
@media(max-width:720px){.test-banner{margin:0;padding:9px 12px;border-radius:0;gap:8px;font-size:10px}.test-banner strong{font-size:9px;padding:7px}.admin-content{padding:0 16px 18px}.list-toolbar{gap:5px}.list-toolbar h3{font-size:13px}.action-button{font-size:11px;padding:10px}.admin-dialog .person-card{padding:12px}.person-heading{flex-wrap:wrap}.mini-btn{font-size:11px}.form-two{grid-template-columns:1fr 1fr}.editor-form{padding:12px}.admin-foot{align-items:flex-start}.admin-dialog .dialog-top h2{font-size:21px}}

/* Firebase account status (the Firestore rules, not the UI, enforce authorization). */
.cloud-panel{display:flex;align-items:center;justify-content:space-between;gap:14px;border-radius:13px;background:#e5efe9;border:1px solid #b8d4c6;padding:12px 17px;margin-bottom:10px}
.cloud-copy{display:flex;flex-direction:column;gap:3px;min-width:0}.cloud-copy strong{color:#21493a;font-size:13px}.cloud-copy span{color:#536f61;font-size:12px;line-height:1.4}.cloud-copy small{font-size:11px;color:#446555;overflow-wrap:anywhere}.cloud-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.login-button,.uid-button{border:0;border-radius:9px;padding:10px 13px;font-size:12px;font-weight:800;background:#174736;color:#fff;white-space:nowrap}.uid-button{background:#fff;color:#25533f;border:1px solid #b8d5c5}
.cloud-panel.is-locked{background:#fbf2e0;border-color:#e6d5a7}.cloud-panel.is-locked .cloud-copy strong{color:#805a16}
@media(max-width:720px){.cloud-panel{border-radius:0;margin:0;gap:8px;flex-wrap:wrap;padding:11px 12px}.cloud-copy{flex:1;min-width:160px}.cloud-copy strong{font-size:11px}.cloud-copy span{font-size:10px}.cloud-actions{width:100%}.login-button,.uid-button{font-size:11px;padding:8px 12px}}
