:root{color-scheme:light;--navy:#0b1f3a;--blue:#2563eb;--muted:#586b82;--line:#e0e9f3;--bg:#f4f8fc}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--navy);font:16px/1.6 Inter,"Noto Sans Thai",system-ui,-apple-system,"Segoe UI",sans-serif;font-variant-numeric:tabular-nums}button,input{font:inherit}button,a,input,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer;min-height:46px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--navy);padding:10px 17px}button:hover{background:#edf4ff}button:disabled{opacity:.6;cursor:wait}:focus-visible{outline:3px solid #38bdf8;outline-offset:3px}a{color:var(--blue)}header{max-width:1200px;margin:auto;display:flex;align-items:center;gap:28px;padding:27px 28px;border-bottom:1px solid var(--line)}.brand{text-decoration:none;color:var(--navy);font-weight:850;font-size:24px;letter-spacing:2px}.brand span{color:var(--blue);font-size:32px;vertical-align:middle}.tagline{color:var(--muted);font-size:14px}.unit{margin-left:auto;font-size:12px;letter-spacing:2px;color:var(--muted)}main{max-width:1200px;margin:auto;padding:28px}.location-tools{display:flex;gap:12px;margin-bottom:20px}.search-wrap{position:relative;flex:1;min-width:0}.search-icon{position:absolute;left:17px;top:7px;font-size:27px;color:var(--muted)}input{width:100%;height:50px;padding:10px 18px 10px 48px;border:1px solid var(--line);border-radius:12px;color:var(--navy);background:white}#results{position:absolute;top:58px;left:0;right:0;z-index:5;background:white;border:1px solid var(--line);border-radius:14px;box-shadow:0 15px 35px #0b1f3a18;overflow:hidden}#results button{display:block;width:100%;text-align:left;border:0;border-radius:0;padding:13px 18px}#results button[aria-selected=true]{background:#eaf2ff}#results small{display:block;color:var(--muted)}#results p{padding:0 18px}#notice:not(:empty){background:#e8f2ff;border:1px solid #bfd8ff;padding:12px 16px;border-radius:12px;margin-bottom:18px;font-size:14px}#notice button{margin-left:12px}.hero{background:linear-gradient(115deg,#102e54,#195f9a);color:white;border-radius:24px;padding:32px 38px;position:relative;overflow:hidden;min-height:290px}.hero.night,.hero.rain{background:linear-gradient(115deg,#0b1f3a,#21486b)}.eyebrow{text-transform:uppercase;letter-spacing:2px;font-size:12px;color:#c1dcf4;margin:0 0 4px}h1{font-size:30px;line-height:1.35;margin:0 0 6px;overflow-wrap:anywhere}.updated{font-size:14px;color:#d2e5f7;margin:0}.hero-main{display:flex;align-items:center;gap:30px;margin:12px 0}.temperature{font-size:86px;line-height:1.1;letter-spacing:-5px;font-weight:650}.condition{font-size:19px}.condition p{margin:2px 0}.condition small{font-size:14px;color:#d2e5f7}.hero-icon{margin-left:auto;font-size:85px;line-height:1}.hero-bottom{border-top:1px solid #ffffff30;padding-top:17px;display:flex;justify-content:space-between;gap:14px;font-size:14px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0 28px}.metric,.panel{background:#fff;border:1px solid var(--line);border-radius:18px}.metric{padding:20px}.metric-label{font-size:14px;color:var(--muted)}.metric strong{display:block;font-size:27px;font-weight:650;margin-top:7px}.metric strong small{font-size:14px;font-weight:400}.metric-label span{color:var(--blue);margin-right:7px}.panel{padding:24px;margin-bottom:24px;min-width:0}h2{font-size:20px;margin:0;font-weight:700}.section-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:20px}.section-head span{font-size:12px;color:var(--muted);letter-spacing:1px}.hours{display:flex;overflow-x:auto;gap:10px;padding-bottom:12px;scroll-snap-type:x proximity}.hour{flex:0 0 77px;padding:15px 5px;text-align:center;border-radius:13px;background:#f6f9fd;scroll-snap-align:start}.hour:first-child{background:var(--navy);color:white}.hour time{font-size:14px}.hour .icon{font-size:28px;margin:9px 0}.hour strong{font-size:21px;display:block}.rain-chance{color:#1860ba;font-size:14px;white-space:nowrap}.hour:first-child .rain-chance{color:#91d7ff}.forecast-grid{display:grid;grid-template-columns:1.08fr 1fr;gap:22px}.forecast-grid .panel{margin:0 0 24px}.daily-row{display:grid;grid-template-columns:70px 35px 1fr 78px 43px;gap:9px;align-items:center;padding:16px 0;border-top:1px solid var(--line);font-size:14px}.daily-row.today{background:#f0f6ff;border-radius:10px;padding-left:8px;padding-right:8px}.day small{display:block;color:var(--muted);font-size:12px}.daily-icon{font-size:25px}.range-row{display:grid;grid-template-columns:68px 26px 30px 1fr 30px 40px;align-items:center;gap:8px;padding:11px 0;font-size:14px}.range-track{height:6px;background:#edf2f8;border-radius:8px;overflow:hidden}.range-bar{height:100%;border-radius:8px;background:linear-gradient(90deg,#a0d9fa,#3479d9)}.uncertainty{background:#f2f6fb;color:var(--muted);font-size:14px;padding:13px 15px;border-radius:10px;margin:0 0 13px}.details-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.detail{padding:3px 16px;border-left:1px solid var(--line)}.detail:first-child{border:0}.detail strong{display:block;font-size:27px;margin:8px 0}.detail p{font-size:14px;color:var(--muted);margin:0}.uv-meter{height:5px;margin:12px 0;background:#e3effd;border-radius:5px}.uv-meter span{display:block;height:100%;background:var(--blue);max-width:100%}footer{padding:5px 0 25px;color:var(--muted);font-size:13px}footer a{font-size:14px;font-weight:600}footer p{max-width:800px;margin:12px 0}footer small{font-size:12px;letter-spacing:1px}.sr-only,.skip:not(:focus){position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0)}.skip:focus{display:block;padding:10px}.skeleton{animation:pulse 1.5s ease-in-out infinite}#weather[aria-busy=true]{opacity:.75}#weather{transition:opacity .2s}@keyframes pulse{50%{opacity:.65}}@media(max-width:900px){.forecast-grid{grid-template-columns:1fr}.tagline{display:none}}@media(max-width:600px){header{padding:17px 16px}.brand{font-size:21px}.unit{font-size:10px;letter-spacing:1px}main{padding:18px 14px}.location-tools{flex-wrap:wrap;gap:9px}.search-wrap{flex-basis:100%}#locate{flex:1}.hero{padding:24px 20px;border-radius:19px}h1{font-size:25px}.hero-main{gap:16px;flex-wrap:wrap}.temperature{font-size:70px}.hero-icon{font-size:50px}.condition{font-size:16px}.hero-bottom{flex-direction:column;gap:5px}.metrics{grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:20px}.metric{padding:16px}.panel{padding:19px 14px;border-radius:16px}.section-head{gap:6px}.section-head span{font-size:10px}h2{font-size:18px}.daily-row{grid-template-columns:55px 28px 1fr 66px 36px;gap:5px;font-size:12px}.daily-icon{font-size:22px}.range-row{grid-template-columns:60px 23px 27px 1fr 27px 36px;gap:5px;font-size:12px}.rain-chance{font-size:12px}.details-grid{grid-template-columns:1fr}.detail{border-left:0;border-top:1px solid var(--line);padding:16px 0}.detail strong{font-size:25px}.detail:first-child{padding-top:0}.hero-icon{display:none}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* SKYCAST v1.1 globe enhancement */
.world-section{margin:0 0 26px;border:1px solid var(--line);border-radius:22px;background:white;overflow:hidden}.world-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:22px 24px}.world-heading .eyebrow{color:#50718d;font-size:11px}.world-heading h2{font-size:25px}.world-stage{position:relative;background:#0b1f3a}#globe{height:640px;width:100%;background:radial-gradient(ellipse at center,#193d62,#08192e)}#map-status:not(:empty){position:absolute;top:18px;left:18px;right:70px;margin:0;padding:10px 14px;border-radius:10px;background:#fff;color:var(--navy);font-size:14px;pointer-events:none}#focus-card{position:absolute;bottom:44px;left:22px;width:300px;padding:20px;background:#fffffffa;color:var(--navy);border:1px solid #d1e4f4;border-radius:17px;box-shadow:0 8px 25px #05132625}#focus-card[hidden]{display:none}#focus-card .eyebrow{color:#486b8c;font-size:10px}#focus-card h3{font-size:23px;line-height:1.35;margin:4px 0;overflow-wrap:anywhere}#focus-card p{font-size:14px;margin:5px 0}.focus-coords,.focus-time{color:var(--muted);font-size:12px!important}.focus-temperature{font-size:51px;line-height:1.2;margin-top:10px;font-weight:650}.focus-temperature span{font-size:35px;float:right}.focus-metrics{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:13px 0;font-size:12px;color:var(--muted)}.focus-metrics b{display:block;color:var(--navy);font-size:14px}.focus-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:13px}.focus-actions button{font-size:13px;padding:9px 10px;flex:1}.focus-actions .primary{background:var(--blue);color:white;border-color:var(--blue)}.focus-message:empty{display:none}.world-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 22px 0;font-size:13px;color:var(--muted)}.world-foot button{font-size:13px;white-space:nowrap}#global-status,.map-credit{margin:7px 22px;font-size:12px;color:var(--muted)}.map-credit{margin-bottom:16px}.map-credit a{color:#355f86}.maplibregl-ctrl button{min-height:40px!important;width:40px!important}.maplibregl-ctrl-attrib-button{min-height:24px!important}.maplibregl-canvas:focus-visible{outline-offset:-3px}@media(max-width:600px){.world-heading{padding:18px 14px}.world-heading h2{font-size:19px}.world-heading button{padding:9px 11px;font-size:13px}#globe{height:460px}#focus-card{position:relative;bottom:auto;left:auto;width:auto;margin:0;border:0;border-radius:0;padding:20px;background:white;box-shadow:none}.world-foot{padding:12px 14px 0;align-items:flex-start;gap:8px;font-size:12px}.world-foot span{max-width:170px}#global-status,.map-credit{margin-left:14px;margin-right:14px}.focus-actions button{min-height:46px}.world-section{border-radius:18px}#map-status:not(:empty){font-size:12px;left:12px;top:12px}} 
/* Sprint 1: flat world map presentation; forecast cards stay unchanged. */
.world-section{position:relative}.world-heading{padding:26px 24px}.world-heading h2{font-size:30px}.world-subtitle{margin:5px 0 0;color:var(--muted);font-size:14px}.world-heading .eyebrow{letter-spacing:3px;color:#2563eb}#globe{height:680px;background:#dbeaf3}.world-stage{background:#dbeaf3}.map-layer-label{display:inline-flex;gap:14px;align-items:center;margin:15px 22px 0;padding:8px 13px;border:1px solid #c5d9eb;border-radius:10px;color:#194775;background:#edf6ff;font-size:14px;font-weight:600}.map-layer-label span{font-size:12px;color:var(--muted)}.temperature-legend{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);margin:9px 22px}.temperature-legend i{width:130px;height:7px;border-radius:6px;background:linear-gradient(90deg,#8ab3e0,#b7e4ec,#edf3f5,#f4d095,#e89f84)}#location-summary{display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px;border-top:1px solid var(--line);background:#f0f6fc;padding:17px 22px;font-size:14px;color:var(--muted)}#location-summary b{color:var(--navy)}#focus-card{animation:card-in .2s ease-out}@keyframes card-in{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@media(min-width:1250px){.world-section{margin-left:-40px;margin-right:-40px}}@media(max-width:600px){.world-heading{padding:19px 14px}.world-heading h2{font-size:21px}.world-subtitle{font-size:12px;max-width:190px}#globe{height:480px}.map-layer-label{margin-left:14px}.temperature-legend{margin-left:14px}#location-summary{padding:16px 14px;gap:9px 17px;font-size:13px}#location-summary b{flex-basis:100%}}
/* Sprint 2: compact Earth highlights and device-local places. */
.earth-section,.saved-section{margin:0 0 24px;padding:22px;background:#fff;border:1px solid var(--line);border-radius:18px}.earth-eyebrow{font-size:11px;letter-spacing:2px;color:var(--blue);margin:0 0 4px}.earth-caption{font-size:13px;color:var(--muted);margin:7px 0 13px}.earth-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.earth-chip{text-align:left;padding:15px;background:#f5f9ff;transition:background .2s;border-top:3px solid #c3d8ef}.earth-chip:first-child{border-top-color:#dfa76e}.earth-chip:nth-child(2){border-top-color:#8ab9e0}.earth-chip:nth-child(3){border-top-color:#4783c2}.earth-chip span{font-size:12px;color:var(--muted);display:block}.earth-chip b{display:block;margin:8px 0 3px;font-size:16px;overflow-wrap:anywhere}.earth-chip strong{font-size:26px}.earth-chip small{font-size:12px;font-weight:400}.saved-ribbon{display:flex;flex-wrap:wrap;gap:8px}.saved-item{display:flex;max-width:100%}.saved-item button:first-child{border-radius:10px 0 0 10px;overflow-wrap:anywhere;min-width:0}.saved-item button:last-child{border-radius:0 10px 10px 0;border-left:0;min-width:40px}.night-toggle{margin:10px 0 0 10px;font-size:13px}.night-toggle[aria-pressed=true]{background:#163553;color:#fff;border-color:#163553}.night-caption{display:inline-block;margin:8px 14px;font-size:12px;color:var(--muted)}#save-current{font-size:13px}#focus-card [data-action=save]{flex-basis:100%;background:#eff6ff;color:#194775}@media(max-width:600px){.earth-section,.saved-section{padding:17px 14px}.earth-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.earth-chip{padding:12px}.earth-chip b{font-size:14px}.earth-chip strong{font-size:23px}.saved-section .section-head{flex-wrap:wrap}.night-toggle{margin-left:14px}.night-caption{display:block}.earth-section .section-head{margin-bottom:8px}}
/* Ask SKY: isolated assistant panel */
#ask-launcher{position:fixed;right:22px;bottom:calc(20px + env(safe-area-inset-bottom));z-index:10;background:#12385f;color:#fff;border:1px solid #5294c5;border-radius:30px;padding:13px 21px;box-shadow:0 5px 20px #0b1f3a22;font-weight:650}#ask-panel{position:fixed;z-index:11;inset:auto 20px calc(20px + env(safe-area-inset-bottom)) auto;margin:0;width:420px;max-width:calc(100% - 24px);height:650px;max-height:calc(var(--ask-available,100dvh) - 32px);padding:0;border:1px solid #c8dced;border-radius:20px;background:#f6f9fd;color:var(--navy);box-shadow:0 15px 55px #05182e35;overflow:hidden}#ask-panel[open]{display:flex;flex-direction:column}.ask-header{display:flex;justify-content:space-between;gap:12px;padding:21px;background:#103251;color:white;flex-shrink:0}.ask-header h2{font-size:23px}.ask-header p{margin:3px 0 9px;font-size:13px;color:#c4dcef}.ask-header strong{font-size:14px;overflow-wrap:anywhere}.ask-header button{background:transparent;border-color:#ffffff40;color:white;font-size:24px;min-width:44px;align-self:flex-start;padding:2px 12px}#ask-log{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:17px;scrollbar-gutter:stable}#ask-welcome>p{font-size:16px}.ask-prompts{display:flex;flex-direction:column;gap:9px}.ask-prompts button{text-align:left;font-size:14px;background:#fff;border-color:#d5e3f0}.ask-bubble{padding:13px 15px;border-radius:14px;margin:0 0 13px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:15px;background:#fff;border:1px solid #dfebf4}.ask-bubble.user{margin-left:24px;background:#e1edff;color:#103c75;border-color:#d2e2f8}.ask-bubble.assistant{margin-right:13px}.ask-status-row{padding:0 16px;flex-shrink:0}#ask-status{font-size:13px;color:var(--muted);margin:4px 0}#ask-retry{padding:6px 12px;min-height:38px;font-size:13px;margin-bottom:6px}#ask-form{display:flex;gap:8px;padding:12px 14px 5px;flex-shrink:0}#ask-question{min-width:0;padding:10px 12px;font-size:16px;height:46px}#ask-send{flex-shrink:0;background:var(--blue);color:#fff;padding:8px 13px}.ask-footer{display:flex;align-items:center;gap:10px;padding:0 14px;font-size:11px;color:var(--muted);flex-shrink:0}.ask-footer button{padding:5px 0;background:none;border:0;color:#32638d;font-size:12px;white-space:nowrap}.ask-privacy{font-size:11px;line-height:1.4;color:var(--muted);margin:0;padding:0 14px 12px;flex-shrink:0}@media(max-width:600px){#ask-launcher{right:14px;bottom:calc(14px + env(safe-area-inset-bottom));padding:12px 17px}#ask-panel{left:8px;right:8px;top:calc(var(--ask-top,0px) + var(--ask-available,100dvh)*.2);bottom:auto;width:auto;max-width:none;height:calc(var(--ask-available,100dvh)*.8 - 16px);max-height:none;border-radius:18px}.ask-header{padding:15px 16px}.ask-header p{margin-bottom:5px}.ask-privacy{padding-bottom:calc(10px + env(safe-area-inset-bottom))}.ask-footer span{font-size:10px}}

/* Small-phone floating sheet; background remains interactive. */
@media(max-width:430px){#ask-panel{--ask-view:var(--ask-available,100vh);--ask-sheet:min(620px,calc(var(--ask-view)*.78));left:14px;right:14px;top:calc(var(--ask-top,0px) + var(--ask-view) - var(--ask-sheet) - 12px - env(safe-area-inset-bottom));height:var(--ask-sheet);max-height:calc(var(--ask-view) - 24px - env(safe-area-inset-bottom));border-radius:20px}.ask-header{padding:12px 14px}.ask-header p{margin:2px 0 4px}#ask-form{position:sticky;bottom:0;background:#f6f9fd}.ask-privacy{padding-bottom:10px}}@supports(height:100dvh){@media(max-width:430px){#ask-panel{--ask-view:var(--ask-available,100dvh)}}}#ask-status[data-pending]{animation:ask-pending 1s ease-in-out infinite}#ask-status[data-pending]::after{content:none}@keyframes ask-pending{50%{opacity:.3}}@media(prefers-reduced-motion:reduce){#ask-status[data-pending]{animation:none}}

/* iPhone Safari: compact Ask SKY while the keyboard is open */
@media(max-width:430px){
  #ask-panel[data-keyboard="true"]{
    --ask-sheet:min(620px,calc(var(--ask-view)*.94));
    height:var(--ask-sheet);
    max-height:calc(var(--ask-view) - 8px - env(safe-area-inset-bottom));
  }
  #ask-panel[data-keyboard="true"] .ask-header{padding:8px 12px}
  #ask-panel[data-keyboard="true"] .ask-header h2{font-size:20px}
  #ask-panel[data-keyboard="true"] .ask-header p{display:none}
  #ask-panel[data-keyboard="true"] #ask-log{padding:10px 12px}

  #ask-panel[data-keyboard="true"] #ask-welcome:not([hidden]){display:block}
  #ask-panel[data-keyboard="true"] #ask-welcome>p{margin:0 0 8px;font-size:14px}
  #ask-panel[data-keyboard="true"] .ask-prompts{gap:6px}
  #ask-panel[data-keyboard="true"] .ask-prompts button{padding:8px 10px;min-height:38px;font-size:13px}
  #ask-panel[data-keyboard="true"] .ask-status-row{padding:0 12px}
  #ask-panel[data-keyboard="true"] #ask-form{padding:8px 10px 10px}
  #ask-panel[data-keyboard="true"] .ask-footer,
  #ask-panel[data-keyboard="true"] .ask-privacy{display:none}
}

/* iPhone Safari: keep the non-modal Ask SKY sheet visually stable over the map while the page scrolls */
@media(max-width:430px){
  #ask-panel{
    transform:translate3d(0,0,0);
    -webkit-backface-visibility:hidden;
    backface-visibility:hidden;
  }
}
