*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:#1d2b36;background:#f4f7fa}
a{color:#0b6aa2}.top{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:10px 18px;background:#0b3d5c;color:#fff}
.brand{color:#fff;font-weight:800;font-size:1.3em;text-decoration:none}.tag{font-style:italic;opacity:.85;flex:1}
nav a{color:#fff;margin-left:14px;text-decoration:none}.btn,button{display:inline-block;background:#f5a623;color:#1d2b36!important;border:0;padding:8px 14px;border-radius:6px;font-weight:700;cursor:pointer;text-decoration:none;font-size:1em}
button.danger{background:#d9534f;color:#fff!important}button.ghost{background:#dde6ee}
#map{height:calc(100vh - 100px);width:100%}#map.small{height:320px;border-radius:8px}
main{max-width:1100px;margin:20px auto;padding:0 16px}footer{text-align:center;padding:14px;color:#678;font-size:.9em}
.card{background:#fff;border-radius:10px;padding:18px;box-shadow:0 1px 4px rgba(0,0,0,.08);margin-bottom:18px}
.facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px}.facts div{background:#eef4f9;padding:10px;border-radius:8px}
.facts b{display:block;font-size:.8em;color:#567;text-transform:uppercase}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.gallery figure{margin:0;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.1)}
.gallery img{width:100%;height:180px;object-fit:cover;display:block}.gallery figcaption{padding:8px;font-size:.9em}
.hero{width:100%;max-height:440px;object-fit:cover;border-radius:10px}
.sample{display:inline-block;background:#ffe08a;color:#6b4e00;padding:2px 8px;border-radius:4px;font-size:.8em;font-weight:700}
label{display:block;margin:10px 0 4px;font-weight:600}input[type=text],input[type=email],input[type=password],input[type=number],textarea,select{width:100%;padding:8px;border:1px solid #bcc9d4;border-radius:6px;font:inherit}
textarea{min-height:90px}.row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.msg{padding:10px 14px;border-radius:6px;margin-bottom:14px}
.ok{background:#dff3e3}.err{background:#fbe1e1}.photo-marker img{width:56px;height:56px;border-radius:8px;border:3px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.4);object-fit:cover}
.queue{display:grid;grid-template-columns:420px 1fr;gap:16px;border-top:1px solid #e2e8ee;padding:14px 0}.queue img{width:100%;max-height:360px;object-fit:contain;background:#1d2b36;border-radius:6px}@media(max-width:800px){.queue{grid-template-columns:1fr}}
table{width:100%;border-collapse:collapse}td,th{padding:6px;border-bottom:1px solid #e2e8ee;text-align:left}
.hint{color:#678;font-size:.9em}.popup img{width:180px;height:120px;object-fit:cover;border-radius:6px}
.drop{border:3px dashed #9fb6c8;border-radius:12px;padding:30px;text-align:center;background:#f8fbfd;margin-top:12px}.drop.over{background:#e3f1fb;border-color:#0b6aa2}
.bgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px;margin-bottom:90px}
.bcard{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.1);overflow:hidden;border-top:5px solid #ccc;font-size:.88em}
.bcard.nogps{border-top-color:#d9534f;background:#fff6f6}.bcard img.th{width:100%;height:300px;object-fit:contain;background:#1d2b36;display:block;cursor:zoom-in}
.bcard .mm{height:110px}.bcard .body{padding:8px}.bcard input{padding:4px;font-size:.95em}.bcard select{padding:4px;font-size:.95em}
.gtag{display:inline-block;color:#fff;border-radius:4px;padding:1px 7px;font-weight:700}.flag{color:#b52b27;font-weight:700}
.st{font-weight:700}.st.ok{color:#1d7a35}.st.skip{color:#5b6b78;font-weight:600}.msg.dupnote{background:#eef4f9;color:#33475b}.st.fail{color:#b52b27}.st.up{color:#0b6aa2}
.progress{height:16px;background:#e2e8ee;border-radius:8px;overflow:hidden;margin-bottom:6px}#pbar{height:100%;width:0;background:#2a9d4b;transition:width .2s}
.sticky{position:sticky;bottom:0;z-index:1000;margin:0}.gcard{display:grid;grid-template-columns:auto 1fr 1fr 1fr;flex-wrap:wrap;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid #e2e8ee}

.gphotos{grid-column:1/-1;display:flex;gap:10px;overflow-x:auto;padding:4px 0 8px}.gphotos img{height:220px;max-width:340px;object-fit:contain;background:#1d2b36;border-radius:6px;cursor:zoom-in;flex:0 0 auto}
.lb{position:fixed;inset:0;background:rgba(0,0,0,.92);z-index:5000;display:flex;align-items:center;justify-content:center}.lb img{max-width:92vw;max-height:86vh;object-fit:contain}
.lb button{position:absolute;background:rgba(255,255,255,.15);color:#fff!important;font-size:2em;padding:6px 16px}.lb .lp{left:16px;top:50%}.lb .ln{right:16px;top:50%}.lb .lx{top:12px;right:16px}
.lb .lc{position:absolute;bottom:12px;left:0;right:0;text-align:center;color:#fff}
@media(max-width:420px){.bgrid{grid-template-columns:1fr}}
/* bigger photos in admin bulk import */
.bgrid.big{grid-template-columns:repeat(auto-fill,minmax(520px,1fr))}.bgrid.big img.th{height:460px}
@media(max-width:600px){.bgrid.big{grid-template-columns:1fr}.bgrid.big img.th{height:300px}}
.bcard .tools{display:flex;gap:6px;margin:4px 0}.bcard .tools button{padding:4px 8px;font-size:.9em}
/* pinpoint modal */
.pp{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:4000;display:flex;align-items:center;justify-content:center}
.pp-box{background:#fff;width:96vw;height:92vh;border-radius:10px;display:flex;flex-direction:column;overflow:hidden}
.pp-head,.pp-foot{padding:8px 12px;display:flex;gap:12px;align-items:center}.pp-head .hint{flex:1}.pp-foot{justify-content:flex-end;border-top:1px solid #e2e8ee}
.pp-body{flex:1;display:flex;min-height:0}.pp-map{flex:1}.pp-photo{width:26%;object-fit:contain;background:#1d2b36}
.pp-side{width:300px;padding:10px;overflow:auto;border-left:1px solid #e2e8ee}.pp-list{padding-left:20px}.pp-list li{cursor:pointer;padding:6px;border-radius:6px;margin-bottom:4px}
.pp-list li:hover,.pp-list li.sel{background:#e3f1fb}.pp-cand{border-radius:50%;color:#fff;font-weight:800;text-align:center;line-height:24px;border:2px solid #fff;box-shadow:0 1px 4px #000}
.pp-cand.osm{background:#2a9d4b}.pp-cand.image{background:#d9822b}
@media(max-width:800px){.pp-body{flex-direction:column}.pp-photo{width:100%;height:25%}.pp-side{width:100%;height:30%}}

/* tower page: whole photos, larger */
.hero{max-height:640px;height:auto;object-fit:contain;background:#1d2b36;cursor:zoom-in;display:block}
.tgallery{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}.tgallery img{height:300px;object-fit:contain;background:#1d2b36;cursor:zoom-in}
.diff td{vertical-align:top}.diff .chg{background:#fff7d6}.diff .old{color:#8a2b2b;white-space:pre-wrap}.diff textarea{min-height:60px}
.hp{position:absolute;left:-5000px}
.pp-cand.site{background:#0b6aa2}
#smap,#emap{height:340px;border-radius:8px}

/* update3: list thumbnails, geocoding / snapping notes */
.tlist td{vertical-align:middle}.tthumb{width:76px}.tthumb img{width:64px;height:64px;object-fit:cover;border-radius:8px;display:block;background:#e3ebf2}
.place{font-size:1.05em;color:#345}
.geonote{margin:6px 0;font-size:.92em}.snapnote{display:inline-block;background:#e6f5ea;border:1px solid #9fd3ad;border-radius:6px;padding:4px 8px}
button.sm{padding:2px 8px;font-size:.85em;margin-left:4px}input.autofilled{background:#f3fbf5}
.osm-wt{font-size:18px;line-height:24px;text-align:center;filter:drop-shadow(0 1px 2px rgba(0,0,0,.5))}
.gplace{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,1fr);gap:6px}@media(max-width:700px){.gplace{grid-template-columns:1fr 1fr}}
/* update4: grouped approval queue */
.qgroup h3{margin-top:0}.qgroup .match{color:#1d7a35}
.cmp{display:grid;grid-template-columns:1fr 1fr;gap:16px}.cmp.single{grid-template-columns:1fr}@media(max-width:900px){.cmp{grid-template-columns:1fr}}
.cmp-side{background:#f6f9fb;border-radius:8px;padding:10px}.cmp-title{margin-bottom:6px}
.cmp-img{display:block;width:100%;max-height:520px;object-fit:contain;background:#1d2b36;border-radius:6px;margin-bottom:6px}
.qphoto{border-bottom:1px solid #e2e8ee;padding-bottom:8px;margin-bottom:8px}.splitf{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:4px}.splitf select{width:auto;max-width:100%;flex:1}
.confirmf{margin:12px 0}button.big{font-size:1.15em;padding:12px 20px;background:#2a9d4b;color:#fff!important}
details.diff-tower{border:1px solid #dde6ee;border-radius:8px;padding:8px 12px;margin:8px 0}details.diff-tower summary{cursor:pointer;font-weight:700}
.qmap{height:340px;border-radius:8px}.tsel{height:auto}
.bcmp{grid-column:1/-1;display:flex;gap:10px;align-items:flex-start;background:#eaf6ee;border-radius:8px;padding:8px}.bcmp img{height:220px;max-width:340px;object-fit:contain;background:#1d2b36;border-radius:6px}
.gphoto{display:flex;flex-direction:column;gap:4px;flex:0 0 auto}.gphoto select{font-size:.85em;padding:3px;max-width:340px}
.gconfirmed{color:#1d7a35;font-weight:700}
.cmp{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.cmp.single{grid-template-columns:minmax(0,1fr)}
.cmp.single .cmp-side{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}.cmp.single .cmp-title{grid-column:1/-1}
@media(max-width:900px){.cmp{grid-template-columns:minmax(0,1fr)}}
main.wide{max-width:1400px}

/* update5: photo clusters */
.photo-marker.small img{width:40px;height:40px;border-width:2px}
.photo-cluster{position:relative}.photo-cluster img{width:100%;height:100%;object-fit:cover;border-radius:8px;border:3px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.45);display:block}
.photo-cluster .pc-n{position:absolute;top:-8px;right:-8px;min-width:22px;height:22px;padding:0 5px;border-radius:11px;background:#0b6aa2;color:#fff;font:700 12px/22px system-ui,sans-serif;text-align:center;border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.4)}
.photo-cluster.nophoto{background:#0b6aa2;border-radius:50%;border:3px solid #fff}.photo-cluster.nophoto .pc-n{position:static;display:block;background:none;border:0;box-shadow:none;line-height:34px}

/* update6: photo credit */
fieldset.credit{border:1px solid #cfdbe5;border-radius:8px;padding:6px 14px 10px;margin:10px 0;background:#f8fbfd}fieldset.credit legend{font-weight:700;padding:0 4px}
label.chk{display:flex;gap:8px;align-items:center;font-weight:600}label.chk input{width:auto}fieldset.credit input:disabled{background:#eceff2;color:#99a}
.creditf{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:4px 0}.creditf label{margin:0;width:100%}.creditf input{flex:1}
/* update8: logo */
.brand{display:flex;align-items:center}.brand img.logo{height:40px;width:auto;display:block}
@media(max-width:600px){.top{gap:8px 12px;padding:8px 12px}.brand img.logo{height:34px}.tag{flex-basis:100%;order:3;font-size:.85em}nav{margin-left:auto}nav a{margin-left:10px}}

/* update12: thank-you page */
.done-card{max-width:760px;margin:30px auto}.msg.thanks{padding:18px 20px}.msg.thanks h1{margin:0 0 6px;font-size:1.8em}

/* update19: admin photo primary/delete */
.adm-photos figure.is-primary{outline:3px solid #f5a623}
.primary-badge{display:inline-block;background:#f5a623;color:#0b3d5c;font-weight:700;font-size:.8em;padding:2px 8px;border-radius:999px}
.adm-photos .ph-acts{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.adm-photos .ph-acts button{padding:4px 10px;font-size:.85em;margin:0}

/* update21 */
.row3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}@media(max-width:640px){.row3{grid-template-columns:1fr}}
.dropzone{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;width:100%;box-sizing:border-box;min-height:170px;margin:6px 0 10px;padding:22px 16px;border:3px dashed #f5a623;border-radius:14px;background:#fff8ec;color:#0b3d5c;text-align:center;cursor:pointer;transition:background .15s,border-color .15s}
.dropzone:hover,.dropzone.over,.dropzone:focus-within{background:#ffefd2;border-color:#e08e00}.dropzone.has{border-style:solid;min-height:120px}
.dropzone input[type=file]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.dz-icon{font-size:48px;line-height:1}.dz-main{font-size:1.45em;font-weight:800}.dz-sub{font-size:.95em;color:#5a6b78}
.dzfiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px;margin-bottom:8px}.dzfiles:empty{display:none}
.dzfiles figure{margin:0;background:#1d2b36;border-radius:8px;overflow:hidden}.dzfiles img{width:100%;height:110px;object-fit:contain;display:block}.dzfiles figcaption{font-size:.8em;color:#fff;padding:3px 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* update22: photo editor */
body.pe-open{overflow:hidden}
.pe-ov{position:fixed;inset:0;z-index:5000;background:rgba(10,20,30,.82);display:flex;align-items:center;justify-content:center;padding:12px}
.pe-box{background:#fff;border-radius:12px;width:min(1100px,100%);height:min(860px,100%);display:flex;flex-direction:column;overflow:hidden}
.pe-head{padding:10px 14px;border-bottom:1px solid #e3e9ee}
.pe-stage{flex:1;min-height:200px;background:#111;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}
.pe-cv{display:block;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.pe-stage{touch-action:none}.pe-msg{position:absolute;color:#fff}
.pe-tools,.pe-foot{display:flex;flex-wrap:wrap;gap:10px 18px;align-items:center;padding:8px 14px;border-top:1px solid #e3e9ee}
.pe-grp{display:inline-flex;gap:4px;align-items:center}.pe-asp.on{background:#f5a623;color:#0b3d5c;font-weight:700}
.pe-light{flex-wrap:wrap;gap:4px 12px}.pe-light label{display:inline-flex;gap:6px;align-items:center;white-space:nowrap}.pe-light input[type=range]{width:130px}.pe-auto.on{background:#f5a623;color:#0b3d5c;font-weight:700}
.pe-str input[type=range]{width:220px}.pe-str input[type=number]{width:70px;padding:3px 6px}
.pe-btns{display:inline-flex;gap:4px;flex-wrap:wrap;margin:4px 0}
.pe-btns [hidden],.tools [hidden]{display:none!important}
/* update23: tower editor photo uploader */
.tphotos{border:1px solid #dde6ee;border-radius:10px;padding:10px 14px;margin:14px 0}
.tp-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:10px;margin:8px 0}
.tp-item{display:flex;gap:10px;background:#f8fbfd;border:1px solid #e3e9ee;border-radius:8px;padding:8px}.tp-item.failed{border-color:#d9534f}.tp-item.done{opacity:.75}
.tp-item img{width:120px;height:120px;object-fit:contain;background:#1d2b36;border-radius:6px;flex:none}
.tp-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}.tp-name{font-size:.9em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tp-acts{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.tp-prim{display:inline-flex;gap:4px;align-items:center;font-size:.9em;margin-right:6px}
/* update24: admin towers list + merge */
.tfilter{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:6px 0 10px}.tfilter input{width:auto;flex:1 1 160px;margin:0}
.tl-thumb{width:48px;height:48px;object-fit:cover;border-radius:6px;display:block}.tlist td{vertical-align:middle}
.dupbox{background:#fff6e5;border:1px solid #f5c26b}.dupbox ul{margin:4px 0 0 18px;padding:0}.dupflag{color:#b35c00;font-size:.85em;font-weight:700}
.mgrid{display:grid;gap:12px;margin:10px 0}.mcol{border:2px solid #e3e9ee;border-radius:10px;padding:10px;background:#f8fbfd}.mcol.kept{border-color:#f5a623;background:#fffaf0}
.mphoto{width:100%;height:240px;object-fit:contain;background:#1d2b36;border-radius:8px;display:block}.mnone{display:flex;align-items:center;justify-content:center;color:#aab}
.mmap{height:150px;border-radius:8px;margin:6px 0}.mkeep{display:flex;gap:6px;align-items:center;margin-bottom:6px}
.mfields{width:100%}.mfields td{vertical-align:top}.mopt{display:flex;gap:6px;align-items:flex-start;font-weight:400}
.mcovers{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 12px}.mcov{display:flex;flex-direction:column;align-items:center;gap:2px}.mcov img{width:90px;height:90px;object-fit:cover;border-radius:6px}

/* update26: public pre-submit photo editing */
.dzfiles figure{position:relative}.dzfiles figure.edited{outline:2px solid #f5a623}.dzbtns{display:flex;gap:4px;flex-wrap:wrap;padding:0 6px 6px}.dzbtns button{flex:1;min-height:34px}
.bcard .tools .pe1,.bcard .tools .pe1r{min-height:34px}
@media(max-width:600px){.pe-ov{padding:0}.pe-box{border-radius:0;height:100%}.pe-str input[type=range]{width:140px}.pe-light input[type=range]{width:96px}.pe-tools,.pe-foot{gap:8px;padding:6px 8px}.pe-foot .pe-save,.pe-foot .pe-cancel{min-height:40px}}
@media(max-width:600px){.gcard{grid-template-columns:auto minmax(0,1fr)}.gphotos{max-width:100%}.gcard>span{overflow-wrap:anywhere}.gcard>*{min-width:0}.bcmp{flex-wrap:wrap}.bcmp img{max-width:100%;height:auto;max-height:220px}.bcmp>div{min-width:0}.gcard select,.gcard input{max-width:100%}}
.pe-ov{width:100%;max-width:100vw}
/* update27: keep editor footer one stable line so the canvas never jumps while dragging */
.pe-foot{flex-wrap:nowrap}.pe-foot .pe-info{flex:1 1 0;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
@media(max-width:600px){.pe-foot .pe-info{font-size:.78em}}

/* update28: admin library import (iPad-friendly large uploads) */
.lib-drop{border:3px dashed #f5a623;border-radius:14px;padding:28px 16px;text-align:center;background:#fff8ec;margin-top:12px;cursor:pointer}
.lib-drop.over{background:#ffefd2;border-color:#e08e00}
.lib-tip{background:#eef4f9;border-left:4px solid #0b6aa2;padding:10px 14px;border-radius:6px;margin:10px 0}
.lib-tip.warn{background:#fff6e5;border-left-color:#f5a623}
.lib-tip.bad{background:#fbe1e1;border-left-color:#d9534f}
.lib-stats{display:flex;flex-wrap:wrap;gap:10px 18px;margin:8px 0;font-size:.95em}
.lib-stats b{font-variant-numeric:tabular-nums}
.lib-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.lib-bar .progress{flex:1;min-width:160px;margin:0}
.lib-list{max-height:50vh;overflow:auto;border:1px solid #e2e8ee;border-radius:8px;margin-top:10px}
.lib-row{display:grid;grid-template-columns:56px 1fr auto;gap:8px;align-items:center;padding:6px 8px;border-bottom:1px solid #eef2f5;font-size:.88em}
.lib-row img{width:56px;height:56px;object-fit:cover;border-radius:6px;background:#1d2b36}
.lib-row.nogps{background:#fff6f6}.lib-row.done{opacity:.7}.lib-row.skip{opacity:.55}.lib-row.fail{background:#fbe1e1}
.lib-meta{min-width:0}.lib-meta .fn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.lib-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin-top:10px}
.lib-g{background:#f6f9fb;border-radius:8px;padding:10px;border:1px solid #e3e9ee}
.lib-g.noloc{background:#fff6f6;border-color:#f0c0c0}
@media(max-width:600px){.lib-row{grid-template-columns:48px 1fr}.lib-row .lib-st{grid-column:2}.lib-bar button{min-height:44px;flex:1 1 40%}}
.lib-ph{display:block;width:56px;height:56px;border-radius:6px;background:#1d2b36}
/* update34: primary-photo picker in the approval queue */
.primpick{display:inline-flex;align-items:center;gap:5px;margin:2px 8px 4px 0;font-size:.92em;cursor:pointer;padding:3px 9px;border:1px solid #cfdbe5;border-radius:999px;background:#f6f9fb;font-weight:600}
.primpick input{width:auto;margin:0}.primpick .star{color:#b8c4ce}.primpick:has(input:checked){background:#fff4d6;border-color:#e0a800}.primpick:has(input:checked) .star{color:#e0a800}
.primbar{margin:0 0 8px}
/* update34: home-map tower count badge */
.wt-count{background:#0b3d5c;border:2px solid #f5a623;border-radius:999px;padding:6px 14px 6px 10px;box-shadow:0 1px 6px rgba(0,0,0,.35);font-weight:700;color:#fff;font-size:15px;line-height:1.2;display:flex;align-items:center;gap:7px;pointer-events:none;white-space:nowrap}
.wt-count .n{color:#f5a623;font-size:18px}.wt-count img{width:20px;height:20px}
.wt-count[hidden]{display:none}
.cmp.single .primbar{grid-column:1/-1}

/* update36: queue "attach to another existing tower" verification preview */
.tprev{border:1px solid #cdd8e3;border-radius:8px;padding:8px;margin:8px 0;background:#f6f9fc}.tprev.loading{opacity:.6}
.tprev-head{margin-bottom:6px}.tprev-body{display:flex;gap:8px;flex-wrap:wrap}
.tprev-photos{flex:1 1 260px;display:grid;grid-template-columns:repeat(4,1fr);gap:4px;align-content:start}
.tprev-photos a{position:relative;display:block}.tprev-photos img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:4px;display:block}
.tprev-photos .tp-main{grid-column:span 4}.tprev-photos .tp-main img{aspect-ratio:4/3}
.tp-star{position:absolute;left:4px;top:4px;background:rgba(0,0,0,.6);color:#ffd54a;font-size:.8em;padding:1px 6px;border-radius:4px}
.tp-more{position:absolute;inset:0;background:rgba(0,0,0,.55);color:#fff;font-size:1.3em;font-weight:700;display:flex;align-items:center;justify-content:center;border-radius:4px}
.tprev-map{flex:1 1 260px;min-height:240px;border-radius:6px}
.tp-mk span,.tp-key{display:inline-flex;width:22px;height:22px;border-radius:50%;align-items:center;justify-content:center;font:700 12px sans-serif;color:#fff;border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.6)}
.tp-mk.tw span,.tp-key.tw{background:#1f6fd1}.tp-mk.sub span,.tp-key.sub{background:#e0452b}.tp-key{width:18px;height:18px;font-size:10px;vertical-align:middle}
.tprev-dist{margin-top:6px}
/* update38: queue "Reset to photo GPS" */
.qreset-wrap{display:inline-block;margin-left:6px}.qreset:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}
.resetnote{display:inline-block;background:#eef4f9;border:1px solid #b7cde0;border-radius:6px;padding:4px 8px;color:#234}
/* update41: photo view direction (camera marker, cone, line of sight) */
.wt-cam{position:relative;pointer-events:auto}.wt-cam-rot{position:absolute;inset:0;transform-origin:50% 50%;filter:drop-shadow(0 1px 2px rgba(0,0,0,.6))}
.wt-cam-dot{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:12px;line-height:1;background:#fff;border:2px solid #e8590c;border-radius:50%;width:20px;height:20px;display:flex;align-items:center;justify-content:center}
.qview{margin:6px 0;padding:5px 8px;background:#fff4e6;border:1px solid #ffc078;border-radius:6px}.qview button{margin:2px 0}
.qview-key{color:#7a5a2a}.farnote{display:inline-block;margin-top:3px;background:#fff4e6;border:1px solid #ffc078;border-radius:6px;padding:3px 7px}
.osm-wt.incone{filter:drop-shadow(0 0 3px #ff8c1a) drop-shadow(0 0 2px #ff8c1a)}
.pp-cand.incone{box-shadow:0 0 0 3px #ff8c1a,0 1px 4px #000}.pp-incone{color:#c25400;font-weight:600}.pp-view{background:#fff4e6;border:1px solid #ffc078;border-radius:6px;padding:4px 6px;margin-bottom:6px}
