:root{--font-display:Outfit, Figtree, sans-serif;--font-body:Figtree, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--bg:#F6F1E6;--card:#FFFDF8;--line:rgba(11,77,59,.12);--line-soft:rgba(11,77,59,.1);--ink:#14231D;--text:#1F2A26;--text-2:#3B4A44;--muted:#5B6B64;--brand:#0B4D3B;--on-brand:#F6F1E6;--link-hover:#2E7E6B;--accent:#D39A3A;--up:#2E7E6B;--up-text:#1F6B59;--up-bg:#E3EFE9;--partial:#C2410C;--warn-text:#9A3412;--warn-bg:#FCEBDD;--warn-hero:#FCF0E6;--warn-hero-line:#F2D2B8;--warn-hero-text:#7C2D12;--down:#991B1B;--down-bg:#F7E1E1;--down-hero:#FBECEC;--down-hero-line:#F0CACA;--down-hero-text:#7F1D1D;--none:#E6E0D2;--neutral:#ECE6D8}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font:15px/1.5 var(--font-body)}
a{color:var(--brand);text-decoration-color:color-mix(in srgb,var(--brand) 35%,transparent);text-underline-offset:3px}
a:hover{color:var(--link-hover)}
a:focus-visible{outline:2px solid var(--brand);outline-offset:3px;border-radius:4px}
h1,h2,h3{font-family:var(--font-display);margin:0}
p{margin:0}
.wrap{max-width:880px;margin:0 auto;padding:48px 24px 64px;display:flex;flex-direction:column;gap:32px}
main{display:flex;flex-direction:column;gap:32px}
header{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:14px;text-decoration:none}
.mark{font:800 32px/1 var(--font-display);letter-spacing:-.03em;color:var(--brand)}
.mark span{color:var(--accent)}
.logo{display:block;width:40px;height:40px}
.word{font:700 22px/1 var(--font-display);letter-spacing:-.02em;color:var(--brand)}
.brand .bar{width:1px;height:22px;background:var(--line)}
.what{font:500 18px var(--font-display);color:var(--muted)}
nav{display:flex;gap:20px;font-size:14px;font-weight:500}
.hero{border-radius:20px;padding:32px;display:flex;gap:20px;align-items:center;border:1px solid}
.hero h1{font-weight:600;font-size:32px;letter-spacing:-.02em;line-height:1.15}
.hero p{opacity:.85;margin-top:4px}
.hero-icon{flex:none;width:52px;height:52px;border-radius:999px;display:flex;align-items:center;justify-content:center}
.hero.ok{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}
.hero.ok .hero-icon{background:var(--on-brand);color:var(--brand)}
.hero.down{background:var(--down-hero);border-color:var(--down-hero-line);color:var(--down-hero-text)}
.hero.down .hero-icon{background:var(--down);color:#fff}
.hero.trouble{background:var(--warn-hero);border-color:var(--warn-hero-line);color:var(--warn-hero-text)}
.hero.trouble .hero-icon{background:var(--partial);color:#fff}
.hero.unknown{background:var(--card);border-color:var(--line);color:var(--ink)}
.hero.unknown .hero-icon{background:var(--none);color:var(--text-2)}
.card{border-radius:16px;background:var(--card);border:1px solid var(--line)}
.list{overflow:hidden}
.note{padding:24px;display:flex;flex-direction:column;gap:8px}
.note h2{font-weight:600;font-size:20px;color:var(--brand)}
.note h3{font-weight:600;font-size:18px;color:var(--brand)}
.note p{color:var(--text-2)}
.meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13px;color:var(--muted)}
.pill{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;border-radius:999px;padding:3px 10px;background:var(--neutral);color:var(--text-2)}
.pill.ok{background:var(--up-bg);color:var(--up-text)}
.pill.warn{background:var(--warn-bg);color:var(--warn-text)}
.group{display:flex;flex-direction:column;gap:12px}
.label{font:600 15px var(--font-display);letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.row{padding:20px 24px;display:flex;flex-direction:column;gap:12px}
.row+.row{border-top:1px solid var(--line-soft)}
.head{display:flex;align-items:center;gap:12px}
.dot{flex:none;width:28px;height:28px;border-radius:999px;display:flex;align-items:center;justify-content:center;background:var(--up-bg);color:var(--up-text)}
.dot.down{background:var(--down-bg);color:var(--down)}
.dot.trouble,.dot.maintenance{background:var(--warn-bg);color:var(--warn-text)}
.dot.unknown{background:var(--neutral);color:var(--text-2)}
.name{flex:1 1 auto;min-width:0;display:flex;flex-direction:column}
.name b{font-weight:600;font-size:16px;color:var(--ink)}
.name span{font-size:13px;color:var(--muted);overflow-wrap:anywhere}
.name em{font-style:normal;font-weight:500;color:var(--up-text)}
.name em.down{color:var(--down)}
.name em.trouble,.name em.maintenance{color:var(--warn-text)}
.name em.unknown{color:var(--muted)}
.num{font-variant-numeric:tabular-nums}
.head .num{text-align:right;display:flex;flex-direction:column}
.head .num b{font-weight:600;color:var(--ink)}
.head .num span{font-size:12px;color:var(--muted)}
.head .upt{min-width:72px}
.bars{display:flex;gap:2px;height:32px}
.t{display:block;flex:1 1 0;min-width:0;border-radius:2px;background:var(--none);transition:opacity .12s}
.t.up{background:var(--up)}
.t.partial{background:var(--partial)}
.t.down{background:var(--down)}
.bars:hover .t{opacity:.45}
.bars .t:hover{opacity:1}
.cap{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:var(--muted);min-height:18px}
.cap.on{color:var(--ink);font-weight:500}
.narrow{display:none}
.legend{display:flex;flex-wrap:wrap;gap:8px 20px;font-size:13px;color:var(--muted)}
.legend span{display:flex;align-items:center;gap:8px}
.legend .t{flex:none;width:10px;height:10px}
.muted{font-size:14px;color:var(--muted)}
footer{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding-top:24px;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}
.sig{display:flex;align-items:center;gap:10px;color:var(--brand)}
.sig b{font:700 13px var(--font-display)}
.thaana{font-family:"Noto Sans Thaana",sans-serif;font-weight:500}
@media (max-width:640px){
	.wrap{padding:28px 16px 48px}
	.hero{padding:24px}
	.hero h1{font-size:26px}
	.row{padding:16px}
	.t.o,.head .ping,.wide{display:none}
	.narrow{display:inline}
}
@media (prefers-reduced-motion:reduce){.t{transition:none}}
.stop{display:none}
.host::after{content:" · "}

/* ---- frond style: services drawn as palm fronds, a pair of leaflets per day ---- */
/* Palm shade falling across the page from the top right, as it does across the banner. */
.s-frond{position:relative}
.s-frond::before{content:"";position:fixed;top:0;right:0;width:min(1500px,135vw);aspect-ratio:1500/844;z-index:0;pointer-events:none;background:url(/shade.webp?v=1) right top/100% auto no-repeat;mix-blend-mode:multiply;opacity:.2}
.s-frond .wrap{position:relative;z-index:1;max-width:1000px;gap:56px}
.s-frond main{gap:56px}
.s-frond .hero{position:relative;overflow:hidden;isolation:isolate;border:0;border-radius:28px;padding:48px;min-height:380px;align-items:flex-end;color:var(--on-brand);background:var(--brand)}
.s-frond .hero.trouble{background:#7A4310}
.s-frond .hero.down{background:#7F1D1D}
.s-frond .hero.unknown{background:#3B4A44}
.s-frond .hero::before{content:"";position:absolute;inset:0;z-index:-1;background:url(/hero.webp?v=1) right top/cover no-repeat;mix-blend-mode:multiply}
.s-frond .hero-icon{display:none}
.s-frond .hero h1{font-weight:700;font-size:clamp(40px,8.2vw,84px);letter-spacing:-.035em;line-height:.98;max-width:9em;text-wrap:balance}
.s-frond .hero p{margin-top:18px;font-size:17px;opacity:.9}
.s-frond .stop{display:inline;color:var(--on-brand)}
.s-frond .hero.ok .stop{color:var(--accent)}
.s-frond .label{font:500 17px var(--font-display);letter-spacing:0;text-transform:none}
.s-frond .group{gap:8px}
.s-frond .card{background:none;border:0;border-radius:0}
.s-frond .list{overflow:visible}
.s-frond .row{padding:28px 0 24px;gap:6px}
.s-frond .row+.row{border-top:1px solid var(--line)}
.s-frond .dot{display:none}
.s-frond .name b{font:600 26px/1.15 var(--font-display);letter-spacing:-.02em;color:var(--brand)}
.s-frond .name>span{font-size:14px;display:flex;flex-wrap:wrap;gap:0 12px;margin-top:2px}
.s-frond .host::after{content:none}
.s-frond .head{align-items:flex-start;gap:28px}
.s-frond .head .num b{font:600 20px/1.3 var(--font-display)}
.s-frond .head .num span{font-size:13px}
.s-frond .bars{display:block;height:auto;margin:2px 0 0 -6px}
.s-frond .frond svg{display:block;width:100%;height:auto;overflow:visible}
.s-frond .frond .narrow{display:none}
.s-frond .rib{fill:none;stroke:var(--brand);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;opacity:.5}
.s-frond .stalk{fill:none;stroke:var(--brand);stroke-width:3.2;stroke-linecap:round;opacity:.5}
.s-frond .frond .t{display:inline;background:none;transition:opacity .12s}
.s-frond .frond .t path{fill:color-mix(in srgb,var(--brand) 22%,var(--bg))}
.s-frond .frond rect{fill:transparent;pointer-events:all}
.s-frond .frond .up path{fill:var(--brand)}
.s-frond .frond .partial path{fill:var(--partial)}
.s-frond .frond .down path{fill:var(--down)}
.s-frond .frond:hover .t{opacity:.35}
.s-frond .frond .t:hover{opacity:1}
.s-frond .cap{font-size:13px}
.s-frond .legend .t{width:4px;height:16px;border-radius:2px;transform:rotate(25deg);margin:0 3px}
.s-frond .legend .t.up{background:var(--brand)}
.s-frond .legend .t.down{height:9px}
.s-frond .legend .t.none{background:color-mix(in srgb,var(--brand) 22%,var(--bg))}
.s-frond .note{padding:24px 0}
@keyframes stem{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@keyframes leaf{from{opacity:0;transform:scale(.15)}to{opacity:1;transform:scale(1)}}
.s-frond.first .row:nth-child(2){--d:.2s}
.s-frond.first .row:nth-child(3){--d:.4s}
.s-frond.first .group+.group .row{--d:.6s}
.s-frond.first .rib{stroke-dasharray:1;animation:stem 1.9s cubic-bezier(.3,.6,.3,1) var(--d,0s) both}
.s-frond.first .frond .t{transform-box:fill-box;transform-origin:0 50%;animation:leaf .7s cubic-bezier(.2,.8,.2,1) both}
.s-frond.first .frond .t:nth-of-type(1){animation-delay:calc(var(--d,0s) + 0ms)}
.s-frond.first .frond .t:nth-of-type(2){animation-delay:calc(var(--d,0s) + 19ms)}
.s-frond.first .frond .t:nth-of-type(3){animation-delay:calc(var(--d,0s) + 38ms)}
.s-frond.first .frond .t:nth-of-type(4){animation-delay:calc(var(--d,0s) + 57ms)}
.s-frond.first .frond .t:nth-of-type(5){animation-delay:calc(var(--d,0s) + 76ms)}
.s-frond.first .frond .t:nth-of-type(6){animation-delay:calc(var(--d,0s) + 95ms)}
.s-frond.first .frond .t:nth-of-type(7){animation-delay:calc(var(--d,0s) + 114ms)}
.s-frond.first .frond .t:nth-of-type(8){animation-delay:calc(var(--d,0s) + 133ms)}
.s-frond.first .frond .t:nth-of-type(9){animation-delay:calc(var(--d,0s) + 152ms)}
.s-frond.first .frond .t:nth-of-type(10){animation-delay:calc(var(--d,0s) + 171ms)}
.s-frond.first .frond .t:nth-of-type(11){animation-delay:calc(var(--d,0s) + 190ms)}
.s-frond.first .frond .t:nth-of-type(12){animation-delay:calc(var(--d,0s) + 209ms)}
.s-frond.first .frond .t:nth-of-type(13){animation-delay:calc(var(--d,0s) + 228ms)}
.s-frond.first .frond .t:nth-of-type(14){animation-delay:calc(var(--d,0s) + 247ms)}
.s-frond.first .frond .t:nth-of-type(15){animation-delay:calc(var(--d,0s) + 266ms)}
.s-frond.first .frond .t:nth-of-type(16){animation-delay:calc(var(--d,0s) + 285ms)}
.s-frond.first .frond .t:nth-of-type(17){animation-delay:calc(var(--d,0s) + 304ms)}
.s-frond.first .frond .t:nth-of-type(18){animation-delay:calc(var(--d,0s) + 323ms)}
.s-frond.first .frond .t:nth-of-type(19){animation-delay:calc(var(--d,0s) + 342ms)}
.s-frond.first .frond .t:nth-of-type(20){animation-delay:calc(var(--d,0s) + 361ms)}
.s-frond.first .frond .t:nth-of-type(21){animation-delay:calc(var(--d,0s) + 380ms)}
.s-frond.first .frond .t:nth-of-type(22){animation-delay:calc(var(--d,0s) + 399ms)}
.s-frond.first .frond .t:nth-of-type(23){animation-delay:calc(var(--d,0s) + 418ms)}
.s-frond.first .frond .t:nth-of-type(24){animation-delay:calc(var(--d,0s) + 437ms)}
.s-frond.first .frond .t:nth-of-type(25){animation-delay:calc(var(--d,0s) + 456ms)}
.s-frond.first .frond .t:nth-of-type(26){animation-delay:calc(var(--d,0s) + 475ms)}
.s-frond.first .frond .t:nth-of-type(27){animation-delay:calc(var(--d,0s) + 494ms)}
.s-frond.first .frond .t:nth-of-type(28){animation-delay:calc(var(--d,0s) + 513ms)}
.s-frond.first .frond .t:nth-of-type(29){animation-delay:calc(var(--d,0s) + 532ms)}
.s-frond.first .frond .t:nth-of-type(30){animation-delay:calc(var(--d,0s) + 551ms)}
.s-frond.first .frond .t:nth-of-type(31){animation-delay:calc(var(--d,0s) + 570ms)}
.s-frond.first .frond .t:nth-of-type(32){animation-delay:calc(var(--d,0s) + 589ms)}
.s-frond.first .frond .t:nth-of-type(33){animation-delay:calc(var(--d,0s) + 608ms)}
.s-frond.first .frond .t:nth-of-type(34){animation-delay:calc(var(--d,0s) + 627ms)}
.s-frond.first .frond .t:nth-of-type(35){animation-delay:calc(var(--d,0s) + 646ms)}
.s-frond.first .frond .t:nth-of-type(36){animation-delay:calc(var(--d,0s) + 665ms)}
.s-frond.first .frond .t:nth-of-type(37){animation-delay:calc(var(--d,0s) + 684ms)}
.s-frond.first .frond .t:nth-of-type(38){animation-delay:calc(var(--d,0s) + 703ms)}
.s-frond.first .frond .t:nth-of-type(39){animation-delay:calc(var(--d,0s) + 722ms)}
.s-frond.first .frond .t:nth-of-type(40){animation-delay:calc(var(--d,0s) + 741ms)}
.s-frond.first .frond .t:nth-of-type(41){animation-delay:calc(var(--d,0s) + 760ms)}
.s-frond.first .frond .t:nth-of-type(42){animation-delay:calc(var(--d,0s) + 779ms)}
.s-frond.first .frond .t:nth-of-type(43){animation-delay:calc(var(--d,0s) + 798ms)}
.s-frond.first .frond .t:nth-of-type(44){animation-delay:calc(var(--d,0s) + 817ms)}
.s-frond.first .frond .t:nth-of-type(45){animation-delay:calc(var(--d,0s) + 836ms)}
.s-frond.first .frond .t:nth-of-type(46){animation-delay:calc(var(--d,0s) + 855ms)}
.s-frond.first .frond .t:nth-of-type(47){animation-delay:calc(var(--d,0s) + 874ms)}
.s-frond.first .frond .t:nth-of-type(48){animation-delay:calc(var(--d,0s) + 893ms)}
.s-frond.first .frond .t:nth-of-type(49){animation-delay:calc(var(--d,0s) + 912ms)}
.s-frond.first .frond .t:nth-of-type(50){animation-delay:calc(var(--d,0s) + 931ms)}
.s-frond.first .frond .t:nth-of-type(51){animation-delay:calc(var(--d,0s) + 950ms)}
.s-frond.first .frond .t:nth-of-type(52){animation-delay:calc(var(--d,0s) + 969ms)}
.s-frond.first .frond .t:nth-of-type(53){animation-delay:calc(var(--d,0s) + 988ms)}
.s-frond.first .frond .t:nth-of-type(54){animation-delay:calc(var(--d,0s) + 1007ms)}
.s-frond.first .frond .t:nth-of-type(55){animation-delay:calc(var(--d,0s) + 1026ms)}
.s-frond.first .frond .t:nth-of-type(56){animation-delay:calc(var(--d,0s) + 1045ms)}
.s-frond.first .frond .t:nth-of-type(57){animation-delay:calc(var(--d,0s) + 1064ms)}
.s-frond.first .frond .t:nth-of-type(58){animation-delay:calc(var(--d,0s) + 1083ms)}
.s-frond.first .frond .t:nth-of-type(59){animation-delay:calc(var(--d,0s) + 1102ms)}
.s-frond.first .frond .t:nth-of-type(60){animation-delay:calc(var(--d,0s) + 1121ms)}
.s-frond.first .frond .t:nth-of-type(61){animation-delay:calc(var(--d,0s) + 1140ms)}
.s-frond.first .frond .t:nth-of-type(62){animation-delay:calc(var(--d,0s) + 1159ms)}
.s-frond.first .frond .t:nth-of-type(63){animation-delay:calc(var(--d,0s) + 1178ms)}
.s-frond.first .frond .t:nth-of-type(64){animation-delay:calc(var(--d,0s) + 1197ms)}
.s-frond.first .frond .t:nth-of-type(65){animation-delay:calc(var(--d,0s) + 1216ms)}
.s-frond.first .frond .t:nth-of-type(66){animation-delay:calc(var(--d,0s) + 1235ms)}
.s-frond.first .frond .t:nth-of-type(67){animation-delay:calc(var(--d,0s) + 1254ms)}
.s-frond.first .frond .t:nth-of-type(68){animation-delay:calc(var(--d,0s) + 1273ms)}
.s-frond.first .frond .t:nth-of-type(69){animation-delay:calc(var(--d,0s) + 1292ms)}
.s-frond.first .frond .t:nth-of-type(70){animation-delay:calc(var(--d,0s) + 1311ms)}
.s-frond.first .frond .t:nth-of-type(71){animation-delay:calc(var(--d,0s) + 1330ms)}
.s-frond.first .frond .t:nth-of-type(72){animation-delay:calc(var(--d,0s) + 1349ms)}
.s-frond.first .frond .t:nth-of-type(73){animation-delay:calc(var(--d,0s) + 1368ms)}
.s-frond.first .frond .t:nth-of-type(74){animation-delay:calc(var(--d,0s) + 1387ms)}
.s-frond.first .frond .t:nth-of-type(75){animation-delay:calc(var(--d,0s) + 1406ms)}
.s-frond.first .frond .t:nth-of-type(76){animation-delay:calc(var(--d,0s) + 1425ms)}
.s-frond.first .frond .t:nth-of-type(77){animation-delay:calc(var(--d,0s) + 1444ms)}
.s-frond.first .frond .t:nth-of-type(78){animation-delay:calc(var(--d,0s) + 1463ms)}
.s-frond.first .frond .t:nth-of-type(79){animation-delay:calc(var(--d,0s) + 1482ms)}
.s-frond.first .frond .t:nth-of-type(80){animation-delay:calc(var(--d,0s) + 1501ms)}
.s-frond.first .frond .t:nth-of-type(81){animation-delay:calc(var(--d,0s) + 1520ms)}
.s-frond.first .frond .t:nth-of-type(82){animation-delay:calc(var(--d,0s) + 1539ms)}
.s-frond.first .frond .t:nth-of-type(83){animation-delay:calc(var(--d,0s) + 1558ms)}
.s-frond.first .frond .t:nth-of-type(84){animation-delay:calc(var(--d,0s) + 1577ms)}
.s-frond.first .frond .t:nth-of-type(85){animation-delay:calc(var(--d,0s) + 1596ms)}
.s-frond.first .frond .t:nth-of-type(86){animation-delay:calc(var(--d,0s) + 1615ms)}
.s-frond.first .frond .t:nth-of-type(87){animation-delay:calc(var(--d,0s) + 1634ms)}
.s-frond.first .frond .t:nth-of-type(88){animation-delay:calc(var(--d,0s) + 1653ms)}
.s-frond.first .frond .t:nth-of-type(89){animation-delay:calc(var(--d,0s) + 1672ms)}
.s-frond.first .frond .t:nth-of-type(90){animation-delay:calc(var(--d,0s) + 1691ms)}
@media (max-width:640px){
	.s-frond .wrap,.s-frond main{gap:40px}
	.s-frond .hero{padding:28px 24px;min-height:300px;border-radius:22px}
	.s-frond .hero::before{opacity:.7}
	.s-frond .hero h1{font-size:44px}
	.s-frond .name b{font-size:22px}
	.s-frond .frond .wide{display:none}
	.s-frond .frond .narrow{display:block}
}
@media (prefers-reduced-motion:reduce){.s-frond.first .rib,.s-frond.first .frond .t{animation:none}}
