:root{
  --ink:#22241f;
  --parchment:#efe8d6;
  --parchment-2:#e6dcc2;
  --paper-edge:#c9bd9c;
  --brass:#9c7a3c;
  --phone:#3e6e8e;
  --drone:#c1622d;
  --camera:#3c6e52;
  --danger:#a3372c;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;min-height:100%;font-family:Georgia,'Iowan Old Style','Times New Roman',serif;background:var(--ink);color:var(--ink);}
a{color:var(--brass);}

/* ---------- Top nav ---------- */
#topnav{
  display:flex;align-items:center;justify-content:space-between;
  background:var(--ink);border-bottom:1px solid #3a3d33;
  padding:9px 18px;box-shadow:0 2px 6px rgba(0,0,0,0.35);
  position:relative;z-index:600;
}
#topnav .nav-left{display:flex;align-items:center;gap:16px;}
#topnav .brand{font-variant:small-caps;font-size:18px;letter-spacing:0.06em;margin-right:4px;color:var(--parchment);}
#topnav .navlink{
  text-decoration:none;color:var(--parchment-2);font-size:13px;
  padding:5px 9px;border:1px solid transparent;
}
#topnav .navlink.on{border-color:var(--brass);background:rgba(156,122,60,0.18);color:var(--parchment);}
#topnav .navlink:hover{border-color:#4a4d40;color:var(--parchment);}
#topnav .nav-right{display:flex;align-items:center;gap:12px;}
#topnav .whoami{font-family:'Courier New',monospace;font-size:11px;color:#8a8d7f;}

/* ---------- Map page ---------- */
#app{position:relative;width:100%;height:calc(100vh - 46px);overflow:hidden;}
#map{position:absolute;inset:0;background:var(--ink);}
.leaflet-container{font-family:Georgia,serif;}

#panel{
  position:absolute;top:14px;left:14px;z-index:500;
  background:var(--parchment);border:1px solid var(--paper-edge);
  box-shadow:0 2px 6px rgba(0,0,0,0.25);padding:12px;width:190px;
}
#panel .label{font-family:'Courier New',monospace;font-size:10px;letter-spacing:0.12em;color:#6b6250;text-transform:uppercase;margin-bottom:8px;}
.chip{display:flex;align-items:center;gap:8px;padding:7px 8px;margin-bottom:5px;border:1px solid var(--paper-edge);background:#f7f2e4;cursor:pointer;font-size:13px;color:var(--ink);user-select:none;transition:opacity 0.15s;}
.chip:last-child{margin-bottom:0;}
.chip.off{opacity:0.38;}
.chip .dot{width:11px;height:11px;border-radius:50%;flex-shrink:0;border:1px solid rgba(0,0,0,0.25);}
.chip .count{margin-left:auto;font-family:'Courier New',monospace;font-size:11px;color:#8a7f68;}
.dot.phone{background:var(--phone);}
.dot.drone{background:var(--drone);}
.dot.camera{background:var(--camera);}

#addBtn{
  position:absolute;bottom:22px;right:20px;z-index:500;
  background:var(--brass);color:#fbf7ec;border:1px solid #7a5f2c;
  padding:12px 20px;font-family:Georgia,serif;font-size:14px;letter-spacing:0.03em;
  cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,0.35);
}
#addBtn.active{background:var(--danger);border-color:#7a251c;}
#addBtn:hover{filter:brightness(1.06);}

#hint{
  position:absolute;bottom:70px;right:20px;z-index:500;
  background:rgba(239,232,214,0.95);border:1px solid var(--paper-edge);
  padding:6px 12px;font-size:12px;color:var(--ink);display:none;max-width:220px;text-align:right;
}
#hint.show{display:block;}

