:root{color-scheme:dark;--bg:#090e15;--panel:#101822;--line:#24313c;--muted:#8b9ba9;--a:#77efcf;--gold:#e9b777}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:#edf4f6;font:14px/1.5 Inter,Segoe UI,sans-serif}button,a,input{font:inherit}button,a{transition:.18s}button{border:1px solid var(--line);background:#17232e;color:#eaf4f7;border-radius:7px;padding:10px 15px;cursor:pointer}button:hover,a:hover{filter:brightness(1.2)}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--a);outline-offset:3px}a{color:var(--a);text-decoration:none;cursor:pointer}header{height:86px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:0 30px;gap:20px}.brand{display:flex;gap:12px;align-items:center;color:#fff;font-weight:650;letter-spacing:3px}.brandmark{font-size:42px;color:var(--a);font-weight:300}.brand small{display:block;font-size:9px;color:var(--muted);letter-spacing:2px}.campaign{font-size:10px;letter-spacing:1.3px;color:#c4d0d8;display:flex;align-items:center;gap:12px}.campaign b{font-weight:400;border-left:1px solid var(--line);padding-left:16px}.dot,.maplabel i{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--a);box-shadow:0 0 12px #77efcf55}header button{border-color:#457365;color:var(--a);background:#112922}main{display:grid;grid-template-columns:342px 1fr;min-height:calc(100vh - 86px)}aside{padding:28px 24px;border-right:1px solid var(--line);background:linear-gradient(140deg,#121e29,#0b121b)}.eyebrow{font-size:9px;letter-spacing:1.4px;color:var(--a);display:flex;justify-content:space-between;gap:10px}.eyebrow>span:last-child{color:var(--muted)}h1{font-size:34px;line-height:1.12;letter-spacing:-1.4px;margin:20px 0 15px;font-weight:500}h1>span{color:var(--a)}.intro{font-size:12px;color:var(--muted);max-width:260px}.stats{display:flex;justify-content:space-between;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:18px 0;margin:24px 0}.stats strong{font-weight:450;font-size:27px;display:block}.stats small{font-size:8px;color:var(--muted);letter-spacing:1px}.search{display:flex;gap:8px;background:#090f16;border:1px solid var(--line);border-radius:6px;padding:9px 12px;color:var(--muted)}input{background:transparent;border:0;color:white;width:100%;font-size:12px;outline:0}.search>span{font-size:20px;line-height:1}.listhead{display:flex;justify-content:space-between;font-size:9px;letter-spacing:1px;color:var(--muted);margin:21px 0 12px}.listhead span{letter-spacing:0}#list{max-height:310px;overflow:auto;display:grid;gap:8px}.card{display:flex;align-items:center;gap:12px;text-align:left;padding:8px;border:1px solid transparent;background:#121e29;border-radius:6px;width:100%}.card.selected{background:#182e30;border-color:#4e9f8b}.card img{width:72px;height:53px;object-fit:cover;border-radius:3px}.card b{font-size:12px;font-weight:500;display:block}.card small{font-size:10px;color:var(--muted);display:block;margin-top:4px}.card .check{margin-left:auto;color:var(--a);font-size:12px}.archive{display:flex;align-items:center;gap:12px;padding:16px 0;border-top:1px solid var(--line);margin-top:22px}.archive>span{color:var(--a);font-size:24px}.archive b,.archive small{display:block}.archive b{font-size:12px;font-weight:500}.archive small{font-size:10px;color:var(--muted)}.archive a{margin-left:auto;font-size:11px}.localnote{font-size:10px;color:var(--muted);margin:0 0 14px}.wide{width:100%;font-size:11px}.subtle{background:transparent}footer{font-size:13px;letter-spacing:3px;color:#b7c6ce;padding-top:23px}footer span{display:block;font-size:7px;letter-spacing:1.6px;color:#6c8292}.workspace{padding:20px;display:flex;flex-direction:column;gap:18px;min-width:0}.mapwrap{height:45vh;min-height:300px;position:relative;border:1px solid var(--line);border-radius:10px;overflow:hidden}#map{height:100%;background:#18262a}.maptop{position:absolute;z-index:500;top:16px;left:16px;right:16px;display:flex;justify-content:space-between;align-items:start;pointer-events:none}.maptop>*{pointer-events:auto}.maplabel{background:#0c171fe8;padding:9px 12px;font-size:9px;letter-spacing:1.2px;border:1px solid #31404a;border-radius:5px}.maplabel i{margin-right:8px}.segmented{display:flex;background:#111d28;padding:3px;border-radius:6px;border:1px solid var(--line)}.segmented button{border:0;background:transparent;font-size:11px;padding:6px 12px}.segmented .active{background:#2c4845;color:var(--a)}.mapfit{position:absolute;z-index:500;bottom:35px;right:14px;background:#101c26e8;font-size:11px}.maplegend{position:absolute;z-index:500;bottom:14px;left:16px;background:#101b23e8;padding:7px 10px;font-size:9px;color:#c7d6d9;border-radius:4px;display:flex;align-items:center;gap:7px}.legendpin{width:7px;height:7px;background:var(--a);border-radius:50%}.line{width:16px;height:2px;background:var(--a);margin-left:8px}.leaflet-control-zoom{margin-top:72px!important}.leaflet-control-attribution{font-size:8px!important}.cluster{border:2px solid var(--a);border-radius:50%;background:#102b2a;color:var(--a);font-size:18px;text-align:center;line-height:40px;box-shadow:0 0 0 8px #77efcf18,0 0 35px #77efcf55}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#14252b;color:#fff}.leaflet-popup-content button{font-size:10px;margin:4px 0;padding:4px 7px}#detail{border:1px solid var(--line);border-radius:10px;overflow:hidden;display:grid;grid-template-columns:1.18fr 1fr;background:var(--panel);flex:1;min-height:300px}.photoarea{position:relative;min-height:300px;background:#05090d}.photoopen{padding:0;border:0;border-radius:0;width:100%;height:100%;display:block;overflow:hidden;background:#03070a}.photoopen img{width:100%;height:100%;position:absolute;inset:0;object-fit:cover}.photoopen>span{position:absolute;bottom:15px;left:15px;background:#0a151bd9;border:1px solid #66716b;padding:6px 12px;border-radius:5px;font-size:10px}.photobadge{position:absolute;top:14px;left:14px;pointer-events:none;font-size:8px;letter-spacing:1px;padding:5px 8px;background:#291f13d9;color:#efcb92;border:1px solid #826743;border-radius:4px}.info{padding:23px}.info h2{font-size:27px;letter-spacing:-.7px;font-weight:500;margin:10px 0 0}.info>p#date{font-size:11px;color:var(--muted);margin:2px 0 17px}.metadata{display:grid;grid-template-columns:1fr 1fr;gap:14px;border-top:1px solid var(--line);padding-top:14px}.metadata small{display:block;font-size:8px;letter-spacing:1px;color:var(--muted)}.metadata b{font-size:16px;font-weight:450}.coords{grid-column:1/-1}.coords b{font-size:12px;font-family:monospace}.precision{font-size:10px;color:var(--muted);margin:12px 0}.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.actions button{background:var(--a);color:#11251e;border:0;font-size:10px;font-weight:600}.actions a{font-size:10px;padding:8px 0}.quality{font-size:9px;color:var(--muted);display:block;margin-top:9px}dialog{padding:0;border:1px solid #3e575e;background:#080d13;color:white;width:95vw;max-width:none;height:94vh;max-height:none;border-radius:10px}dialog::backdrop{background:#000d}.viewerbar{height:56px;padding:10px 20px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.viewerbar button{padding:5px 10px;font-size:12px}#canvas{height:calc(100% - 56px);overflow:auto;text-align:center;display:block}#fullphoto{max-width:none;width:100%;height:100%;object-fit:contain}#toast{position:fixed;z-index:3000;bottom:20px;left:50%;transform:translateX(-50%);background:#23453c;border:1px solid #62bea4;color:white;max-width:90%;padding:12px 20px;border-radius:8px;font-size:12px;display:none}.empty{padding:15px;color:var(--muted);font-size:12px}@media(min-width:1600px){main{grid-template-columns:380px 1fr}aside{padding:34px}.mapwrap{height:48vh}h1{font-size:40px}.info{padding:28px}}@media(max-width:1050px){main{grid-template-columns:290px 1fr}header{padding:0 20px}.campaign{display:none}aside{padding:22px 18px}h1{font-size:30px}#detail{grid-template-columns:1fr}.photoarea{height:290px;min-height:0}.mapwrap{height:370px}.workspace{padding:14px}.info{padding:20px}#list{max-height:280px}}@media(max-width:650px){header{height:72px;padding:0 15px}.brand{font-size:13px;letter-spacing:2px}.brandmark{font-size:34px}.brand small{font-size:7px}header button{font-size:10px;padding:9px}main{display:flex;flex-direction:column}aside{border-right:0;padding:22px 18px}h1{font-size:30px;margin:12px 0}.intro{max-width:none}.stats{margin:15px 0;padding:10px 0}.stats strong{font-size:23px}#list{display:flex;overflow-x:auto;max-height:none}.card{min-width:200px}.archive{margin-top:16px;padding:10px 0}.localnote{margin-bottom:9px}footer{display:none}.workspace{padding:0 12px 15px}.mapwrap{height:360px;min-height:0}.maplabel{font-size:7px}.maptop{left:10px;right:10px}.maplegend{font-size:8px;left:8px;bottom:20px}.mapfit{bottom:60px;font-size:10px}#detail{grid-template-columns:1fr}.photoarea{height:290px}.info{padding:18px}}
/* Identitat municipal: logotip original sobre blanc, cromatisme roig i negre. */
:root{--bg:#111014;--panel:#1b181f;--line:#3a303b;--muted:#aa9eac;--a:#ff8faa;--primary:#cd0039}.adminonly{display:none!important}.management .adminonly{display:initial!important}.headeractions{display:flex;gap:8px}header{background:#151216;border-bottom:3px solid var(--primary)}.brand{letter-spacing:1px;gap:18px}#brandLogo{width:172px;height:68px;object-fit:contain;background:#fff;border-radius:3px;padding:7px}.brand #brandSubtitle{max-width:150px;font-size:10px;line-height:1.7;letter-spacing:1.8px;color:#ded4de;font-weight:500}header button{border-color:#854151;background:#391522;color:var(--a)}aside{background:linear-gradient(140deg,#211921,#121015)}.search{background:#110e13}.card{background:#221c25}.card.selected{background:#3a202b;border-color:#a94363}.segmented{background:#241c27}.segmented .active{background:#492431}.stats{border-color:var(--line)}.maplabel,.mapfit,.maplegend{background:#201821ed}.cluster{background:#401a2a;border-color:var(--a);color:var(--a);box-shadow:0 0 0 8px #e9004315,0 0 35px #d4003930}.legendpin,.line{background:var(--a)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#2f1c28}.mapwrap{border-color:#49343c}.actions button{background:var(--primary);color:white}.provider{font-size:10px!important;letter-spacing:.5px!important;color:#bbb0be!important}footer{border-top:2px solid var(--primary);margin-top:20px;padding-top:15px}.dot,.maplabel i{box-shadow:none}#brandSettings{width:680px;max-width:94vw;height:auto;max-height:92vh;background:#1d1720;padding:24px}.settingshead{display:flex;justify-content:space-between;align-items:start;gap:16px}.settingshead h2{margin:0;font-size:22px}.settingshead p,.brandform p{font-size:12px;color:var(--muted)}.brandform{display:grid;gap:14px}.brandform label{display:block;color:#d9cbdc;font-size:12px}.brandform input{display:block;border:1px solid #59425a;background:#110d14;padding:10px;margin-top:5px;border-radius:5px}.brandform input[type=color]{width:100%;height:42px;padding:3px}.colorfields{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.settingsbuttons{display:flex;flex-wrap:wrap;gap:8px}.settingsbuttons button{font-size:11px}#brandStatus{margin:0}.management .localnote{display:block!important}@media(max-width:950px){.brand #brandSubtitle{display:none}}@media(max-width:650px){#brandLogo{width:139px;height:54px;padding:5px}header{padding:0 12px}.headeractions button{padding:7px;font-size:9px}.brand{gap:0}.settingshead h2{font-size:18px}.settingshead button{font-size:10px}#brandSettings{padding:18px}}

#campaignFilters{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 18px}#campaignFilters button{font-size:11px;padding:8px 10px;border-left:4px solid var(--campaign-color);background:#211c26}#campaignFilters button[aria-pressed=true]{outline:1px solid var(--campaign-color);background:#3a2c3c}.campaign-ring{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;box-shadow:0 2px 12px #0009}.campaign-ring b{width:34px;height:34px;background:#201821;color:#fff;display:grid;place-items:center;border-radius:50%;font-size:15px}.cluster-list{max-height:260px;overflow:auto}.importyear{font-size:10px;color:#cbbdcc}.importyear select{display:block;background:#211823;color:#fff;border:1px solid #854151;padding:6px;border-radius:5px;max-width:190px}button:disabled{opacity:.45;cursor:wait}#detail[hidden]{display:none}.headeractions{align-items:center;flex-wrap:wrap}header{height:auto;min-height:86px;padding-top:8px;padding-bottom:8px}.photobadge{font-size:11px;font-weight:700}.info h2{overflow-wrap:anywhere}@media(max-width:650px){header{flex-wrap:wrap}.headeractions{gap:5px}.importyear select{max-width:160px}.campaign-ring b{font-size:14px}}

button:disabled{cursor:not-allowed}button[aria-busy=true]{cursor:progress}.management .management-status{display:flex!important;align-items:center;gap:14px;flex-wrap:wrap;padding:12px 24px;background:#291c28;border-bottom:1px solid #744255;font-size:13px}.management-status a{border:1px solid #bd5776;padding:6px 12px;border-radius:5px}.management-status a[hidden]{display:none}#brandPublish{background:#cd0039;color:white}

#archiveState{padding:22px;border:1px solid var(--line);border-radius:10px;color:var(--muted);background:var(--panel)}#archiveState[hidden],#retryArchive[hidden]{display:none}#retryArchive{margin-left:12px}
