Kontrolli sildi ja tegelikke tingimusi. Prognoos ei näita retuuside veekindlust ega soojusomadusi.
Uuri ilma üksikasjalikult
Vaata tunni prognoose, praktilist riideesemete nimekirja ja USA ametlikke hoiatusi. Laeme ainult seda, mida küsid.
📈 Tunnid ja järgmised 7 päeva
Temperatuur, niiskus, vihm, UV päikesepaistelise taeva ja tuulega.
🎒 Väljasõidu nimekiri vastavalt ilmale
Valmista nimekiri salvestatud prognoosi põhjal, ilma ostude või lisakõnedeta.
⚠️ USA ametlikud hoiatused
Kehtivad hoiatusteated National Weather Service’ilt USA kohtadele.
Allikad: MET Norway, PlaceDB (CC0) ja NWS. Nimekiri kasutab vahemällu salvestatud prognoosi, mitte riiete katsetusi.
Kuidas soovitus valmib
Ühendame prognoosi sinu valikutega, ilma riiete omadusi välja mõtlemata.
Tõeline prognoos
Temperatuur, tajutav temperatuur, tuul ja sademed MET Norway andmetel.
Sinu retuusid
Märgi, kas need on kerged, tavapärased või termoretuusid. See ei ole laborikatse.
Sinu tegevus
Linnas liikumine ja pikk matk vajavad erinevaid kihte.
Mida kanda retuusidega, kui on külm, sajab vihma või puhub tuul
Vaata esmalt tõelist prognoosi. Kohanda kihid vastavalt temperatuurile, vihmale, tuulele ja ilmastikule väljas. Kiudude protsent ei näita, kui soojad need on.
❄️
Retuusikomplektid külma ilmaga
Lühikesel teekonnal võivad sobida tavapärased retuusid, kampsun ja jope. Nulli lähedal või pika matka ajal mõtle tõelisele isoleerimisele ja väliskihile. Kasuta kinniseid jalanõusid, millel on hea haarduvus.
🌧️
Mida kanda retuusidega vihmasel ajal
Enamik retuuse ei ole veekindlad. Lisa veekindel väliskiht, kinnised jalanõud hea tallaga ja riided, mida saad siseruumides eemaldada.
🌬️
Tuulised või leebed päevad
Tuulega võib tuulekindel jakk olla olulisem kui kiudude nimetus. Leebema ilmaga kanna mugavat toppi ja kergeid kihte, mida on lihtne eemaldada.
Kuus komplekti tõelisteks olukordadeks
Prognoos on juhis, mitte vormiriietus. Kohanda kihid vastavalt oma teekonnale, tegevusele ja olemasolevatele riietele.
🌧️
Vihm linnas
Kombineeri läbipaistmatud retuusid kampsuni, veekindla jope ja hea haarduvusega jalanõudega.
Enne väljumist: Märg asfalt ja soojendusega siseruumid nõuavad erinevaid kihte.
Lisakohad ja ligikaudsed koordinaadid: GeoNames, CC BY 4.0; toimetuse valik. GeoNames.
(function(){
"use strict";
var root=document.querySelector('[data-tool=weather]');if(!root)return;
var L={"find":"Otsi rohkem linnu","hint":"Ei leia oma asukohta? Otsi valitud riigist või laadi rohkem riike. GPS-i ega IP-põhist otsingut ei kasutata.","lookup":"Koha nimi","search":"Otsi asukohti","countries":"Rohkem riike","empty":"Tulemusi ei leitud.","loading":"Otsin kohti...","choose":"Vali see koht","intro":"Uuri ilma üksikasjalikult","lead":"Vaata tundidepõhiseid prognoose, praktilist riidekappi ja USA ametlikke hoiatusi. Laadime ainult sinu valitud andmed.","forecast":"Tunnid ja järgmised 7 päeva","forecastDesc":"Temperatuur, niiskus, vihm, UV, selge taevas ja tuul.","alerts":"USA ametlikud hoiatused","alertsDesc":"National Weather Service’i kehtivad hoiatused USA asukohtadele.","go":"Küsi","hour":"Järgmised tunnid (UTC)","days":"Järgmised päevad (UTC kuupäevad)","unavailable":"Allikas on ajutiselt kättesaamatu.","nothing":"Sobivaid väärtusi pole.","notUS":"NWS hoiatused on saadaval ainult Ameerika Ühendriikides.","noAlerts":"Aktiivseid ametlikke teateid pole.","countryReady":"Riikide nimekiri laaditud.","source":"Allikad: MET Norway, PlaceDB (CC0) ja NWS. Nimekiri kasutab vahemällu salvestatud prognoosi, mitte riiete katsetusi.","pack":"Ilma järgi riietumise nimekiri","packDesc":"Koosta nimekiri salvestatud prognoosi põhjal, ilma täiendavate ostude või kõnedeta.","packItems":["Sinu retuusid","Soe riideese või mantel","Vihmakindel väliskiht","Tuulekindel jakk","Soojad sokid ja kinnised jalanõud","Mugavad ja libisemiskindlad jalanõud"],"packCopy":"Kopeeri nimekiri","packSaved":"Nimekiri kopeeritud"},country=root.querySelector('#wa-country'),city=root.querySelector('#wa-city');
var input=root.querySelector('#wa-place-query'),matches=root.querySelector('.wa-place-matches'),status=root.querySelector('.wa-place-status-text');
function item(tag,value){var e=document.createElement(tag);e.textContent=String(value);return e;}
function query(){
var opt=city.selectedOptions[0],p=new URLSearchParams();
if(opt&&opt.dataset.placeId){p.set('country',country.value);p.set('place',opt.dataset.placeId);p.set('q',opt.dataset.query);}
else if(city.value)p.set('city',city.value);
return p;
}
var placeEpoch=0,panelEpoch={forecast:0,pack:0,alerts:0};
function clear(){placeEpoch++;for(var mode in panelEpoch)panelEpoch[mode]++;matches.replaceChildren();status.textContent='';for(var e of root.querySelectorAll('.wa-deep-output'))e.replaceChildren();}
country.addEventListener('change',clear);city.addEventListener('change',clear);
var find=root.querySelector('.wa-place-find');
find.addEventListener('click',async function(){
var value=input.value.trim();if(value.length<2){input.focus();return;}
var findIntent=++placeEpoch,chosenCountry=country.value;
status.textContent=L.loading;matches.replaceChildren();find.disabled=true;
try{
var r=await fetch('/api/weather-places?country='+encodeURIComponent(country.value)+'&q='+encodeURIComponent(value));
if(!r.ok)throw Error('places');var d=await r.json();if(findIntent!==placeEpoch||country.value!==chosenCountry)return;if(!d.places||!d.places.length)status.textContent=L.empty;
else status.textContent=d.places.length+' · '+L.choose;
for(const p of d.places||[]){
var li=item('li',''),b=item('button',p.name);
b.type='button';b.addEventListener('click',function(){
if(findIntent!==placeEpoch||country.value!==chosenCountry)return;
var opt=document.createElement('option');opt.value='p-'+p.country+'-'+p.id;opt.textContent=p.name;
opt.dataset.placeId=String(p.id);opt.dataset.query=value;city.append(opt);city.disabled=false;city.value=opt.value;
city.dispatchEvent(new Event('change',{bubbles:true}));status.textContent=p.name+' ✓';matches.replaceChildren();
});li.append(b);matches.append(li);
}
}catch{if(findIntent===placeEpoch)status.textContent=L.unavailable;}finally{find.disabled=false;}
});
input.addEventListener('keydown',function(e){if(e.key==='Enter'){e.preventDefault();find.click();}});
root.querySelector('.wa-all-countries').addEventListener('click',async function(){
var button=this;button.disabled=true;status.textContent=L.loading;
try{
var r=await fetch('/api/weather-countries');if(!r.ok)throw Error('countries');
var d=await r.json(),already=new Set(Array.from(country.options,x=>x.value)),extra=[];
var fmt=new Intl.DisplayNames([document.documentElement.lang||'en'],{type:'region'});
for(var c of d.countries||[]){if(!/^[A-Z]{2}$/.test(c.code)||already.has(c.code))continue;
var o=document.createElement('option');o.value=c.code;o.textContent=fmt.of(c.code)||c.name;
country.append(o);extra.push(c.code);}
window.__leggicMoreCountries=[...new Set([...(window.__leggicMoreCountries||[]),...extra])];
status.textContent=L.countryReady;button.hidden=true;
}catch{status.textContent=L.unavailable;button.disabled=false;}
});
function line(box,name,value){var row=item('div','');row.className='wa-deep-line';row.append(item('span',name),item('strong',value));box.append(row);}
for(const btn of root.querySelectorAll('.wa-deep-fetch')){
btn.addEventListener('click',async function(){
var mode=btn.dataset.mode,box=root.querySelector('.wa-deep-output[data-mode="'+mode+'"]');
var intent=++panelEpoch[mode],selectedCountry=country.value,selectedCity=city.value;
if(!city.value){box.textContent=L.empty;return;}
box.textContent=L.loading;btn.disabled=true;
var p=query(),url=mode==='alerts'?'/api/weather-alerts':'/api/weather-advice';
if(mode==='forecast'||mode==='pack')p.set('view','extended');
try{
var r=await fetch(url+'?'+p.toString());if(!r.ok)throw Error('source');
var d=await r.json();if(intent!==panelEpoch[mode]||city.value!==selectedCity||country.value!==selectedCountry)return;box.replaceChildren();
if(mode==='forecast'){
var a=item('div','');a.className='wa-deep-lines';
if(Number.isFinite(d.humidity))line(a,'💧',d.humidity+'%');
if(Number.isFinite(d.uvClearSky))line(a,'UV (clear sky)',d.uvClearSky);
if(Number.isFinite(d.windGustMs))line(a,'Wind gust',d.windGustMs+' m/s');
for(var h of (d.hourly||[]).slice(0,18))line(a,h.time.slice(5,16).replace('T',' ')+' UTC',h.temperatureC+' °C'+(Number.isFinite(h.precipChance)?' · '+h.precipChance+'%':''));
box.append(a);
var b=item('div','');b.className='wa-deep-lines';
for(var day of d.daily||[])line(b,day.dayUTC,day.lowC+' / '+day.highC+' °C');
box.append(item('h4',L.days),b);
}else if(mode==='pack'){
if(!Number.isFinite(d.temperatureC))throw Error('missing temperature');
var items=[L.packItems[0]];
if(d.temperatureC<10)items.push(L.packItems[1]);
if((Number.isFinite(d.precipMm)&&d.precipMm>=0.2)||/rain|snow|sleet/i.test(d.symbol||''))items.push(L.packItems[2]);
if(d.windMs>=8)items.push(L.packItems[3]);
items.push(d.temperatureC<5?L.packItems[4]:L.packItems[5]);
var list=item('ul','');list.className='wa-packing-list';
for(const label of [...new Set(items)]){var li=item('li',label);list.append(li);}
box.append(list);
var copy=item('button',L.packCopy);copy.type='button';copy.className='wa-pack-copy';
copy.addEventListener('click',async function(){try{
await navigator.clipboard.writeText(items.join('\n'));copy.textContent=L.packSaved;
}catch{copy.textContent=L.unavailable;}});
box.append(copy);
}else{
if(!d.supported){box.textContent=L.notUS;return;}
if(!d.alerts?.length){box.textContent=L.noAlerts;return;}
for(var a of d.alerts)line(box,a.severity,a.event+': '+a.headline);
var link=item('a','National Weather Service');link.href='https://www.weather.gov/';link.rel='noopener noreferrer';box.append(link);
}
}catch{if(intent===panelEpoch[mode])box.textContent=L.unavailable;}finally{btn.disabled=false;}
});
}
})();document.addEventListener('DOMContentLoaded',()=>{setTimeout(()=>{
// The deferred app.js initializes its tool on DOMContentLoaded; run just after it.
const button=document.getElementById('buildLook');if(!button)return;
const labels={it:'Abbinamento',de:'Outfit',es:'Conjunto',fr:'Tenue',en:'Look'};
const enhance=()=>{
const result=document.querySelector('#lookResult .result');
if(!result||result.querySelector('.style-look-grid'))return;
const items=[...result.querySelectorAll('ol li')].slice(0,3);
if(!items.length)return;
const selectedText=id=>{
const element=document.getElementById(id);
return element?.selectedOptions?.[0]?.textContent?.trim()||element?.value||'';
};
const metaText=[selectedText('color'),selectedText('season'),selectedText('shoes')].filter(Boolean).join(' · ');
const grid=document.createElement('div');grid.className='style-look-grid';
items.forEach((item,index)=>{
const card=document.createElement('article');card.className='style-look';
const meta=document.createElement('span');meta.className='style-look-meta';meta.textContent=metaText;
const content=document.createElement('div'),title=document.createElement('b'),copy=document.createElement('p');
title.textContent=(labels[document.documentElement.lang]||labels.en)+' '+(index+1);
copy.innerHTML=item.innerHTML;
content.append(title,copy);card.append(meta,content);grid.append(card);
});
result.querySelector('ol')?.replaceWith(grid);
};
const next=()=>setTimeout(enhance,0);
button.addEventListener('click',next);
for(const id of ['color','season','occasion','shoes','finish'])document.getElementById(id)?.addEventListener('change',next);
next();
},0);});(()=>{const root=document.querySelector('header.site-header [data-lp]');if(!root)return;const t=root.querySelector('.lp-trigger'),d=root.querySelector('.lp-dialog');if(!d||typeof d.showModal!=='function')return;const f=d.querySelector('.lp-filter'),items=[...d.querySelectorAll('.lp-item')],groups=[...d.querySelectorAll('.lp-group')],empty=d.querySelector('.lp-empty');const norm=s=>s.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g,'');const apply=()=>{const q=norm(f.value.trim());let shown=0;items.forEach(a=>{const ok=!q||norm(a.dataset.names+' '+a.textContent).includes(q);a.parentElement.hidden=!ok;if(ok)shown++;});groups.forEach(g=>{g.hidden=![...g.querySelectorAll('li')].some(li=>!li.hidden)});empty.hidden=shown>0;};t.addEventListener('click',e=>{if(e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return;e.preventDefault();d.showModal();f.value='';apply();if(window.matchMedia('(pointer:fine)').matches)f.focus();else d.querySelector('.lp-item.is-current')?.scrollIntoView({block:'center'});});d.querySelector('.lp-close').addEventListener('click',()=>d.close());d.addEventListener('click',e=>{if(e.target===d)d.close()});f.addEventListener('input',apply);f.addEventListener('keydown',e=>{if(e.key==='Enter'){const first=items.find(a=>!a.parentElement.hidden);if(first){e.preventDefault();first.click();}}});d.addEventListener('close',()=>t.focus());})();