*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{--navy:#0E2235;--navy2:#1A3A5C;--accent:#1E6FBF;--accent2:#155C9E;--surface:#F7F8FA;--border:#E2E5EA;--text:#0E2235;--muted:#6B7684;--faint:#9BA5B0;--r:10px;--rl:16px;--topbar:50px;--panel:290px}
html,body{font-family:'DM Sans',system-ui,sans-serif;color:var(--text);width:100%;height:100%;margin:0;padding:0;overflow:hidden}
.screen{position:fixed;inset:0;display:none;flex-direction:column}
.screen.active{display:flex}
#scrLogin{background:var(--navy);align-items:center;justify-content:center;padding:20px;z-index:10}
.login-bg-c{position:absolute;border-radius:50%;background:rgba(30,111,191,0.08);pointer-events:none}
.bg1{width:500px;height:500px;top:-180px;right:-120px}.bg2{width:350px;height:350px;bottom:-80px;left:-80px}
.login-card{position:relative;z-index:1;background:#fff;border-radius:20px;padding:40px;width:100%;max-width:400px}
.login-brand{display:flex;align-items:center;gap:10px;margin-bottom:28px}
.login-brand-icon{width:34px;height:34px;border-radius:8px;background:var(--navy);display:flex;align-items:center;justify-content:center}
.login-brand-icon svg{width:17px;height:17px}
.lbname{font-family:'DM Serif Display',serif;font-size:20px;color:var(--navy)}
.lbname em{color:var(--accent);font-style:normal}
.login-title{font-size:22px;font-weight:500;color:var(--navy);margin-bottom:4px}
.login-sub{font-size:13px;color:var(--muted);margin-bottom:22px;line-height:1.5}
.lf-group{margin-bottom:14px}
.lf-label{display:block;font-size:10px;font-weight:500;color:var(--muted);letter-spacing:.5px;text-transform:uppercase;margin-bottom:5px}
.lf-wrap{position:relative}
.lf-icon{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:15px;height:15px;color:var(--faint);pointer-events:none}
.lf-input{width:100%;padding:10px 11px 10px 36px;font-size:14px;font-family:'DM Sans',sans-serif;border:1px solid var(--border);border-radius:var(--r);background:var(--surface);color:var(--text);outline:none;transition:border-color .15s,box-shadow .15s}
.lf-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(30,111,191,.1)}
.pw-toggle-btn{position:absolute;right:10px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--faint);display:flex;padding:2px}
.pw-toggle-btn svg{width:15px;height:15px}
.login-err{background:#FCEBEB;border:1px solid #F09595;border-radius:var(--r);padding:9px 13px;font-size:13px;color:#A32D2D;display:none;align-items:center;gap:7px;margin-bottom:14px}
.login-err.show{display:flex}
.login-err svg{width:14px;height:14px;flex-shrink:0}
.login-btn{width:100%;padding:12px;border-radius:var(--r);background:var(--navy);color:#fff;font-size:14px;font-weight:500;font-family:'DM Sans',sans-serif;border:none;cursor:pointer;transition:background .15s;display:flex;align-items:center;justify-content:center;gap:8px}
.login-btn:hover{background:var(--navy2)}
.login-btn.loading{opacity:.7;pointer-events:none}
.spinner{width:15px;height:15px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;display:none;flex-shrink:0}
@keyframes spin{to{transform:rotate(360deg)}}
.login-btn.loading .spinner{display:block}
.login-btn.loading .btn-txt{display:none}
#scrApp{z-index:5}
.topbar{background:var(--navy);height:var(--topbar);display:flex;align-items:center;justify-content:space-between;padding:0 14px;flex-shrink:0;position:relative;z-index:1000}
.brand{display:flex;align-items:center;gap:8px;cursor:pointer}
.brand-icon{width:26px;height:26px;border-radius:6px;background:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.brand-icon svg{width:14px;height:14px}
.brand-name{font-family:'DM Serif Display',serif;font-size:15px;color:#fff;white-space:nowrap}
.brand-name em{color:#7BB8F0;font-style:normal}
.brand-sub{font-size:11px;color:rgba(255,255,255,.4);font-family:'DM Sans',sans-serif;font-weight:400}
.topbar-right{display:flex;align-items:center;gap:6px}
.user-pill{display:flex;align-items:center;gap:6px;background:rgba(255,255,255,.08);border-radius:20px;padding:3px 9px 3px 5px}
.user-av{width:20px;height:20px;border-radius:50%;background:var(--accent);color:#fff;font-size:9px;font-weight:500;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.user-nm{font-size:12px;color:rgba(255,255,255,.7);max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tb-btn{font-size:12px;color:rgba(255,255,255,.5);cursor:pointer;border:none;background:none;font-family:'DM Sans',sans-serif;padding:5px 8px;border-radius:6px;transition:all .15s;display:flex;align-items:center;gap:4px;white-space:nowrap}
.tb-btn:hover{background:rgba(255,255,255,.08);color:rgba(255,255,255,.85)}
.tb-btn svg{width:13px;height:13px;flex-shrink:0}
.tb-btn.solid{background:var(--accent);color:#fff;font-weight:500}
.tb-btn.solid:hover{background:var(--accent2)}
.hidden{display:none}
.app-content{position:relative;flex:1}
#map{position:absolute;inset:0;z-index:1}
.panel{position:absolute;top:16px;left:16px;width:290px;max-height:calc(100% - 32px);background:#fff;border:1px solid var(--border);border-radius:14px;display:flex;flex-direction:column;z-index:400;transition:transform .25s ease;box-shadow:0 4px 24px rgba(14,34,53,.1);overflow:hidden}
.panel-head{padding:14px 14px 0}
.panel-lbl{font-size:10px;font-weight:500;letter-spacing:.8px;color:var(--faint);text-transform:uppercase;margin-bottom:9px}
.search-box{display:flex;align-items:center;gap:7px;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:0 10px;height:34px;margin-bottom:10px}
.search-box svg{width:13px;height:13px;color:var(--faint);flex-shrink:0}
.search-box input{border:none;background:transparent;font-size:13px;color:var(--text);outline:none;width:100%;font-family:'DM Sans',sans-serif}
.search-box input::placeholder{color:var(--faint)}
.divider{height:1px;background:var(--border)}
.list-meta{padding:7px 14px 4px;font-size:10px;font-weight:500;color:var(--faint);text-transform:uppercase;letter-spacing:.5px;display:flex;align-items:center;justify-content:space-between}
.sort-btn{font-size:10px;color:var(--accent);cursor:pointer;font-weight:500;border:none;background:none;font-family:inherit}
.clist{flex:1;overflow-y:auto;padding:2px 0 8px;max-height:420px}
.clist::-webkit-scrollbar{width:3px}
.clist::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}
.ccard{padding:10px 14px;cursor:pointer;transition:background .1s;border-left:2px solid transparent;display:flex;gap:10px;align-items:center}
.ccard:hover{background:var(--surface)}
.ccard.sel{background:#EEF5FD;border-left-color:var(--accent)}
.c-av{width:32px;height:32px;border-radius:8px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:500;background:#E6F1FB;color:#0C447C}
.cinfo{flex:1;min-width:0}
.cname{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:1px}
.cloc{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:3px}
.cloc.faint{color:var(--faint)}
.cloc svg{width:10px;height:10px;flex-shrink:0}
.empty{padding:28px 14px;text-align:center;color:var(--faint);font-size:13px;line-height:1.6}
.empty strong{display:block;font-size:14px;font-weight:500;color:var(--muted);margin-bottom:4px}
.panel-footer{padding:10px 12px;border-top:1px solid var(--border);flex-shrink:0}
.add-btn{width:100%;padding:9px;border-radius:8px;background:var(--navy);color:#fff;font-size:12px;font-weight:500;font-family:'DM Sans',sans-serif;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;transition:background .15s}
.add-btn:hover{background:var(--navy2)}
.add-btn svg{width:13px;height:13px;flex-shrink:0}
.panel-toggle{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);z-index:450;background:var(--navy);color:#fff;border:none;border-radius:24px;padding:9px 18px;font-size:13px;font-weight:500;font-family:'DM Sans',sans-serif;cursor:pointer;box-shadow:0 2px 12px rgba(14,34,53,.3);display:none;align-items:center;gap:7px}
.panel-toggle svg{width:14px;height:14px}
.leaflet-container{font-family:'DM Sans',system-ui,sans-serif}
.leaflet-popup-content-wrapper{border-radius:var(--rl)!important;border:1px solid var(--border)!important;box-shadow:0 4px 24px rgba(14,34,53,.14)!important;padding:0!important}
.leaflet-popup-content{margin:0!important;width:240px!important}
.leaflet-popup-tip-container{display:none}
.popup-inner{padding:15px}
.pop-name{font-size:14px;font-weight:500;margin-bottom:2px;color:var(--text);padding-right:18px}
.pop-city{font-size:12px;color:var(--muted);margin-bottom:8px;display:flex;align-items:center;gap:4px}
.pop-city svg{width:10px;height:10px}
.pop-desc{font-size:12px;color:var(--muted);margin-bottom:8px;line-height:1.5}
.pop-divider{height:1px;background:var(--border);margin:8px 0}
.pop-row{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px;margin-bottom:4px}
.pop-row svg{width:12px;height:12px;flex-shrink:0}
.pop-row a{color:var(--accent);text-decoration:none}
.pop-edit{margin-top:11px;width:100%;padding:8px 0;border-radius:8px;background:var(--surface);color:var(--navy);font-size:12px;font-weight:500;border:1px solid var(--border);cursor:pointer;font-family:'DM Sans',sans-serif;display:flex;align-items:center;justify-content:center;gap:6px;transition:background .15s}
.pop-edit:hover{background:#E2E5EA}
.pop-edit svg{width:13px;height:13px}
#scrAdmin{z-index:8;overflow-y:auto}
.admin-scroll{flex:1;overflow-y:auto}
.admin-wrap{max-width:900px;margin:0 auto;padding:24px 16px 60px}
.admin-title{font-family:'DM Serif Display',serif;font-size:26px;color:var(--navy);margin-bottom:3px}
.admin-sub{font-size:13px;color:var(--muted);margin-bottom:24px}
.admin-tabs{display:flex;border-bottom:1px solid var(--border);margin-bottom:24px;overflow-x:auto}
.admin-tabs::-webkit-scrollbar{display:none}
.a-tab{font-size:13px;font-weight:500;padding:9px 16px;border:none;background:none;color:var(--muted);cursor:pointer;font-family:'DM Sans',sans-serif;border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .15s;white-space:nowrap}
.a-tab.on{color:var(--accent);border-bottom-color:var(--accent)}
.a-tab:hover:not(.on){color:var(--text)}
.a-panel{display:none}
.a-panel.on{display:block}
.tbl-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;flex-wrap:wrap;gap:8px}
.tbl-head-title{font-size:14px;font-weight:500;color:var(--navy)}
.btn-sm{font-size:12px;font-weight:500;padding:7px 13px;border-radius:7px;border:1px solid var(--border);background:#fff;color:var(--text);cursor:pointer;font-family:'DM Sans',sans-serif;transition:all .15s;display:inline-flex;align-items:center;gap:5px}
.btn-sm:hover{background:var(--surface)}
.btn-sm.primary{background:var(--navy);color:#fff;border-color:var(--navy)}
.btn-sm.primary:hover{background:var(--navy2)}
.btn-sm svg{width:12px;height:12px}
.tbl-wrap{overflow-x:auto;border-radius:var(--rl);border:1px solid var(--border)}
.tbl{width:100%;border-collapse:collapse;background:#fff;font-size:13px;min-width:500px}
.tbl th{padding:9px 13px;text-align:left;font-size:10px;font-weight:500;color:var(--faint);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border);background:var(--surface);white-space:nowrap}
.tbl td{padding:11px 13px;border-bottom:1px solid var(--border);vertical-align:middle}
.tbl tr:last-child td{border-bottom:none}
.tbl tr:hover td{background:#FAFBFC}
.tbl-name{font-weight:500;color:var(--navy)}
.tbl-muted{color:var(--muted)}
.tbl-muted a{color:var(--accent);text-decoration:none}
.tbl-actions{display:flex;gap:5px}
.icon-btn{width:28px;height:28px;border-radius:6px;border:1px solid var(--border);background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}
.icon-btn:hover{background:var(--surface)}
.icon-btn svg{width:13px;height:13px;color:var(--muted)}
.icon-btn.danger:hover{background:#FCEBEB;border-color:#F09595}
.icon-btn.danger:hover svg{color:#A32D2D}
.badge{font-size:10px;font-weight:500;padding:3px 8px;border-radius:5px}
.badge.admin{background:#EEEDFE;color:#3C3489}
.badge.staff{background:#E6F1FB;color:#0C447C}
.log-action{font-size:11px;font-weight:500;padding:3px 8px;border-radius:5px;white-space:nowrap}
.log-action.add{background:#E1F5EE;color:#085041}
.log-action.edit{background:#E6F1FB;color:#0C447C}
.log-action.del{background:#FCEBEB;color:#A32D2D}
.log-time{font-size:12px;color:var(--muted);white-space:nowrap}
.log-time span{color:var(--faint)}
.log-user{font-size:12px;color:var(--text);font-weight:500;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.log-co{font-size:13px;font-weight:500;color:var(--navy)}
.log-details{font-size:12px;color:var(--muted);max-width:200px}
.db-status{font-size:11px;display:flex;align-items:center;gap:5px;padding:7px 11px;border-radius:6px;margin-bottom:16px}
.db-status.ok{background:#E1F5EE;color:#085041}
.db-status.err{background:#FCEBEB;color:#A32D2D}
.db-status.loading{background:var(--surface);color:var(--muted)}
.db-status svg{width:13px;height:13px;flex-shrink:0}
.invite-card{background:#fff;border:1px solid var(--border);border-radius:var(--rl);padding:22px;max-width:560px;font-size:13px;color:var(--muted);line-height:1.7}
.invite-card .invite-title{font-size:15px;font-weight:500;color:var(--navy);margin-bottom:8px}
.invite-card ol{margin:8px 0 0 18px}
.invite-card code{background:var(--surface);padding:1px 6px;border-radius:4px;font-size:12px;color:var(--navy)}
.td-center{text-align:center;color:var(--faint);padding:20px}
.role-sel{padding:5px 8px;font-size:12px;border:1px solid var(--border);border-radius:6px;background:#fff;font-family:inherit}
.modal-bg{position:fixed;inset:0;background:rgba(14,34,53,.5);display:none;align-items:center;justify-content:center;z-index:9000;padding:16px}
.modal-bg.open{display:flex}
.modal{background:#fff;border-radius:var(--rl);padding:24px;width:100%;max-width:500px;border:1px solid var(--border);max-height:92vh;overflow-y:auto}
.modal-hdr{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:4px}
.modal-title{font-family:'DM Serif Display',serif;font-size:19px;color:var(--navy)}
.modal-x{background:none;border:none;font-size:20px;color:var(--muted);cursor:pointer;line-height:1;padding:0;flex-shrink:0}
.modal-sub{font-size:13px;color:var(--muted);margin-bottom:18px;line-height:1.5}
.mf-label{display:block;font-size:10px;font-weight:500;color:var(--muted);letter-spacing:.5px;text-transform:uppercase;margin-bottom:5px}
.mf-input{width:100%;padding:9px 11px;font-size:13px;font-family:'DM Sans',sans-serif;border:1px solid var(--border);border-radius:var(--r);background:var(--surface);color:var(--text);outline:none;transition:border-color .15s}
.mf-input:focus{border-color:var(--accent)}
textarea.mf-input{resize:vertical}
.mf-group{margin-bottom:13px}
.mf-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:13px}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}
.succ-toast{background:#E1F5EE;border-radius:var(--r);padding:10px 13px;font-size:13px;color:#085041;font-weight:500;margin-top:11px;display:none;align-items:center;gap:7px}
.succ-toast.show{display:flex}
.succ-toast svg{width:14px;height:14px;flex-shrink:0}
@media(max-width:680px){
:root{--panel:100vw;--topbar:48px}
.user-nm{display:none}
.tb-btn span{display:none}
.panel{top:0;left:0;bottom:0;border-radius:0;box-shadow:none;transform:translateX(-100%)}
.panel.open{transform:translateX(0)}
.panel-toggle{display:flex!important}
.mf-row{grid-template-columns:1fr}
}
