:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}*{box-sizing:border-box}.page{font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;outline:none;display:flex;flex-direction:column;height:100vh;width:100vw;margin:0;padding:0;gap:0;overflow:hidden}.topbar{display:grid;grid-template-columns:auto auto 1fr 420px;gap:12px;align-items:center;padding:14px;background:#fff;border-bottom:1px solid rgba(0,0,0,.1)}.indicatorStack{position:fixed;bottom:24px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:10px;z-index:1200;pointer-events:none}.indicator{display:flex;align-items:flex-start;gap:10px;width:min(90vw,480px);padding:14px 16px;background:#fff;border:1px solid rgba(0,0,0,.15);border-left-width:4px;border-radius:10px;box-shadow:0 8px 20px #0000001f;color:#1c1c1c;pointer-events:auto}.indicator.success{border-left-color:#2e7d32}.indicator.info{border-left-color:#1976d2}.indicator.danger{border-left-color:#c62828}.indicatorMessage{font-size:14px;line-height:1.4;font-weight:600;color:#1c1c1c}.indicatorClose{margin-left:auto;border:none;background:transparent;color:#333;font-size:18px;line-height:1;padding:2px 6px;cursor:pointer}@media(max-width:980px){.topbar{grid-template-columns:1fr}}.modeButtons{display:flex;gap:10px}.filterSection{display:flex;align-items:center}.filterSelect{padding:10px 12px;border-radius:10px;border:1px solid rgba(0,0,0,.22);background:#fff;color:#000;cursor:pointer;font-size:13px}.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;grid-column:4;padding:0 14px;justify-content:flex-end}button{padding:10px 12px;border-radius:10px;border:1px solid rgba(0,0,0,.22);background:#fff;color:#000;cursor:pointer}button.primary{font-weight:700}button.danger{border-color:#d2000059}button.warning{border-color:#ffa50059}button.active{border-width:2px}button:disabled{opacity:.55;cursor:not-allowed}.hintText{opacity:.8}.layout{display:grid;grid-template-columns:1fr 420px;gap:0;flex:1;overflow:hidden}@media(max-width:980px){.layout{grid-template-columns:1fr}}.cemeteryWrapper{position:relative;width:100%;height:100%;flex:1;border-radius:0;overflow:hidden;border:none;background:#f6f6f6;touch-action:none}.zoomControls{position:fixed;bottom:40px;right:460px;display:flex;flex-direction:column;gap:8px;z-index:999;pointer-events:auto}@media(max-width:980px){.zoomControls{right:40px}}.zoomBtn{width:44px;height:44px;border-radius:50%;background:#ffffffd9;border:1px solid rgba(0,0,0,.2);color:#000;font-size:24px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s ease,box-shadow .12s ease;padding:0}.zoomBtn:hover{background:#fffffff2;box-shadow:0 2px 8px #00000026}.zoomBtn:active{background:#f0f0f0f2}.loginCard{background:#fff;border-radius:14px;box-shadow:0 10px 40px #0003;padding:40px;width:100%;max-width:360px}.loginTitle{font-size:24px;font-weight:800;color:#000;margin-bottom:24px;text-align:center}.loginForm{display:flex;flex-direction:column;gap:16px}.loginError{color:#f44336;font-size:13px;padding:10px;background:#f443361a;border-radius:6px;border-left:3px solid #F44336}.loginHint{margin-top:20px;padding-top:20px;border-top:1px solid rgba(0,0,0,.1)}.adminControls{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid rgba(0,0,0,.1)}.adminControls button{width:100%}.mapContent{position:absolute;inset:0;transform-origin:top left;will-change:transform}.cemeteryImg,.cemeterySvg{position:absolute;inset:0;width:100%;height:100%}.cemeteryImg{object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.cemeterySvg{pointer-events:auto}.plot{stroke-width:3;transition:filter .12s ease,stroke .12s ease,fill .12s ease}.plot.free{fill:#00aa0047;stroke:#008700e6}.plot.reserved-unpaid{fill:#ffa50042;stroke:#ff8c00e6}.plot.reserved-paid{fill:#d2000042;stroke:#aa0000e6}.plot.clickable{cursor:pointer}.plot.reserved.clickable{cursor:not-allowed}.plot.selected{stroke:#1e5afff2;filter:drop-shadow(0 0 6px rgba(30,90,255,.35))}.plot.moving{opacity:.85;stroke-dasharray:6 4}.draftLine{fill:none;stroke:#1e5affe6;stroke-width:3;stroke-dasharray:8 6}.draftPoint{fill:#1e5affe6;stroke:#ffffffe6;stroke-width:1}.draftFirstPoint{fill:#ffc800bf;stroke:#00000040;stroke-width:1}.duplicatingPolygon{fill:#ff980047;stroke:#ff9800e6;stroke-width:3;cursor:move}.duplicatingPoint{fill:#ff9800e6;stroke:#ffffffe6;stroke-width:1;cursor:move}.duplicatingFirstPoint{fill:#4caf50bf;stroke:#00000040;stroke-width:2}.panel{min-height:0}.panel .card{border:1px solid rgba(0,0,0,.14);border-radius:0;padding:14px;background:#fff;height:100%;overflow-y:auto;overflow-x:hidden;border-left:1px solid rgba(0,0,0,.1);display:flex;flex-direction:column}.cardTitle{font-weight:800;margin-bottom:10px;color:#000}.row{display:flex;justify-content:space-between;margin:6px 0}.label{opacity:.7;font-size:13px;color:#000}.value{font-weight:700;color:#000}.tips{margin-top:10px;opacity:.9;font-size:14px;color:#000}.tips ul{margin:8px 0 0 18px}hr{border:none;border-top:1px solid rgba(0,0,0,.1);margin:12px 0}.plotList{display:flex;flex-direction:column;gap:10px;overflow-y:scroll;flex:1 1 0;min-height:0}.plotListHeader{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:10px}.plotSearchField{position:relative;display:flex;align-items:center;flex:1;min-width:200px}.plotSearchInput{flex:1;min-width:160px;padding:8px 32px 8px 10px;margin-bottom:6px;border:1px solid rgba(0,0,0,.22);border-radius:8px;font-size:13px;color:#000;background:#fff}.plotSearchClear{position:absolute;right:8px;top:50%;transform:translateY(calc(-50% - 3px));width:22px;height:22px;border-radius:50%;border:none;background:#00000014;color:#000;font-size:16px;line-height:1;padding:0;cursor:pointer}.plotSearchClear:disabled{opacity:.35;cursor:default}.plotList::-webkit-scrollbar{width:10px}.plotList::-webkit-scrollbar-track{background:#0000001a}.plotList::-webkit-scrollbar-thumb{background:#0006;border-radius:5px}.plotList::-webkit-scrollbar-thumb:hover{background:#0009}.plotRow{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:8px;padding-right:8px;position:relative}.plotTooltip{position:absolute;left:0;top:100%;margin-top:6px;min-width:220px;max-width:320px;background:#1c1c1c;color:#fff;border-radius:10px;padding:10px 12px;font-size:13px;line-height:1.4;box-shadow:0 8px 18px #00000040;opacity:0;transform:translateY(-4px);pointer-events:none;transition:opacity .12s ease,transform .12s ease;z-index:10}.plotTooltipLine{display:block}.plotRow:hover .plotTooltip{opacity:1;transform:translateY(0)}.mapTooltip{position:absolute;min-width:220px;max-width:320px;background:#1c1c1cf2;color:#fff;border-radius:12px;padding:12px 14px;font-size:13px;line-height:1.45;box-shadow:0 10px 22px #00000047;border:1px solid rgba(255,255,255,.06);pointer-events:none;z-index:1001}.mapTooltipLine{display:block}.plotMeta{display:flex;align-items:center;gap:10px}.plotId{font-weight:800;color:#000}.badge{font-size:12px;padding:4px 8px;border-radius:999px;border:1px solid rgba(0,0,0,.12);color:#000;font-weight:600;max-width:80px;text-align:center}.badge.free{background:#4caf5040;border-color:#4caf5080}.badge.reserved-unpaid{background:#ff980040;border-color:#ff980080}.badge.reserved-paid{background:#f4433640;border-color:#f4433680}.muted{opacity:.65;color:#000}.editForm{margin-bottom:12px}.formGroup{margin-bottom:10px}.formGroup label{display:block;font-size:12px;margin-bottom:4px;color:#000;font-weight:600}.formGroup input[type=text],.formGroup input[type=password],.formGroup input[type=email],.formGroup input[type=tel]{width:100%;padding:8px;border:1px solid rgba(0,0,0,.22);border-radius:6px;font-size:13px;color:#000;background:#fff}.formGroup input[type=checkbox]{margin-right:6px;background:#fff;accent-color:rgb(76,175,80)}.buttonGroup{display:flex;gap:8px;margin-top:10px}.buttonGroup button{flex:1}.modalOverlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:#fff;border-radius:14px;box-shadow:0 10px 40px #0003;max-width:400px;width:90%;overflow:hidden}.modalHeader{padding:20px;border-bottom:1px solid rgba(0,0,0,.1)}.modalHeader h2{margin:0;font-size:18px;color:#000}.modalBody{padding:20px;color:#000}.modalBody p{margin:0;font-size:15px;line-height:1.5}.modalFooter{padding:16px 20px;border-top:1px solid rgba(0,0,0,.1);display:flex;gap:10px;justify-content:flex-end}.modalFooter button{padding:10px 16px}.contextMenu{position:fixed;background:#fff;border:1px solid rgba(0,0,0,.15);border-radius:8px;box-shadow:0 4px 12px #00000026;z-index:999;min-width:120px;overflow:hidden}.contextMenu button{display:block;width:100%;padding:10px 16px;border:none;background:#fff;text-align:left;cursor:pointer;font-size:13px;transition:background .12s ease}.contextMenu button:hover{background:#0000000d}.contextMenu button.danger:hover{background:#d200001a}.notificationBell{position:relative}.notificationBell button{position:relative;font-size:20px;padding:8px 12px}.notificationBadge{position:absolute;top:-8px;right:-8px;background:#ff3b30;color:#fff;border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;border:2px solid white}.notificationDropdown{position:absolute;top:100%;right:0;background:#fff;border:1px solid rgba(0,0,0,.15);border-radius:8px;box-shadow:0 4px 12px #00000026;z-index:999;min-width:300px;max-width:400px;max-height:400px;overflow-y:auto}.notificationEmpty{padding:20px;text-align:center;color:#0009;font-size:14px}.notificationList{display:flex;flex-direction:column}.notificationHeader{display:flex;gap:8px;padding:8px 12px;border-bottom:2px solid rgba(0,0,0,.1);background:#00000005}.notificationHeaderBtn{flex:1;padding:4px 8px;font-size:11px;border-radius:4px;border:1px solid rgba(0,0,0,.2);background:#fff;cursor:pointer;transition:all .12s ease}.notificationHeaderBtn:hover{background:#0000000d}.notificationHeaderBtn.danger:hover{background:#dc143c1a;border-color:#dc143c66}.notificationItem{padding:12px 16px;border-bottom:1px solid rgba(0,0,0,.08);cursor:pointer;transition:background .12s ease;display:flex;align-items:center;gap:8px}.notificationItem:hover{background:#0000000d}.notificationItem.unread{background:#0064ff0d}.notificationContent{flex:1}.notificationTitle{font-weight:600;color:#000;font-size:14px;margin-bottom:4px}.notificationUser{font-size:13px;color:#000000b3;margin-bottom:4px}.notificationTime{font-size:12px;color:#00000080}.notificationDelete{padding:4px 8px;font-size:16px;background:transparent;border:none;cursor:pointer;border-radius:4px;opacity:.5;transition:all .12s ease}.notificationDelete:hover{opacity:1;background:#dc143c1a}
