:root{
  --atlas:#08aeb7;
  --atlas-dark:#087d86;
  --ink:#17333a;
  --muted:#668187;
  --surface:#fff;
  --line:#dbe7e9;
  --maxi:#25b85a;
  --maxi-premium:#0b6f3a;
  --classic:#2483d8;
  --classic-premium:#154a8a;
  --classic-double:#20c6d4;
  --shadow:0 8px 24px rgba(21,63,71,.15);
}
*{box-sizing:border-box}
html,body{height:100%;margin:0;font-family:Inter,Arial,Helvetica,sans-serif;color:var(--ink);background:#eef4f5}
body{overflow:hidden}
.topbar{height:82px;background:var(--atlas);display:flex;align-items:center;gap:28px;padding:12px 22px;box-shadow:0 2px 12px rgba(0,0,0,.16);position:relative;z-index:1000}
.brand{display:flex;align-items:center;gap:15px;min-width:315px}
.logo{height:48px;width:auto;display:block;object-fit:contain}
.brand-copy{border-left:1px solid rgba(255,255,255,.35);padding-left:14px;color:white}
.title{font-size:20px;font-weight:800;line-height:1.05;letter-spacing:.1px}
.subtitle{font-size:12px;opacity:.85;margin-top:4px}
.toolbar{display:flex;align-items:center;gap:10px;flex:1;justify-content:flex-end}
.search-wrap{position:relative;width:min(610px,60vw)}
.search-wrap>svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);width:20px;height:20px;color:#61767b;z-index:2}
#search{width:100%;height:46px;border:0;border-radius:10px;padding:0 44px;font-size:15px;outline:none;box-shadow:0 2px 9px rgba(0,0,0,.11);color:#19353b}
#search:focus{box-shadow:0 0 0 3px rgba(255,255,255,.42),0 2px 9px rgba(0,0,0,.13)}
.icon-btn{position:absolute;right:5px;top:5px;width:36px;height:36px;border:0;background:transparent;border-radius:8px;font-size:25px;color:#789096;cursor:pointer}
.icon-btn:hover{background:#edf4f5}
.secondary-btn{height:46px;border:1px solid rgba(255,255,255,.65);background:rgba(255,255,255,.13);color:white;border-radius:10px;padding:0 16px;font-weight:700;cursor:pointer;white-space:nowrap}
.secondary-btn:hover{background:rgba(255,255,255,.22)}
.suggestions{position:absolute;left:0;right:0;top:52px;background:white;border-radius:10px;box-shadow:var(--shadow);max-height:min(430px,65vh);overflow:auto;border:1px solid #dfe9eb;z-index:2000}
.suggestion{padding:11px 14px;cursor:pointer;border-bottom:1px solid #eef3f4;display:flex;justify-content:space-between;gap:15px;align-items:center}
.suggestion:last-child{border-bottom:0}.suggestion:hover,.suggestion.active{background:#eefafb}
.suggestion-main{min-width:0}.suggestion-title{font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.suggestion-meta{font-size:12px;color:var(--muted);margin-top:2px}.suggestion-count{font-size:12px;color:#527279;white-space:nowrap}
main{position:relative;height:calc(100% - 82px)}
#map{height:100%;width:100%;background:#dce8e8}
.dot{width:11px;height:11px;border-radius:50%;display:inline-block;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15)}
.maxi{background:var(--maxi)}.maxi-premium{background:var(--maxi-premium)}.classic{background:var(--classic)}.classic-premium{background:var(--classic-premium)}.classic-double{background:var(--classic-double)}

.city-panel{position:absolute;right:14px;top:14px;bottom:14px;width:218px;z-index:650;background:rgba(255,255,255,.97);border:1px solid #dce6e8;border-radius:12px;box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column}
.city-panel-head{padding:12px 12px 10px;border-bottom:1px solid #e3ecee;display:flex;justify-content:space-between;align-items:center;gap:8px;background:linear-gradient(135deg,#f0fcfc,#fff)}
.city-panel-title{font-size:14px;font-weight:850;color:#173d44}
.city-panel-subtitle{font-size:11px;color:#688187;margin-top:2px}.city-panel-subtitle strong{color:#087d86}
.city-all-btn{border:1px solid #b9dfe2;background:#fff;color:#08777f;border-radius:8px;height:30px;padding:0 10px;font-size:11px;font-weight:800;cursor:pointer}
.city-all-btn:hover,.city-all-btn.active{background:#e9fbfc;border-color:var(--atlas)}
.city-list{overflow:auto;flex:1;padding:5px 0;scrollbar-width:thin}
.city-row{width:100%;height:34px;border:0;background:transparent;padding:0 11px;display:flex;align-items:center;justify-content:space-between;gap:10px;color:#294d54;text-align:left;cursor:pointer;font-size:12px;border-left:3px solid transparent}
.city-row:hover{background:#f1f8f8}.city-row.active{background:#e9fbfc;border-left-color:var(--atlas);color:#086f77;font-weight:800}.city-row strong{font-size:10px;color:#83979b;background:#eef4f5;padding:2px 6px;border-radius:10px;font-weight:700}.city-row.active strong{background:#d4f4f6;color:#08777f}
.city-load-error{padding:15px;font-size:12px;color:#6a7e82;line-height:1.4}

.legend{position:absolute;left:14px;bottom:15px;z-index:650;background:rgba(255,255,255,.96);border:1px solid #dce6e8;border-radius:10px;box-shadow:var(--shadow);padding:10px 13px;min-width:155px;font-size:12px;line-height:1.9}
.legend-title{font-size:12px;text-transform:uppercase;letter-spacing:.5px;font-weight:800;color:#526e74;margin-bottom:2px}.legend>div:not(.legend-title){display:flex;align-items:center;gap:8px}
.am-marker{background:transparent;border:0}.am-pin{width:24px;height:24px;border-radius:50% 50% 50% 6px;transform:rotate(-45deg);border:2px solid #fff;box-shadow:0 2px 5px rgba(0,0,0,.42);position:relative}.am-pin::after{content:"";position:absolute;width:7px;height:7px;border-radius:50%;background:white;left:6.5px;top:6.5px;opacity:.9}.am-pin.maxi{background:var(--maxi)}.am-pin.maxi-premium{background:var(--maxi-premium)}.am-pin.classic{background:var(--classic)}.am-pin.classic-premium{background:var(--classic-premium)}.am-pin.classic-double{background:var(--classic-double)}
.marker-cluster div{font:700 12px Arial;color:#17363c;background:rgba(255,255,255,.92);border:3px solid var(--atlas)}.marker-cluster{background:rgba(8,174,183,.25)}
.leaflet-popup-content-wrapper{border-radius:12px;box-shadow:0 10px 28px rgba(14,48,55,.25)}.leaflet-popup-content{margin:0;min-width:255px;max-width:315px}.leaflet-popup-tip{box-shadow:none}
.popup-head{padding:14px 15px 12px;background:linear-gradient(135deg,#effcfc,#fff);border-bottom:1px solid #e1ecee;border-radius:12px 12px 0 0}.popup-street{font-size:17px;font-weight:850;color:#153c43;line-height:1.2}.popup-city{font-size:12px;color:#6b8388;margin-top:3px}.popup-body{padding:12px 15px 14px}.info-row{display:flex;justify-content:space-between;gap:18px;padding:4px 0;font-size:13px}.info-row span:first-child{color:#6a8186}.info-row strong{text-align:right}.format-pill{font-size:11px;border-radius:10px;padding:2px 8px;color:white;white-space:nowrap}.format-pill.maxi{background:var(--maxi)}.format-pill.maxi-premium{background:var(--maxi-premium)}.format-pill.classic{background:var(--classic)}.format-pill.classic-premium{background:var(--classic-premium)}.format-pill.classic-double{background:var(--classic-double)}
.traffic-box{margin-top:10px;border-top:1px solid #e7eff0;padding-top:10px;min-height:62px}.traffic-loading{height:54px;border-radius:8px;background:#f3f8f8;display:flex;align-items:center;justify-content:center;gap:8px;font-size:11px;color:#71888d}.spinner{width:14px;height:14px;border-radius:50%;border:2px solid #c9e5e7;border-top-color:var(--atlas);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.traffic-result{background:#f3f8f8;border-radius:8px;padding:9px 10px}.traffic-caption{font-size:10px;text-transform:uppercase;letter-spacing:.35px;color:#6c858a;font-weight:750}.traffic-value{font-size:20px;font-weight:850;color:#0d6c73;margin-top:2px}.traffic-label{font-size:10px;color:#7b9095;margin-top:2px}.traffic-note{font-size:9px;color:#91a1a5;line-height:1.3;margin-top:5px}.traffic-error{font-size:11px;color:#6a7e82;line-height:1.4}
.maps-link{margin-top:10px;height:38px;border:1px solid #b9dfe2;border-radius:8px;display:flex;align-items:center;justify-content:space-between;padding:0 11px;color:#08777f;background:#fff;text-decoration:none;font-size:12px;font-weight:800}.maps-link:hover{background:#eafafb;border-color:var(--atlas)}.maps-link span{font-size:14px}
.leaflet-control-zoom a{color:#0b727a!important}.leaflet-control-attribution{font-size:9px!important}

@media(max-width:850px){
  .topbar{height:auto;min-height:116px;display:block;padding:10px 12px}.brand{min-width:0;margin-bottom:10px}.logo{height:36px}.brand-copy{display:none}.toolbar{width:100%;justify-content:stretch}.search-wrap{width:100%}.secondary-btn{display:none}main{height:calc(100% - 116px)}
  .city-panel{left:8px;right:8px;top:8px;bottom:auto;width:auto;height:82px;border-radius:10px}.city-panel-head{height:36px;padding:5px 8px}.city-panel-title{font-size:12px}.city-panel-subtitle{display:inline;margin-left:5px}.city-panel-head>div{display:flex;align-items:baseline}.city-all-btn{height:26px}.city-list{display:flex;overflow-x:auto;overflow-y:hidden;padding:5px 6px;gap:4px}.city-row{flex:0 0 auto;width:auto;height:32px;padding:0 9px;border-left:0;border-bottom:3px solid transparent;border-radius:7px;gap:7px;background:#f7fafa}.city-row.active{border-left:0;border-bottom-color:var(--atlas)}
  .legend{left:10px;bottom:10px;min-width:auto;padding:7px 9px}.legend-title{display:none}.legend>div:not(.legend-title){line-height:1.5}.leaflet-control-zoom{margin-top:100px!important}
}
@media(max-width:520px){.legend{font-size:0;display:flex;gap:6px;align-items:center}.legend .dot{width:12px;height:12px}.suggestions{max-height:48vh}.city-panel{height:78px}.city-panel-subtitle{font-size:10px}}

/* Päivitystieto + admin */
.map-meta{position:absolute;left:50%;bottom:8px;transform:translateX(-50%);z-index:660;display:flex;align-items:center;gap:8px;background:rgba(255,255,255,.93);border:1px solid #dce6e8;border-radius:8px;padding:4px 7px 4px 10px;box-shadow:0 3px 12px rgba(21,63,71,.10);font-size:10px;color:#71878c;white-space:nowrap}
.map-meta button{border:0;background:transparent;color:#7a9095;font-size:10px;font-weight:750;padding:3px 5px;border-radius:5px;cursor:pointer}.map-meta button:hover{background:#eaf8f9;color:#08777f}
.admin-backdrop{position:fixed;inset:0;z-index:5000;background:rgba(10,34,39,.48);display:flex;align-items:center;justify-content:center;padding:18px}.admin-backdrop[hidden]{display:none}
.admin-card{position:relative;width:min(470px,100%);background:white;border-radius:16px;box-shadow:0 24px 70px rgba(7,42,49,.32);padding:24px;color:#17333a}
.admin-close{position:absolute;right:12px;top:10px;border:0;background:transparent;color:#7b9095;font-size:28px;line-height:1;width:36px;height:36px;border-radius:8px;cursor:pointer}.admin-close:hover{background:#f0f6f7}
.admin-kicker{font-size:10px;text-transform:uppercase;letter-spacing:.8px;color:var(--atlas-dark);font-weight:850}.admin-card h2{margin:5px 0 8px;font-size:22px}.admin-card p{margin:0 0 18px;color:#637b80;font-size:13px;line-height:1.45}
.admin-field{display:block;margin:12px 0}.admin-field>span{display:block;font-size:11px;font-weight:800;color:#58747a;margin-bottom:5px}.admin-field input[type=password]{width:100%;height:42px;border:1px solid #cbdcdf;border-radius:8px;padding:0 11px;font-size:14px;outline:none}.admin-field input[type=password]:focus{border-color:var(--atlas);box-shadow:0 0 0 3px rgba(8,174,183,.12)}
.admin-field input[type=file]{width:100%;border:1px dashed #b9d9dc;border-radius:9px;padding:10px;background:#f8fbfb;font-size:12px;color:#536e74}
.admin-preview{margin:12px 0 0;background:#eefafa;border:1px solid #d4eff1;border-radius:9px;padding:10px 11px;font-size:12px;color:#2d5960;line-height:1.35}.admin-preview:empty{display:none}.admin-preview small{display:block;color:#748b90;margin-top:4px}
.admin-status{min-height:20px;margin-top:10px;font-size:12px;color:#637b80}.admin-status.error{color:#a33a3a}.admin-status.success{color:#16713d;font-weight:750}
.admin-upload{width:100%;height:43px;border:0;border-radius:9px;background:var(--atlas);color:white;font-weight:850;font-size:13px;cursor:pointer;margin-top:4px}.admin-upload:hover:not(:disabled){background:var(--atlas-dark)}.admin-upload:disabled{opacity:.42;cursor:not-allowed}
.admin-help{font-size:9px;color:#8da0a4;line-height:1.4;margin-top:10px;text-align:center}
body.modal-open{overflow:hidden}
@media(max-width:850px){.map-meta{bottom:7px;max-width:calc(100% - 20px)}.admin-card{padding:21px 18px}}
@media(max-width:520px){.map-meta{font-size:9px}.map-meta button{font-size:9px}.admin-card h2{font-size:20px}}
.traffic-unavailable{font-size:12px;font-weight:800;color:#5b7378;line-height:1.35;margin-top:3px}

/* v9 Admin: pylväspaikat + KAVL-raaka-arvot */
.admin-card-wide{width:min(900px,100%);max-height:min(92vh,820px);overflow:auto}
.admin-password-field{max-width:360px;margin-bottom:18px}
.admin-grid{display:grid;grid-template-columns:minmax(0,.85fr) minmax(360px,1.15fr);gap:14px;align-items:start}
.admin-section{border:1px solid #dce8ea;border-radius:12px;padding:15px;background:#fbfdfd;min-width:0}
.admin-section h3{margin:0;font-size:15px;color:#173d44}
.admin-section p{font-size:11px;margin:9px 0 12px;line-height:1.45}
.admin-section-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.admin-section-head small{display:block;font-size:10px;color:#799095;margin-top:2px}
.admin-small-btn{border:1px solid #b9dfe2;background:#eafafb;color:#08777f;border-radius:8px;height:34px;padding:0 10px;font-size:11px;font-weight:800;cursor:pointer;white-space:nowrap}
.admin-small-btn:hover:not(:disabled){background:#dff7f9;border-color:var(--atlas)}
.admin-small-btn.secondary{background:#fff}
.admin-small-btn:disabled{opacity:.42;cursor:not-allowed}
.kavl-updated{font-size:10px;color:#789095;min-height:15px;margin:1px 0 7px}
.kavl-rows{border:1px solid #d8e7e9;border-radius:9px;background:#fff;max-height:330px;overflow:auto}
.kavl-empty{padding:20px 12px;text-align:center;font-size:11px;color:#809398}
.kavl-row{display:grid;grid-template-columns:minmax(0,1fr) 105px 32px;gap:7px;align-items:center;padding:6px 7px;border-bottom:1px solid #edf3f4}
.kavl-row:last-child{border-bottom:0}
.kavl-row input{width:100%;height:32px;border:1px solid #cadcdf;border-radius:7px;padding:0 8px;font-size:12px;color:#25474e;outline:none;background:#fff}
.kavl-row input:focus{border-color:var(--atlas);box-shadow:0 0 0 2px rgba(8,174,183,.10)}
.kavl-row .kavl-value{text-align:right;font-variant-numeric:tabular-nums}
.kavl-remove{width:30px;height:30px;border:0;border-radius:7px;background:transparent;color:#91a0a4;font-size:18px;cursor:pointer}
.kavl-remove:hover{background:#fff0f0;color:#a33a3a}
.kavl-actions{display:flex;gap:8px;align-items:center;margin-top:10px}
.kavl-save{margin:0;flex:1}
.kavl-section .admin-status{margin-top:7px}
@media(max-width:820px){.admin-grid{grid-template-columns:1fr}.admin-card-wide{max-height:94vh}.kavl-rows{max-height:260px}}
@media(max-width:520px){.admin-card-wide{padding:20px 14px}.kavl-row{grid-template-columns:minmax(0,1fr) 92px 30px}.admin-section{padding:12px}.kavl-actions{align-items:stretch;flex-direction:column}.kavl-save{width:100%}}

/* v12: valinnainen alueklusterointi */
.map-meta .cluster-toggle{border-left:1px solid #dce6e8;padding-left:8px;margin-left:1px}
.map-meta .cluster-toggle.active{background:#e0f7f8;color:#066b72;box-shadow:inset 0 0 0 1px #b9e5e8}
.marker-cluster-small,.marker-cluster-medium,.marker-cluster-large{background:rgba(8,174,183,.22)}
.marker-cluster-small div,.marker-cluster-medium div,.marker-cluster-large div{background:rgba(255,255,255,.96);color:#124950;border:2px solid #08aeb7;font-weight:850;box-shadow:0 2px 7px rgba(0,0,0,.15)}