.overlay{position:absolute;inset:0;z-index:800;background:rgba(20,18,12,0.55);display:none;align-items:center;justify-content:center;}
.overlay.show{display:flex;}
.sheet{background:var(--parchment);border:1px solid var(--paper-edge);box-shadow:0 8px 24px rgba(0,0,0,0.4);width:320px;max-width:90vw;padding:18px;}
.sheet h2{margin:0 0 4px;font-size:16px;color:var(--ink);font-weight:normal;font-variant:small-caps;letter-spacing:0.04em;}
.sheet .coords{font-family:'Courier New',monospace;font-size:11px;color:#8a7f68;margin-bottom:14px;}
.field{margin-bottom:12px;}
.field label{display:block;font-family:'Courier New',monospace;font-size:10px;letter-spacing:0.1em;text-transform:uppercase;color:#6b6250;margin-bottom:6px;}
.typerow{display:flex;gap:6px;}
.typebtn{flex:1;border:1px solid var(--paper-edge);background:#f7f2e4;padding:8px 4px;text-align:center;cursor:pointer;font-size:12px;color:var(--ink);}
.typebtn.sel{background:var(--ink);color:#efe8d6;border-color:var(--ink);}
.sheet input[type=text], .sheet input[type=password], .sheet textarea, .sheet-static input[type=text], .sheet-static input[type=password], .sheet-static textarea{
  width:100%;border:1px solid var(--paper-edge);background:#f7f2e4;padding:7px 8px;font-family:Georgia,serif;font-size:13px;color:var(--ink);resize:none;
}
.sheet input[type=file]{font-size:12px;width:100%;}
#photoPreview{margin-top:8px;max-width:100%;max-height:120px;display:none;border:1px solid var(--paper-edge);}
.btnrow{display:flex;gap:8px;margin-top:16px;}
.btnrow button, .btnrow a{flex:1;padding:9px;border:1px solid var(--paper-edge);cursor:pointer;font-family:Georgia,serif;font-size:13px;}
.btn-cancel{background:#f7f2e4;color:var(--ink);}
.btn-save{background:var(--brass);color:#fbf7ec;border-color:#7a5f2c;}
.btn-save:disabled{opacity:0.5;cursor:default;}
.err{color:var(--danger);font-size:11px;margin-top:6px;display:none;}
.err.show{display:block;}

.popup-card{width:200px;font-family:Georgia,serif;}
.popup-card img{width:100%;display:block;border-bottom:1px solid var(--paper-edge);margin-bottom:6px;}
.popup-card .ptitle{font-size:13px;color:var(--ink);display:flex;align-items:center;gap:6px;margin-bottom:2px;}
.popup-card .pdate{font-family:'Courier New',monospace;font-size:10px;color:#8a7f68;margin-bottom:4px;}
.popup-card .pnote{font-size:12px;color:#4a463c;margin-bottom:8px;white-space:pre-wrap;}
.popup-card .pactions{display:flex;gap:10px;}
.popup-card .pdel, .popup-card .pedit{font-family:'Courier New',monospace;font-size:10px;cursor:pointer;text-decoration:underline;background:none;border:none;padding:0;}
.popup-card .pdel{color:var(--danger);}
.popup-card .pedit{color:var(--brass);}
.leaflet-popup-content-wrapper{background:var(--parchment);border-radius:0;border:1px solid var(--paper-edge);}
.leaflet-popup-content{margin:10px;}
.leaflet-popup-tip{background:var(--parchment);}

#loading{position:absolute;inset:0;z-index:900;background:var(--ink);display:flex;align-items:center;justify-content:center;color:#efe8d6;font-family:'Courier New',monospace;font-size:13px;letter-spacing:0.08em;}
#toast{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);z-index:900;background:var(--ink);color:#efe8d6;padding:9px 18px;font-size:12px;font-family:'Courier New',monospace;opacity:0;pointer-events:none;transition:opacity 0.3s;}
#toast.show{opacity:1;}

/* ---------- Auth pages ---------- */
.authwrap{display:flex;align-items:center;justify-content:center;min-height:calc(100vh - 46px);padding:20px;background:var(--ink);}
.sheet-static{background:var(--parchment);border:1px solid var(--paper-edge);box-shadow:0 8px 24px rgba(0,0,0,0.4);width:340px;max-width:100%;padding:22px;}
.sheet-static h2{margin:0 0 14px;font-size:17px;font-weight:normal;font-variant:small-caps;letter-spacing:0.04em;}
.hintline{font-size:12px;color:#6b6250;margin:14px 0 0;text-align:center;}

/* ---------- Gallery ---------- */
.gallerywrap{max-width:1100px;margin:0 auto;padding:24px 18px 60px;background:var(--ink);min-height:calc(100vh - 46px);}
.galleryhead{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:20px;}
.galleryhead h1{color:var(--parchment);font-weight:normal;font-variant:small-caps;font-size:24px;letter-spacing:0.05em;margin:0;}
.galleryfilters{display:flex;gap:8px;flex-wrap:wrap;}
.pill{text-decoration:none;font-size:12px;color:var(--ink);background:var(--parchment);border:1px solid var(--paper-edge);padding:6px 12px;}
.pill.on{background:var(--brass);color:#fbf7ec;border-color:#7a5f2c;}
.emptynote{color:var(--parchment-2);font-size:14px;}
.emptynote a{color:var(--brass);}

.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px;}
.card{background:var(--parchment);border:1px solid var(--paper-edge);box-shadow:0 2px 6px rgba(0,0,0,0.25);overflow:hidden;display:flex;flex-direction:column;}
.card img{width:100%;height:150px;object-fit:cover;display:block;border-bottom:1px solid var(--paper-edge);}
.card .noimg{width:100%;height:150px;display:flex;align-items:center;justify-content:center;font-size:40px;background:var(--parchment-2);border-bottom:1px solid var(--paper-edge);}
.card-body{padding:10px 12px 12px;}
.card-type{font-size:13px;color:var(--ink);}
.card-date{font-family:'Courier New',monospace;font-size:10px;color:#8a7f68;margin:2px 0 6px;}
.card-note{font-size:12px;color:#4a463c;margin-bottom:8px;}
.card-actions{display:flex;gap:12px;}
.minilink{font-family:'Courier New',monospace;font-size:10px;text-decoration:underline;color:var(--brass);}
.minilink.edit{color:var(--camera);}

/* ---------- Edit page ---------- */
.editwrap{display:flex;justify-content:center;padding:26px 18px 60px;background:var(--ink);min-height:calc(100vh - 46px);}
.edit-sheet{width:420px;max-width:100%;}
.editphoto{width:100%;max-height:220px;object-fit:cover;border:1px solid var(--paper-edge);margin-bottom:14px;}
#editMap{height:220px;width:100%;border:1px solid var(--paper-edge);}

/* ---------- Equipment / tag chips on map panel ---------- */
.chip .dot{background:inherit;}
.label-tags{margin-top:14px;}
.panelhint{font-size:11px;color:#8a7f68;padding:4px 2px;}
.panelhint2{font-weight:normal;text-transform:none;letter-spacing:0;font-family:Georgia,serif;font-size:10px;color:#8a7f68;}
#tagChips{display:flex;flex-wrap:wrap;gap:6px;}
.tagchip{
  font-size:11px;padding:5px 9px;border:1px solid var(--paper-edge);
  background:#f7f2e4;color:var(--ink);cursor:pointer;user-select:none;
  font-family:'Courier New',monospace;
}
.tagchip.on{background:var(--ink);color:var(--parchment);border-color:var(--ink);}

.sheet select, .sheet-static select{
  width:100%;border:1px solid var(--paper-edge);background:#f7f2e4;
  padding:7px 8px;font-family:Georgia,serif;font-size:13px;color:var(--ink);
}

.card-tags{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:6px;}
.tagpillsmall{
  font-family:'Courier New',monospace;font-size:10px;color:#5b6e63;
  background:#e3ded0;padding:2px 6px;
}
.pilldot{width:9px;height:9px;border-radius:50%;display:inline-block;margin-right:4px;vertical-align:middle;}

.galleryfilters-tags{margin-top:-4px;margin-bottom:20px;}
.tagpill{font-family:'Courier New',monospace;}

/* ---------- Admin pages (equipment / tags) ---------- */
.adminwrap{max-width:640px;margin:0 auto;padding:28px 18px 60px;background:var(--ink);min-height:calc(100vh - 46px);}
.adminwrap h1{color:var(--parchment);font-weight:normal;font-variant:small-caps;font-size:22px;letter-spacing:0.05em;margin:0 0 6px;}
.admintext{color:var(--parchment-2);font-size:13px;margin:0 0 18px;line-height:1.5;}
.okmsg{background:#e2ecd9;border:1px solid #9db98a;color:#3c6e52;font-size:12px;padding:8px 12px;margin-bottom:14px;}
.admintable{width:100%;border-collapse:collapse;background:var(--parchment);border:1px solid var(--paper-edge);margin-bottom:20px;}
.admintable tr{border-bottom:1px solid var(--paper-edge);}
.admintable tr:last-child{border-bottom:none;}
.admintable td{padding:8px 10px;vertical-align:middle;}
.swatchcell{width:28px;}
.swatch{display:inline-block;width:14px;height:14px;border-radius:50%;border:1px solid rgba(0,0,0,0.25);}
.namecell{width:100%;}
.countcell{font-family:'Courier New',monospace;font-size:11px;color:#8a7f68;white-space:nowrap;}
.delcell{white-space:nowrap;}
.emptyrow{color:#8a7f68;font-size:13px;text-align:center;padding:16px;}
.inlineform{display:flex;gap:6px;align-items:center;}
.inlineform input[type=text]{
  border:1px solid var(--paper-edge);background:#fff;padding:5px 7px;
  font-family:Georgia,serif;font-size:13px;color:var(--ink);width:100%;
}
.minibtn{
  border:1px solid var(--paper-edge);background:#e6dcc2;color:var(--ink);
  padding:5px 10px;font-size:12px;cursor:pointer;white-space:nowrap;
}
.minibtn.danger{background:#f3ddd8;border-color:#c99;color:var(--danger);}
.addform{display:flex;gap:8px;}
.addform input[type=text]{
  flex:1;border:1px solid var(--paper-edge);background:var(--parchment);
  padding:9px 10px;font-family:Georgia,serif;font-size:13px;color:var(--ink);
}
.addform .btn-save{padding:9px 16px;border:1px solid #7a5f2c;background:var(--brass);color:#fbf7ec;cursor:pointer;font-family:Georgia,serif;font-size:13px;white-space:nowrap;}

/* ---------- Import page ---------- */
.adminwrap code{background:#3a3d33;color:#efe8d6;padding:1px 5px;font-size:12px;}
.jsonbox{
  width:100%;min-height:260px;border:1px solid var(--paper-edge);background:var(--parchment);
  color:var(--ink);font-family:'Courier New',monospace;font-size:12px;padding:10px;
  resize:vertical;margin-bottom:14px;
}
.misslist{margin:6px 0 0;padding-left:18px;font-size:12px;max-height:160px;overflow:auto;}
