:root{--surface:#ffffff;--shade:#f3f5f6;--line:#d3d8dc;--grid:#e6e9ec;--text:#1a1d1f;--text-2:#3f474d;--text-3:#5d666d;--accent:#00695c;--s-north:#2a78d6;--s-south:#c2410c;--s-east:#0f8a5f;--s-west:#8a5a00;--s-central:#b83280;--b0:#23752f;--b1:#0b6fb8;--b2:#ffd21f;--b3:#f08a00;--b4:#c8102e;--y-worst:#b9a5e6;--y1:#b9a5e6;--y2:#e29fc6;--y3:#6fc3cb;--mute:#d5dade;--up:#c8102e;--down:#23752f;--gutter:16px;color-scheme:light}*{box-sizing:border-box}::selection{background:var(--accent);color:#fff}:focus-visible{outline:3px solid var(--text);outline-offset:2px}body{margin:0;background:var(--surface);color:var(--text);font:16px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;-webkit-text-size-adjust:100%}.wrap{max-width:1080px;margin:0 auto;padding-inline:max(var(--gutter),env(safe-area-inset-left)) max(var(--gutter),env(safe-area-inset-right))}h1{font-size:24px;line-height:1.2;margin:0}h2{font-size:20px;line-height:1.25;margin:0}h3{font-size:16px;margin:24px 0 8px}p{margin:0}a{color:var(--accent);text-underline-offset:2px}.note{color:var(--text-3);font-size:14px}.note.err{color:var(--b4)}.ic{width:.7em;height:.7em;margin-right:.3em;fill:currentColor;flex:none}.sw{display:inline-block;width:10px;height:10px;margin-right:6px;flex:none}header.site{border-bottom:1px solid var(--line)}header.site .wrap{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px 24px;padding-top:14px}header.site .wrap>div:first-child{padding-bottom:12px}.tag{color:var(--text-3);font-size:14px;margin-top:2px}.tabs{display:flex;gap:4px;margin-bottom:-1px}.tabs button{font:inherit;color:var(--text-2);background:0 0;border:0;border-bottom:3px solid transparent;padding:10px 12px;min-height:44px;cursor:pointer}.tabs button.on{color:var(--text);font-weight:600;border-bottom-color:var(--accent)}.btns{display:inline-flex}.btns button{font:inherit;font-size:14px;color:var(--text-2);background:var(--surface);border:1px solid var(--line);margin-left:-1px;padding:0 12px;min-height:36px;cursor:pointer}.btns button:first-child{margin-left:0;border-radius:3px 0 0 3px}.btns button:last-child{border-radius:0 3px 3px 0}.btns button.on{background:var(--text);border-color:var(--text);color:#fff;position:relative}@media (hover:hover){.btns button:not(.on):hover,.tabs button:not(.on):hover{background:var(--shade);color:var(--text)}}.btns button:not(.on):active,.tabs button:not(.on):active{background:var(--grid)}section{padding:28px 0 4px}section+section{border-top:1px solid var(--line);margin-top:28px}.head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 16px;margin-bottom:14px}.now{display:flex;gap:16px;align-items:center}.plate{flex:none;min-width:104px;padding:10px 12px 8px;border-radius:3px;text-align:center;font-size:44px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}.plate small{display:block;margin-top:6px;font-size:13px;font-weight:600}.word{font-size:28px;font-weight:700;line-height:1.15}#status{line-height:1.4}.scale{margin-top:20px;max-width:720px}.scale .bar{position:relative;display:flex;height:14px}.scale .bar i{display:block;height:100%}.scale .bar i+i{border-left:2px solid var(--surface)}.scale .mark{position:absolute;top:-6px;bottom:-6px;width:4px;margin-left:-2px;background:var(--text);outline:2px solid var(--surface)}.scale .names{display:flex;font-size:13px;color:var(--text-2);margin-top:6px;line-height:1.25}.scale .names span{padding-right:6px}.scale .names span:last-child{display:flex;flex-direction:column;align-items:flex-end;white-space:nowrap;padding-right:0}.scale .names b{display:block;font-weight:400;color:var(--text-3);font-variant-numeric:tabular-nums}.two{display:grid;gap:20px}.two>*{min-width:0}#map{position:relative;width:100%;aspect-ratio:6/5;max-height:70svh;overflow:hidden;background:#e4edf2;border:1px solid var(--line);border-radius:3px}.stage{position:absolute;left:50%;top:50%;height:100%;aspect-ratio:1000/569;transform:translate(-45.1%,-50%);background:url(assets/singapore.svg) center/100% 100% no-repeat}.pin{position:absolute;transform:translate(-50%,-50%);text-align:center;font-size:13px;line-height:1.2}.pin b{display:block;min-width:52px;padding:4px 8px;border-radius:3px;border:1px solid rgba(0,0,0,.25);font-size:20px;font-weight:700;font-variant-numeric:tabular-nums}.pin span{display:inline-block;margin-top:3px;padding:0 4px;background:rgba(255,255,255,.85);text-transform:capitalize;font-weight:600}.pin:empty{display:none}.tablewrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums;font-size:15px}td,th{text-align:right;padding:8px;border-bottom:1px solid var(--line);white-space:nowrap}thead th{background:var(--shade);color:var(--text-2);font-weight:600;font-size:13px;vertical-align:bottom;border-top:1px solid var(--line)}tbody th,td.l,th.l,thead tr:first-child th:first-child{text-align:left}tbody th{font-weight:600}#deltas tbody th,#hourly tbody th{text-transform:capitalize}td .spark{display:block}#deltas td:last-child,#deltas th:last-child{width:100%}.spark text{font-variant-numeric:tabular-nums}.spark .chg{fill:var(--text);font-size:12px;font-weight:600;paint-order:stroke;stroke:var(--surface);stroke-width:3px;stroke-linejoin:round}.spark .hr{fill:var(--text-3);font-size:10px}.spark{touch-action:pan-y;cursor:crosshair;-webkit-user-select:none;user-select:none}.spark .hover-rule{stroke:var(--text-3)}.spark .hover-dot{fill:var(--text);stroke:var(--surface);stroke-width:2px}#sparkTip{position:fixed;top:0;left:0;z-index:10}#sparkTip div{text-transform:none}#sparkTip .ic{width:11px;height:11px;margin:0 4px 0 0;vertical-align:-1px}#sparkTip .delta{justify-content:flex-end}.chip{display:inline-block;min-width:44px;padding:2px 8px;border-radius:3px;text-align:center;font-weight:700}.lv2{display:block;font-weight:400;font-size:13px;color:var(--text-3);padding-left:16px;text-transform:none}.lvl{display:none}#hourly{table-layout:fixed;border-collapse:separate;border-spacing:0}#hourly td,#hourly th{padding:6px;border-left:1px solid var(--surface)}#hourly tbody th,#hourly thead th:first-child{padding-right:12px;position:sticky;left:0;box-shadow:-3px 0 0 var(--surface);background:var(--surface);border-right:1px solid var(--line);z-index:1}#hourly thead th:first-child{background:var(--shade)}#hourly .sel{box-shadow:inset 2px 0 0 var(--text),inset -2px 0 0 var(--text)}#hourly thead .sel{background:var(--text);color:#fff;box-shadow:none}.legend{display:flex;flex-wrap:wrap;gap:4px 16px;margin-bottom:4px;color:var(--text-2);font-size:14px}#histLegend span+span{text-transform:capitalize}.chart{position:relative;min-height:240px}.chartbox{position:relative}.sw.this-year{background:linear-gradient(90deg,var(--b0),var(--b1),var(--b2),var(--b3));outline:1px solid var(--text)}.keybox{position:absolute;top:16px;left:46px;z-index:1;flex-direction:column;flex-wrap:nowrap;gap:3px;margin:0;padding:8px 10px;background:var(--surface);border:1px solid var(--line);border-radius:3px;font-size:13px;line-height:1.3;pointer-events:none}.chart svg{display:block;width:100%;touch-action:pan-y;-webkit-user-select:none;user-select:none}.chart text{fill:var(--text-3);font-size:12px}.chart .mark{fill:var(--text);font-size:14px;font-weight:700;paint-order:stroke;stroke:var(--surface);stroke-width:4px;stroke-linejoin:round}.chart .pulse{transform-box:fill-box;transform-origin:center;animation:1.6s ease-out infinite pulse}@keyframes pulse{from{transform:scale(1);opacity:.55}to{transform:scale(3.6);opacity:0}}.tip{position:absolute;top:8px;pointer-events:none;background:var(--surface);border:1px solid var(--text-3);border-radius:3px;padding:6px 10px;font-size:13px;white-space:nowrap;display:none;z-index:2}.tip b{display:block;margin-bottom:2px}.tip div{display:flex;justify-content:space-between;gap:16px;text-transform:capitalize;font-variant-numeric:tabular-nums}.tip .r3{display:grid;grid-template-columns:1fr auto auto;gap:12px}.tip .r3>:nth-child(n+2){text-align:right}.tip .d{display:flex;align-items:center;justify-content:space-between;gap:6px;min-width:52px;color:var(--text-2);text-transform:none}.chart .tip .d .ic{display:block;width:10px;height:10px;margin:0;flex:none}.empty{min-height:120px;display:grid;place-items:center;text-align:center;color:var(--text-3)}.chart .empty{min-height:240px}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:16px}.loading-title{color:var(--text);font-weight:600}.loading .step{min-height:1.5em;max-width:44ch}.wait #histLegend{display:none}.spinner{width:28px;height:28px;margin-bottom:6px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.chart .pulse{animation:none;opacity:0}.spinner{animation:none}}.support{background:var(--accent);color:#fff}.support .wrap{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:max(8px,env(safe-area-inset-top));padding-bottom:8px}.support p{font-weight:700}.support-btn{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:0 14px;border-radius:3px;background:#fff;color:var(--accent);font-size:15px;font-weight:700;text-decoration:none;white-space:nowrap}.support-btn svg{width:18px;height:18px;flex:none}.support-btn:focus-visible{outline-color:#fff}@media (hover:hover){.support-btn:hover{background:var(--shade)}}.support-btn:active{background:var(--grid)}main{padding-bottom:max(40px,env(safe-area-inset-bottom))}@media (pointer:coarse){.btns button,.support-btn{min-height:44px}}@media (max-width:480px){.btns{display:flex;width:100%}.btns button{flex:1;padding:0}}@media (max-width:560px){.keybox{top:10px;left:42px;padding:5px 7px;gap:1px;font-size:11px;line-height:1.2}.keybox .sw{width:8px;height:8px;margin-right:5px}}@media (max-width:420px){.plate{min-width:88px;font-size:38px}.word{font-size:24px}}@media (min-width:561px){#status{text-align:right}#map{aspect-ratio:1000/569}.stage{transform:translate(-50%,-50%)}.lvl{display:table-cell}.lv2{display:none}}@media (min-width:940px){.two{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);align-items:start}.two td,.two th{padding-inline:5px}}