Monitor websites uptime using Cloudflare Workers
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781@import './tokens.css';@import './font-choice.css';@import './admin-shell.css';
/* Public Sans (400, 500, 600) */@font-face { font-family: 'Public Sans'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/public-sans-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face { font-family: 'Public Sans'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/public-sans-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face { font-family: 'Public Sans'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/public-sans-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face { font-family: 'Public Sans'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/public-sans-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face { font-family: 'Public Sans'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/public-sans-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face { font-family: 'Public Sans'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/public-sans-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
/* Martian Mono (400, 500, 600) */@font-face { font-family: 'Martian Mono'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/martian-mono-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face { font-family: 'Martian Mono'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/martian-mono-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face { font-family: 'Martian Mono'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/martian-mono-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face { font-family: 'Martian Mono'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/martian-mono-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face { font-family: 'Martian Mono'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/martian-mono-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face { font-family: 'Martian Mono'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/martian-mono-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
/* Schibsted Grotesk (500, 600, 700) */@font-face { font-family: 'Schibsted Grotesk'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/schibsted-grotesk-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face { font-family: 'Schibsted Grotesk'; font-style: normal; font-weight: 500; font-display: swap; src: url('/fonts/schibsted-grotesk-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face { font-family: 'Schibsted Grotesk'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/schibsted-grotesk-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face { font-family: 'Schibsted Grotesk'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/schibsted-grotesk-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face { font-family: 'Schibsted Grotesk'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/schibsted-grotesk-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face { font-family: 'Schibsted Grotesk'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/schibsted-grotesk-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
* { box-sizing: border-box;}
html,body { margin: 0; min-width: 0; background: var(--paper); color: var(--ink); font-family: var(--font-body);}
body { min-height: 100dvh; font-size: var(--text-body-size); line-height: var(--text-body-line-height);}
button,input,select,textarea { font: inherit;}
button,a { -webkit-tap-highlight-color: transparent;}
button { cursor: pointer;}
button:disabled { cursor: not-allowed; opacity: 0.45;}
a { color: inherit;}
h1,h2,h3,p { margin: 0;}
h1,h2,h3 { color: var(--ink); font-family: var(--font-display); font-style: normal; overflow-wrap: anywhere;}
h1 { font-size: var(--text-display-lg-size); line-height: var(--text-display-lg-line-height); font-weight: var(--text-display-lg-weight); letter-spacing: var(--text-display-lg-letter-spacing);}
h2 { font-size: var(--text-display-md-size); line-height: var(--text-display-md-line-height); font-weight: var(--text-display-md-weight);}
small { color: var(--muted); font-size: var(--text-body-sm-size);}
.tnum { font-family: var(--font-mono); font-variant-numeric: tabular-nums;}
.mono-label { color: var(--muted); font-family: var(--font-body); font-size: var(--text-label-size); line-height: var(--text-label-line-height); font-weight: var(--text-label-weight); letter-spacing: var(--text-label-letter-spacing);}
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;}
:focus { outline: none;}
:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px;}
/* ── Shared Component Reference Styles ────────────────────────────────────── */
/* Typography helper classes */.ut-label { font-family: var(--font-body); font-size: var(--text-label-size); line-height: var(--text-label-line-height); font-weight: var(--text-label-weight); letter-spacing: var(--text-label-letter-spacing); color: var(--muted);}
.ut-region .ut-label,.ut-region-cell .ut-label,.ut-region__code,.ut-strip__axis { font-family: var(--font-mono); font-variant-numeric: tabular-nums;}
.ut-data { font-family: var(--font-mono); font-size: var(--text-data-size); line-height: var(--text-data-line-height); font-variant-numeric: tabular-nums;}
.ut-figure { font-family: var(--font-mono); font-size: var(--text-figure-size); line-height: var(--text-figure-line-height); font-weight: var(--text-figure-weight); font-variant-numeric: tabular-nums;}
.ut-muted { color: var(--muted);}
.ut-display-lg,.ut-title-lg { font-family: var(--font-display); font-size: var(--text-display-lg-size); line-height: var(--text-display-lg-line-height); font-weight: var(--text-display-lg-weight); letter-spacing: var(--text-display-lg-letter-spacing);}
.ut-display-md,.ut-title-md { font-family: var(--font-display); font-size: var(--text-display-md-size); line-height: var(--text-display-md-line-height); font-weight: var(--text-display-md-weight);}
.ut-heading { font-family: var(--font-body); font-size: var(--text-heading-size); line-height: var(--text-heading-line-height); font-weight: var(--text-heading-weight);}
.ut-body { font-family: var(--font-body); font-size: var(--text-body-size); line-height: var(--text-body-line-height); font-weight: var(--text-body-weight);}
.ut-body-sm { font-family: var(--font-body); font-size: var(--text-body-sm-size); line-height: var(--text-body-sm-line-height);}
/* Keyboard hint */.ut-kbd,kbd { display: inline-block; padding: 1px var(--space-1); border: 1px solid var(--rule-strong); border-radius: var(--radius-xs); font-family: var(--font-mono); font-size: var(--text-label-size); line-height: var(--text-label-line-height); color: var(--muted);}
/* ─── Buttons ─────────────────────────────────────────────────────────────── */.ut-btn,.button { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2); box-sizing: border-box; height: var(--control-md); min-height: var(--control-md); padding: 0 calc((var(--space-3) + var(--space-4)) / 2); border: 1px solid transparent; border-radius: var(--radius-control); background: transparent; color: var(--ink); font-family: var(--font-body); font-size: var(--text-body-sm-size); font-weight: 500; line-height: var(--text-body-sm-line-height); white-space: nowrap; cursor: pointer; user-select: none; transition: background-color 120ms, border-color 120ms, color 120ms, box-shadow 120ms, transform 80ms;}
.ut-btn:focus-visible,.button:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px;}
.ut-btn:active:not([disabled]),.ut-btn.is-active,.button:active:not([disabled]),.button.is-active { transform: translateY(1px);}
.ut-btn:disabled,.ut-btn[disabled],.button:disabled,.button[disabled] { opacity: 0.45; cursor: not-allowed; box-shadow: none; transform: none;}
.ut-btn[aria-busy="true"],.button[aria-busy="true"] { cursor: progress;}
/* Primary */.ut-btn--primary,.button--primary { background: var(--ink); color: var(--paper); border-color: transparent; box-shadow: inset 0 1px 0 var(--control-highlight), var(--shadow-control);}
.ut-btn--primary:hover:not(:disabled),.ut-btn--primary.is-hover,.button--primary:hover:not(:disabled),.button--primary.is-hover { background: var(--ink-soft); color: var(--paper);}
.ut-btn--primary:active:not([disabled]),.ut-btn--primary.is-active,.button--primary:active:not([disabled]),.button--primary.is-active { box-shadow: inset 0 1px 0 var(--control-highlight);}
/* Secondary */.ut-btn--secondary,.button--secondary { background: var(--surface); color: var(--ink); border: 1px solid var(--rule-strong); box-shadow: var(--shadow-control);}
.ut-btn--secondary:hover:not(:disabled),.ut-btn--secondary.is-hover,.button--secondary:hover:not(:disabled),.button--secondary.is-hover { background: var(--paper); border-color: var(--ink-soft);}
.ut-btn--secondary:focus-visible,.button--secondary:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; border-color: var(--accent);}
.ut-btn--secondary:active:not([disabled]),.ut-btn--secondary.is-active,.button--secondary:active:not([disabled]),.button--secondary.is-active { background: var(--sunken); box-shadow: none;}
/* Quiet */.ut-btn--quiet,.button--quiet { background: transparent; border-color: transparent; color: var(--accent); box-shadow: none;}
.ut-btn--quiet:hover:not(:disabled),.ut-btn--quiet.is-hover,.button--quiet:hover:not(:disabled),.button--quiet.is-hover { background: var(--sunken); color: var(--accent-hover);}
.ut-btn--quiet:active:not([disabled]),.ut-btn--quiet.is-active,.button--quiet:active:not([disabled]),.button--quiet.is-active { background: var(--sunken); box-shadow: none;}
/* Danger */.ut-btn--danger,.button--danger { background: var(--down); color: var(--on-down); border-color: transparent; box-shadow: inset 0 1px 0 var(--control-highlight), var(--shadow-control);}
.ut-btn--danger:hover:not(:disabled),.ut-btn--danger.is-hover,.button--danger:hover:not(:disabled),.button--danger.is-hover { background: color-mix(in oklab, var(--down) 86%, var(--ink)); color: var(--on-down);}
.ut-btn--danger:active:not([disabled]),.ut-btn--danger.is-active,.button--danger:active:not([disabled]),.button--danger.is-active { box-shadow: inset 0 1px 0 var(--control-highlight);}
.button--danger.is-active { box-shadow: inset 0 1px 0 var(--control-highlight);}
/* Small button */.ut-btn--sm,.button--sm { height: var(--control-sm); min-height: var(--control-sm); padding: 0 calc((var(--space-2) + var(--space-3)) / 2); gap: calc((var(--space-1) + var(--space-2)) / 2); font-size: var(--text-data-size); line-height: var(--text-data-line-height);}
/* Icon button */.ut-btn--icon,.button--icon { width: var(--control-md); padding: 0;}
.ut-btn--sm.ut-btn--icon,.button--sm.button--icon { width: var(--control-sm);}
.ut-btn .ut-kbd,.button .ut-kbd { margin-left: var(--space-1);}
.ut-btn--primary .ut-kbd,.button--primary .ut-kbd { border-color: var(--control-highlight); color: var(--paper); opacity: 0.7;}
.ut-spinner { flex: none; width: 14px; height: 14px; box-sizing: border-box; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: ut-spin 700ms linear infinite;}
@keyframes ut-spin { to { transform: rotate(360deg); }}
/* ─── Segmented control ───────────────────────────────────────────────────── */.ut-segmented { display: inline-flex; gap: calc(var(--space-1) / 2); padding: calc(var(--space-1) / 2); border-radius: var(--radius-control); background: var(--sunken); box-shadow: var(--shadow-inset);}
.ut-segmented__item { display: inline-flex; align-items: center; justify-content: center; height: calc(var(--control-sm) - var(--space-1)); min-height: calc(var(--control-sm) - var(--space-1)); padding: 0 calc((var(--space-2) + var(--space-3)) / 2); border: 0; border-radius: var(--radius-sm); background: transparent; color: var(--ink-soft); font-family: var(--font-body); font-weight: 500; font-size: var(--text-data-size); line-height: 1; white-space: nowrap; cursor: pointer; user-select: none; box-shadow: none; transform: none; transition: background-color 120ms, color 120ms, box-shadow 120ms;}
.ut-segmented__item:hover { color: var(--ink);}
.ut-segmented__item:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px;}
.ut-segmented__item[aria-pressed="true"],.ut-segmented__item[aria-checked="true"],.ut-segmented__item[aria-selected="true"],.ut-segmented__item.is-active { background: var(--surface); color: var(--ink); box-shadow: var(--shadow-control);}
/* ─── Fields & Inputs ─────────────────────────────────────────────────────── */.ut-field,.field { display: grid; gap: var(--space-1); min-width: 0; color: var(--ink); font-weight: 500;}
.ut-field__label { font-size: var(--text-body-sm-size); line-height: var(--text-body-sm-line-height); font-weight: 600; color: var(--ink);}
.ut-field__optional { margin-left: calc((var(--space-1) + var(--space-2)) / 2); font-weight: 400; color: var(--muted);}
.ut-field__hint { font-size: var(--text-data-size); line-height: var(--text-data-line-height); color: var(--muted);}
.ut-field__error,.field-error { display: flex; gap: calc((var(--space-1) + var(--space-2)) / 2); align-items: baseline; font-size: var(--text-data-size); line-height: var(--text-data-line-height); color: var(--down);}
.ut-field__success,.field-success { font-size: var(--text-data-size); line-height: var(--text-data-line-height); color: var(--up);}
/* Text inputs */.ut-input,input:where(:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="hidden"])) { box-sizing: border-box; width: 100%; height: var(--control-md); min-height: var(--control-md); padding: 0 var(--space-3); border: 1px solid var(--rule-strong); border-radius: var(--radius-control); background: var(--surface); box-shadow: var(--shadow-inset); color: var(--ink); font-family: var(--font-body); font-size: var(--text-body-sm-size); line-height: var(--text-body-sm-line-height); transition: border-color 120ms, box-shadow 120ms, background-color 120ms;}
.ut-input::placeholder,input:where(:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="hidden"]))::placeholder { color: var(--muted);}
.ut-input:hover:not(:disabled),input:where(:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="hidden"])):hover:not(:disabled) { border-color: var(--ink-soft);}
.ut-input:focus,.ut-input.is-focus,input:where(:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="hidden"])):focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent), 0 0 0 4px var(--focus-halo);}
.ut-input:disabled,input:where(:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="hidden"])):disabled { border-color: var(--rule); background: var(--sunken); box-shadow: none; color: var(--muted); cursor: not-allowed;}
.ut-field--error .ut-input,.ut-field--error input,input[aria-invalid='true'] { border-color: var(--down);}
.ut-field--error .ut-input:focus,.ut-field--error .ut-input.is-focus,.ut-field--error input:focus,input[aria-invalid='true']:focus { outline: none; border-color: var(--down); box-shadow: 0 0 0 1px var(--down), 0 0 0 4px var(--down-halo);}
.ut-input--mono { font-family: var(--font-mono); font-size: var(--text-data-size);}
/* Affixes and Input Groups */.ut-input-group { box-sizing: border-box; width: 100%; height: var(--control-md); min-height: var(--control-md); border: 1px solid var(--rule-strong); border-radius: var(--radius-control); background: var(--surface); box-shadow: var(--shadow-inset); color: var(--ink); font-family: var(--font-body); font-size: var(--text-body-sm-size); line-height: var(--text-body-sm-line-height); transition: border-color 120ms, box-shadow 120ms; display: flex; align-items: stretch; overflow: hidden;}
.ut-input-group:hover:not(.is-disabled) { border-color: var(--ink-soft);}
.ut-input-group:focus-within,.ut-input-group.is-focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent), 0 0 0 4px var(--focus-halo);}
.ut-field--error .ut-input-group { border-color: var(--down);}
.ut-field--error .ut-input-group:focus-within { outline: none; border-color: var(--down); box-shadow: 0 0 0 1px var(--down), 0 0 0 4px var(--down-halo);}
.ut-input-group input { flex: 1 1 0; min-width: 0; height: 100%; min-height: 0; padding: 0 var(--space-3); border: 0; border-radius: 0; background: transparent; color: inherit; font: inherit; outline: none; box-shadow: none;}
.ut-affix { display: flex; align-items: center; padding: 0 calc((var(--space-2) + var(--space-3)) / 2); background: var(--paper); color: var(--muted); font-family: var(--font-mono); font-size: var(--text-data-size); white-space: nowrap;}
.ut-affix--prefix { border-right: 1px solid var(--rule);}
.ut-affix--suffix { border-left: 1px solid var(--rule);}
.ut-affix--icon { padding: 0 0 0 calc((var(--space-2) + var(--space-3)) / 2); background: transparent;}
.ut-affix--icon + input { padding-left: var(--space-2);}
/* ─── Native Fallback Selects ─────────────────────────────────────────────── *//* Single-select native dropdowns fallback; scoped to avoid overriding custom .ut-select button styles */select:not([multiple]):not([size]):not(.ut-select),select:not([multiple])[size="1"]:not(.ut-select),select.ut-input:not([multiple]):not([size]):not(.ut-select),select.ut-input:not([multiple])[size="1"]:not(.ut-select) { appearance: none; -webkit-appearance: none; -moz-appearance: none; box-sizing: border-box; width: 100%; height: var(--control-md); min-height: var(--control-md); padding: 0 calc(var(--space-3) + var(--space-4) + var(--space-2)) 0 var(--space-3); border: 1px solid var(--rule-strong); border-radius: var(--radius-control); background-color: var(--surface); background-image: linear-gradient(45deg, transparent 50%, var(--ink-soft) 50%), linear-gradient(135deg, var(--ink-soft) 50%, transparent 50%); background-position: calc(100% - var(--space-4) - 5px) calc(50% - 2px), calc(100% - var(--space-4)) calc(50% - 2px); background-size: 5px 5px, 5px 5px; background-repeat: no-repeat; box-shadow: var(--shadow-control); color: var(--ink); font-family: var(--font-body); font-size: var(--text-body-sm-size); line-height: var(--text-body-sm-line-height); cursor: pointer; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; transition: border-color 120ms, box-shadow 120ms, background-color 120ms;}
select:not([multiple]):not([size]):not(.ut-select):hover:not(:disabled),select:not([multiple])[size="1"]:not(.ut-select):hover:not(:disabled),select.ut-input:not([multiple]):not([size]):not(.ut-select):hover:not(:disabled),select.ut-input:not([multiple])[size="1"]:not(.ut-select):hover:not(:disabled) { border-color: var(--ink-soft); background-image: linear-gradient(45deg, transparent 50%, var(--ink) 50%), linear-gradient(135deg, var(--ink) 50%, transparent 50%);}
select:not([multiple]):not([size]):not(.ut-select):focus-visible,select:not([multiple])[size="1"]:not(.ut-select):focus-visible,select.ut-input:not([multiple]):not([size]):not(.ut-select):focus-visible,select.ut-input:not([multiple])[size="1"]:not(.ut-select):focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; border-color: var(--accent);}
select:not([multiple]):not([size]):not(.ut-select):disabled,select:not([multiple])[size="1"]:not(.ut-select):disabled,select.ut-input:not([multiple]):not([size]):not(.ut-select):disabled,select.ut-input:not([multiple])[size="1"]:not(.ut-select):disabled { opacity: 0.45; cursor: not-allowed; border-color: var(--rule); background-color: var(--sunken); box-shadow: none; background-image: linear-gradient(45deg, transparent 50%, var(--muted) 50%), linear-gradient(135deg, var(--muted) 50%, transparent 50%);}
select option { background-color: var(--surface); color: var(--ink);}
/* Status marks & glyphs */.ut-status { display: inline-flex; align-items: center; gap: var(--space-2); font-size: var(--text-body-size); font-weight: var(--text-heading-weight);}
.ut-glyph { flex: none; display: inline-block; width: 10px; height: 10px; box-sizing: border-box;}
.ut-glyph--up { border-radius: 50%; background: var(--up);}
.ut-glyph--degraded { background: var(--degraded); clip-path: polygon(50% 0, 100% 100%, 0 100%);}
.ut-glyph--down { border-radius: var(--radius-xs); background: var(--down);}
.ut-glyph--unknown { border: 2px solid var(--unknown); border-radius: 50%;}
.ut-glyph--paused { border-left: 3px solid var(--muted); border-right: 3px solid var(--muted); width: calc(var(--space-2) + 1px);}
.ut-status--up { color: var(--up);}
.ut-status--degraded { color: var(--degraded);}
.ut-status--down { color: var(--down);}
.ut-status--unknown,.ut-status--paused { color: var(--muted);}
.ut-status--chip { height: var(--space-6); padding: 0 var(--space-3) 0 var(--space-2); border-radius: var(--radius-full);}
.ut-status--chip.ut-status--up { background: var(--up-tint);}
.ut-status--chip.ut-status--degraded { background: var(--degraded-tint);}
.ut-status--chip.ut-status--down { background: var(--down-tint);}
.ut-status--chip.ut-status--unknown,.ut-status--chip.ut-status--paused { background: var(--sunken);}
/* Badges */.ut-badge,.monitor-badge,.badge { display: inline-flex; align-items: center; gap: var(--space-2); height: 20px; padding: 0 var(--space-2); border: 1px solid var(--rule); border-radius: var(--radius-sm); background: var(--surface); color: var(--ink); font-size: var(--text-data-size); font-weight: var(--text-figure-weight);}
.ut-badge::before,.monitor-badge::before { content: ""; width: var(--space-2); height: var(--space-2); border-radius: var(--radius-xs); background: var(--badge-color, var(--muted)); flex: none;}
/* Panels & Dialogs */.ut-panel,.settings-card { overflow: hidden; border: 1px solid var(--rule); border-radius: var(--radius-md); background: var(--surface);}
.ut-panel__head { display: flex; justify-content: space-between; align-items: center; gap: var(--space-3); padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--rule); background: var(--sunken);}
.ut-panel__body { padding: var(--space-4);}
.ut-scrim,.dialog-backdrop { position: fixed; inset: 0; display: grid; place-items: center; padding: var(--space-6); background: var(--overlay); z-index: var(--z-modal);}
dialog.confirm,dialog.ut-dialog,dialog,.ut-dialog,.dialog { display: grid; gap: var(--space-3); box-sizing: border-box; width: 100%; max-width: 440px; padding: var(--space-6); border: 1px solid var(--rule); border-radius: var(--radius-md); background: var(--surface); color: var(--ink); box-shadow: var(--shadow-overlay);}
dialog::backdrop,.confirm::backdrop { background: var(--overlay);}
dialog.confirm form,.confirm form { display: grid; gap: var(--space-3);}
.confirm-box { border: 1px solid var(--down); border-radius: var(--radius-sm); background: var(--down-tint); padding: var(--space-3); display: grid; gap: var(--space-2); color: var(--ink);}
.form-actions { display: flex; flex-wrap: wrap; gap: var(--space-2);}
.ut-dialog__actions { display: flex; justify-content: flex-end; gap: var(--space-2); padding-top: var(--space-2);}
/* Tables */table { width: 100%; border-collapse: collapse; font-size: var(--text-body-size);}
th { color: var(--muted); font-family: var(--font-body); font-size: var(--text-label-size); font-weight: var(--text-label-weight); letter-spacing: var(--text-label-letter-spacing); text-align: left; white-space: nowrap; background: var(--sunken); padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--rule);}
td { padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--rule); vertical-align: top;}
tbody tr:hover { background: var(--sunken);}
/* ─── Reduced Motion ──────────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }
button, a { transform: none !important; }}
/* ── Backward-compatible Layout & Component Helpers ───────────────────────── */
.page-head { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-3); padding-bottom: var(--space-4); border-bottom: 1px solid var(--rule); margin-bottom: var(--space-4);}
@media (min-width: 40rem) { .page-head { flex-direction: row; justify-content: space-between; align-items: flex-end; }}
.state,.center-state { padding: var(--space-8) 0; display: grid; gap: var(--space-2);}
.state--error { color: var(--down);}
.state--loading { color: var(--muted);}
.state--empty { color: var(--muted); border: 1px dashed var(--rule-strong); border-radius: var(--radius-md); padding: var(--space-8); background: var(--surface); text-align: center;}
.center-state { min-height: 100dvh; place-content: center;}
.workspace-state { max-width: 38rem; margin-inline: auto; padding-block: 12vh; display: grid; gap: var(--space-3); text-align: center;}
.workspace-state p:last-child { color: var(--muted);}
.workspace--restricted { min-height: 50vh; display: grid; place-content: center;}
.public-workspace { width: 100%; min-height: 100dvh;}
.landing { width: 100%; margin-inline: auto; padding-inline: var(--space-4); min-height: 100dvh; display: flex; flex-direction: column; padding-block: var(--space-4);}
.landing__nav,.landing__footer,.landing__foot { display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); flex: 0 0 auto;}
.landing__nav-links { display: flex; align-items: center; gap: var(--space-4);}
.landing__nav-link { color: var(--ink-soft); text-decoration: none; font-size: var(--text-body-size);}
.landing__nav-link:hover { color: var(--ink);}
.landing__hero { flex: 1 1 auto; display: flex; flex-direction: column; justify-content: center; align-items: center; width: min(100%, 44rem); margin-inline: auto; padding-block: var(--space-6); text-align: center;}
.landing__hero h1 { max-width: 18ch; margin-block: 0 var(--space-2);}
.landing__lede { max-width: 46ch; color: var(--ink-soft); font-size: var(--text-heading-size);}
.landing__hero .auth-card { width: min(100%, 28rem); margin-top: var(--space-6); padding: var(--space-4); text-align: left;}
.landing__hero .auth-card .button { width: 100%;}
.landing__note,.landing__disclosure { margin-top: var(--space-2); color: var(--muted); font-size: var(--text-body-size);}
.landing__footer,.landing__foot { border-top: 1px solid var(--rule); padding-top: var(--space-2); color: var(--muted); font-size: var(--text-body-size);}
.landing__form { display: grid; gap: var(--space-3); width: 100%;}
.auth-page,.auth-screen { min-height: 100dvh; width: min(100% - var(--space-6), 34rem); margin-inline: auto; padding-block: var(--space-4); display: flex; flex-direction: column;}
.auth-card { margin-top: clamp(3rem, 10vw, 6rem); border: 1px solid var(--rule); background: var(--surface); border-radius: var(--radius-md); padding: var(--space-6); display: grid; gap: var(--space-4);}
.auth-card__lede { color: var(--ink-soft); font-size: var(--text-heading-size);}
.auth-card__switch { color: var(--muted); font-size: var(--text-body-size);}
.auth-card__switch a { color: var(--ink);}
.status-dot { width: var(--space-2); height: var(--space-2); border-radius: 50%; background: var(--muted); display: inline-block; flex: none;}
.status-dot--up { background: var(--up);}
.status-dot--degraded,.status-dot--recovering { background: var(--degraded);}
.status-dot--down { background: var(--down);}
.status-dot--unknown { background: var(--unknown);}
/* ── Public Status Pages & Editor ─────────────────────────────────────────── */
.public-status-workspace { width: min(100% - var(--space-8), 70rem); margin-inline: auto; padding-block: var(--space-6);}
.public-status-page { display: grid; gap: var(--space-6);}
.public-status-page__head { display: grid; gap: var(--space-2); padding-bottom: var(--space-4); border-bottom: 1px solid var(--rule);}
.public-status-page__topline { display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); flex-wrap: wrap;}
.public-status-page__refresh-toggle { white-space: nowrap;}
.public-status-page__freshness { font-family: var(--font-mono); font-size: var(--text-data-size); color: var(--muted);}
.status-problem-summary { display: grid; gap: var(--space-3); padding: var(--space-4); border: 1px solid var(--down); border-radius: var(--radius-md); background: var(--down-tint);}
.status-problem-summary__heading { display: flex; align-items: center; gap: var(--space-2);}
.status-problem-summary__heading h2 { margin: 0; font-family: var(--font-display); font-size: var(--text-heading-size); font-weight: var(--text-heading-weight); color: var(--down);}
.status-problem-summary__indicator { display: inline-flex; width: var(--space-6); height: var(--space-6); align-items: center; justify-content: center; border-radius: var(--radius-full); background: var(--down); color: var(--on-down); font-weight: 700; font-size: var(--text-body-sm-size);}
.status-problem-summary__list { margin: 0; padding-inline-start: var(--space-4); color: var(--ink);}
.public-status-page__groups { display: grid; gap: var(--space-4);}
.public-status-page__group-row { min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-4);}
.public-status-page__group-row--paired { grid-template-columns: repeat(2, minmax(0, 1fr));}
@media (max-width: 700px) { .public-status-page__group-row--paired { grid-template-columns: minmax(0, 1fr); }}
.public-status-group { display: flex; flex-direction: column; background: var(--surface); border: 1px solid var(--rule); border-radius: var(--radius-md); padding: var(--space-4); gap: var(--space-3);}
.public-status-group--full { grid-column: 1 / -1;}
.public-status-group__head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-2);}
.public-status-group__title { font-family: var(--font-display); font-size: var(--text-heading-size); font-weight: var(--text-heading-weight); margin: 0; color: var(--ink);}
.public-status-group__count { font-family: var(--font-mono); font-size: var(--text-data-size); color: var(--muted);}
.group-pagination { display: flex; align-items: center; gap: var(--space-2);}
.group-pagination--bottom { justify-content: flex-end; padding-top: var(--space-3); border-top: 1px solid var(--rule);}
.public-status-monitor { min-width: 0; display: grid; grid-template-columns: minmax(10rem, 1fr) 5rem minmax(14rem, 2fr) auto; align-items: center; gap: var(--space-3); padding-block: var(--space-2); border-top: 1px solid var(--rule); text-decoration: none; color: var(--ink);}
.public-status-monitor:first-of-type { border-top: none;}
.public-status-monitor__summary { display: contents;}
.public-status-monitor__name { grid-column: 1; grid-row: 1; min-width: 0; display: flex; align-items: center; gap: var(--space-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
.public-status-monitor__uptime { grid-column: 2; grid-row: 1; font-family: var(--font-mono); font-size: var(--text-data-size); color: var(--muted);}
.public-status-monitor > .uptime-days,.public-status-monitor > .ut-strip__days,.public-status-monitor > .ut-strip { grid-column: 3; grid-row: 1; min-width: 0;}
.public-status-monitor__state { grid-column: 4; grid-row: 1; font-size: var(--text-body-sm-size); font-weight: 600; justify-self: end;}
.public-status-monitor__state--up { color: var(--up);}
.public-status-monitor__state--degraded,.public-status-monitor__state--recovering { color: var(--degraded);}
.public-status-monitor__state--down { color: var(--down);}
.public-status-monitor__state--unknown { color: var(--unknown);}
@media (max-width: 700px) { .public-status-monitor { grid-template-columns: minmax(0, 1fr); }
.public-status-monitor__summary { display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-2) var(--space-3); grid-column: 1; grid-row: 1; min-width: 0; }
.public-status-monitor__name { grid-column: auto; grid-row: auto; flex: 1 1 10rem; min-width: 0; }
.public-status-monitor__uptime { grid-column: auto; grid-row: auto; flex: 0 0 auto; }
.public-status-monitor__state { grid-column: auto; grid-row: auto; flex: 0 0 auto; margin-left: auto; }
.public-status-monitor > .uptime-days, .public-status-monitor > .ut-strip__days, .public-status-monitor > .ut-strip { grid-column: 1; grid-row: 2; min-width: 0; overflow: visible; }}
.drag-handle { color: var(--muted); cursor: grab; user-select: none;}
.public-slug-field { margin-top: var(--space-3);}
.public-slug-field__input { display: flex; align-items: stretch; height: var(--control-md); min-height: var(--control-md); border: 1px solid var(--rule-strong); border-radius: var(--radius-control); background: var(--surface); box-shadow: var(--shadow-inset); overflow: hidden; transition: border-color 120ms, box-shadow 120ms;}
.public-slug-field__input:hover:not(:disabled) { border-color: var(--ink-soft);}
.public-slug-field__input:focus-within { outline: none; border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent), 0 0 0 4px var(--focus-halo);}
.public-slug-field__input > span { display: flex; align-items: center; padding: 0 calc((var(--space-2) + var(--space-3)) / 2); background: var(--paper); border-right: 1px solid var(--rule); color: var(--muted); font-family: var(--font-mono); font-size: var(--text-data-size); white-space: nowrap;}
.public-slug-field__input input { flex: 1 1 0; min-width: 0; height: 100%; min-height: 0; padding: 0 var(--space-3); border: none; border-radius: 0; background: transparent; box-shadow: none; outline: none; font: inherit; color: inherit;}
.public-slug-field__input input:focus { border: none; box-shadow: none; outline: none;}
.product-mark { font-family: var(--font-body); font-size: var(--text-label-size); font-weight: var(--text-label-weight); letter-spacing: var(--text-label-letter-spacing); color: var(--muted);}
.empty-inline { font-size: var(--text-body-sm-size); color: var(--muted); margin: 0;}
/* ─── Coarse Pointers (Touch) ─────────────────────────────────────────────── */
@media (pointer: coarse) { .ut-btn, .button, .ut-input, .ut-input-group, input:where(:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="hidden"])), select:not([multiple]):not([size]):not(.ut-select), select:not([multiple])[size="1"]:not(.ut-select), .public-slug-field__input { height: var(--control-touch); min-height: var(--control-touch); }
.ut-input, .ut-input-group, input:where(:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="hidden"])), select:not([multiple]):not([size]):not(.ut-select), select:not([multiple])[size="1"]:not(.ut-select), .public-slug-field__input input { font-size: var(--text-body-size); }
.ut-segmented__item { height: calc(var(--control-touch) - var(--space-1)); min-height: calc(var(--control-touch) - var(--space-1)); font-size: var(--text-body-sm-size); }}