@font-face{font-family:Excalifont;src:url(/fonts/Excalifont-Regular.woff2)format("woff2");font-style:normal;font-weight:400;font-display:swap}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#fcfaf4;--paper-2:#f5f1e6;--ink:#2a2721;--ink-soft:#56524a;--muted:#857f73;--faint:#b0a99a;--rule:#cabfa9;--grid:#5c728e26;--hatch:#dcd2c2;--ok:#6e8f5a;--warn:#bd8a2c;--bad:#b8523c;--accent:#4e7ca1;--plum:#8a5f86;--map-land:#c6ae7e8c;--map-land-ink:#93805a;--map-coast:#6b6053;--map-sea-ink:#5b86ad;--map-sea:color-mix(in srgb, var(--accent) 10%, transparent);--font-hand:"Excalifont", "LXGW WenKai", "Kaiti SC", "KaiTi", "STKaiti", "TW-Kai", "Noto Serif SC", ui-serif, serif;--font-ui:"PingFang SC", "HarmonyOS Sans SC", "Microsoft YaHei", "Noto Sans SC", system-ui, -apple-system, sans-serif;--font-mono:ui-monospace, "SF Mono", "JetBrains Mono", "Maple Mono NF CN", Menlo, Consolas, monospace;--gap:16px}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--paper:#1d1c19;--paper-2:#252420;--ink:#ece6d9;--ink-soft:#c2bbac;--muted:#938c7d;--faint:#6b6559;--rule:#474339;--grid:#cddbee13;--hatch:#454138;--ok:#90b676;--warn:#dfad55;--bad:#d8765c;--accent:#7fa8cc;--plum:#b184ad;--map-land:#6e624452;--map-land-ink:#9a8b6a;--map-coast:#a2967e;--map-sea-ink:#7aa4c6;--map-sea:color-mix(in srgb, var(--accent) 12%, transparent)}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{color:var(--ink);background-color:var(--paper);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;margin:0;font-size:14px;line-height:1.55}body[data-paper=grid]{background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);background-size:22px 22px}body[data-paper=dots]{background-image:radial-gradient(var(--grid) 1.3px, transparent 1.3px);background-size:18px 18px}body[data-paper=lines]{background-image:repeating-linear-gradient(to bottom, transparent 0 23px, var(--grid) 23px 24px)}body:before{content:"";z-index:-1;pointer-events:none;opacity:.32;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");background-size:160px 160px;position:fixed;inset:0}:root[data-theme=dark] body:before{opacity:.2;mix-blend-mode:screen}h1,h2,h3,p{margin:0}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}img{display:block}.hand{font-family:var(--font-hand)}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.label{font-family:var(--font-hand);color:var(--muted);font-size:13px}.muted{color:var(--muted)}.tiny{font-size:12px}.with-icon{align-items:center;gap:5px;display:inline-flex}.mark-inline{vertical-align:-2.5px;margin-right:5px}.sketch-layer{pointer-events:none;z-index:-1;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.sketch-box,.sketch-ring{position:relative}.sketch-box,.sketch-bar,.sketch-rule,.sketch-ring{isolation:isolate}.sketch-bar{width:100%;position:relative}.sketch-rule{height:2px;position:relative}.sketch-ring{justify-content:center;align-items:center;padding:5px 14px;display:inline-flex}.shell{max-width:1440px;margin:0 auto;padding:22px 22px 72px}.stack{gap:var(--gap);flex-direction:column;display:flex}.row{align-items:center;gap:10px;display:flex}.spread{justify-content:space-between;align-items:center;gap:10px;display:flex}.spacer{flex:auto}.card-hit{z-index:2;position:absolute;inset:0}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.topbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:22px;display:flex}.brand{align-items:baseline;gap:9px;display:flex}.brand-mark{font-family:var(--font-hand);letter-spacing:.01em;font-size:27px;line-height:1.1;display:inline-block;position:relative}.brand-rule{position:absolute;bottom:-3px;left:1px;right:1px}.brand-sub{color:var(--muted);font-size:12px}.nav{align-items:center;gap:4px;display:flex}.nav-item{font-family:var(--font-hand);color:var(--ink-soft);border-radius:6px;padding:5px 12px;font-size:15px}.nav-item:hover,.nav-item[aria-current=page]{color:var(--ink)}.icon-btn{width:32px;height:32px;color:var(--ink-soft);border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover{color:var(--ink);background:var(--paper-2)}.jump{z-index:3;flex-direction:column;gap:6px;display:flex;position:fixed;bottom:14px;right:max(4px,50vw - 716px)}.jump .icon-btn{background:var(--paper-2);border:1px solid var(--rule);width:26px;height:26px}.jump .icon-btn:focus-visible{outline:2px dashed var(--accent);outline-offset:3px}.notice{background:var(--paper-2);color:var(--ink-soft);padding:11px 15px;font-size:13.5px}.notice-tag{font-family:var(--font-hand);color:var(--warn);margin-right:8px}.summary{gap:var(--gap);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}@media (width<=960px){.summary{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=520px){.summary{grid-template-columns:1fr}}.tile{padding:13px 15px 15px}.tile-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em;white-space:nowrap;text-overflow:ellipsis;margin-top:3px;font-size:25px;line-height:1.15;overflow:hidden}.tile-value.small{font-size:19px}.tile-of{color:var(--muted);font-size:15px}.tile-note{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.tile-figure{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;display:flex}.tile-text{flex:128px;min-width:0}.tile-art{isolation:isolate;width:84px;height:60px;color:var(--muted);pointer-events:none;flex:none;position:relative}.tile-figure>.spark{flex:0 0 100%}.spark{height:26px;margin-top:6px;position:relative}.tabs{flex-wrap:wrap;align-items:center;gap:2px;display:flex}.tab{font-family:var(--font-hand);color:var(--muted);padding:5px 12px;font-size:15px}.tab:hover{color:var(--ink-soft)}.tab[aria-pressed=true]{color:var(--ink)}.grid{gap:var(--gap);grid-template-columns:repeat(auto-fill,minmax(min(310px,100%),1fr));display:grid}.card{text-align:left;width:100%;padding:14px 16px 15px;transition:transform .12s;display:block}.card:hover{transform:translateY(-2px)}.card-head{flex-wrap:wrap;align-items:center;gap:6px 10px;display:flex}.card-flag{flex:none;width:46px;height:34px;padding:5px;transform:rotate(-1.2deg)}.card-os{opacity:.9;flex:none;width:32px;height:32px;padding:4px;transform:rotate(1deg)}.detail-flag{flex:none;width:66px;height:48px;padding:6px;transform:rotate(-1.2deg)}.detail-os{opacity:.9;flex:none;width:36px;height:36px;padding:5px;transform:rotate(1deg)}.card-flag .flag-ink,.detail-flag .flag-ink{filter:saturate(.55)contrast(.9);opacity:.88;width:100%;height:100%;display:block}.card-os .os-ink,.detail-os .os-ink{filter:saturate(.7)contrast(.95);opacity:.85;width:100%;height:100%;display:block}.card-name{font-family:var(--font-hand);overflow-wrap:anywhere;flex:100px;min-width:0;font-size:17px;line-height:1.25}.card-badges{align-items:center;gap:10px;margin-left:auto;display:flex}.card-remark{background:var(--paper-2);color:var(--muted);margin-top:7px;padding:3px 8px;font-size:12px}.card-remark-text{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.card-meters{flex-direction:column;gap:8px;margin-top:12px;display:flex}.meter-row{grid-template-columns:34px minmax(0,1fr) 122px;align-items:center;gap:9px;display:grid}.meter-name{font-family:var(--font-hand);color:var(--muted);font-size:13px}.meter-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink);text-align:right;white-space:nowrap;text-overflow:ellipsis;font-size:11.5px;overflow:hidden}.card-latency{color:var(--muted);margin-top:12px;font-size:11.5px}.card-latency-lines{gap:4px;margin:0;display:grid}.card-latency-lines>div{justify-content:space-between;align-items:center;gap:8px;display:flex}.card-latency-lines dt{overflow-wrap:anywhere;min-width:0}.card-latency-lines dd{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-soft);flex-shrink:0;margin:0}.card-latency-lines dd.latency-timeout{color:var(--bad)}.latency-spark{flex:auto;min-width:0;height:22px}.latency-spark svg{cursor:crosshair;width:100%;height:100%;display:block}.latency-spark text{font-family:var(--font-mono);font-size:9px}.latency-spark .latency-spark-readout{fill:var(--ink-soft);font-variant-numeric:tabular-nums;font-size:10px}.card-foot{color:var(--muted);justify-content:space-between;align-items:center;gap:10px;margin-top:12px;font-size:12px;display:flex}.io{flex-wrap:wrap;align-items:center;gap:2px 12px;display:flex}.tile-note:has(>.io){white-space:normal}.io-item{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-soft);align-items:center;gap:4px;font-size:12px;display:inline-flex}.io-item.down{color:var(--accent)}.io-item.up{color:var(--plum)}.badge{font-family:var(--font-hand);white-space:nowrap;align-items:center;gap:5px;padding:1px 9px 2px;font-size:12.5px;line-height:1.5;display:inline-flex}.dot{background:currentColor;border-radius:50%;flex:none;width:7px;height:7px}.badge.ok{color:var(--ok)}.badge.warn{color:var(--warn)}.badge.bad{color:var(--bad)}.badge.off{color:var(--muted)}.detail-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;padding:16px 18px 17px;display:flex}.detail-title{align-items:center;gap:12px;display:flex}.detail-name-row{align-items:center;gap:10px;display:flex}.detail-title h1{font-family:var(--font-hand);font-size:24px;font-weight:400;line-height:1.2}.facts{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px 22px;padding:15px 18px 17px;display:grid}.fact{justify-content:space-between;align-items:baseline;gap:12px;padding-bottom:5px;display:flex}.fact-key{font-family:var(--font-hand);color:var(--ink-soft);white-space:nowrap;font-size:13px}.fact-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right;text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;overflow:hidden}.fact-value.hand{font-family:var(--font-hand);font-size:14px}.section-title{font-family:var(--font-hand);color:var(--ink);align-items:center;gap:10px;font-size:17px;display:flex}.panels{gap:var(--gap);grid-template-columns:minmax(0,1fr);display:grid}.panel{padding:13px 15px 10px}.panel-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.panel-title{font-family:var(--font-hand);font-size:15px}.panel-now{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink);font-size:14px}.chart{width:100%;position:relative}.chart svg{width:100%;height:100%;display:block}.chart .sketch-layer{width:100%;height:100%}.chart text{font-family:var(--font-mono);font-variant-numeric:tabular-nums;fill:var(--ink-soft);font-size:10px}.empty{text-align:center;color:var(--muted);font-family:var(--font-hand);padding:44px 20px;font-size:16px}.loading{text-align:center;color:var(--muted);font-family:var(--font-hand);padding:60px 20px;font-size:16px}.error{color:var(--bad);padding:12px 15px;font-size:13.5px}.footer{color:var(--faint);flex-wrap:wrap;justify-content:center;align-items:center;gap:14px;margin-top:34px;font-size:12px;display:flex}.footer a:hover{color:var(--muted)}.footer .credit{font-size:.9em}.map-wrap{flex-direction:column;gap:10px;display:flex}.map{aspect-ratio:1000/389;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;width:100%;position:relative}.map[data-panning="1"]{cursor:grabbing}.map:focus-visible{outline:2px dashed var(--accent);outline-offset:3px}.map-svg{background-color:var(--map-sea);width:100%;height:100%;display:block;overflow:hidden}.map-land{color:var(--map-coast)}.map-land path{fill:url(#map-land);stroke:currentColor;stroke-width:1.2px;stroke-linejoin:round}.map-grat line{stroke:var(--rule);stroke-width:.9px}.map-grat-main{stroke:var(--muted)}.map-label{font-family:var(--font-hand);letter-spacing:.16em;fill:var(--ink);fill-opacity:.8;paint-order:stroke;stroke:var(--map-land);stroke-width:2.6px;stroke-linejoin:round;font-size:12px}.map-label[data-kind=ocean]{letter-spacing:.24em;fill:var(--map-sea-ink);fill-opacity:.9;stroke:var(--map-sea);font-size:11px}.map-frame{color:var(--ink)}.map-frame path{stroke-linecap:round}.map-wrap [data-tone=ok]{--tone:var(--ok)}.map-wrap [data-tone=warn]{--tone:var(--warn)}.map-wrap [data-tone=bad]{--tone:var(--bad)}.map-wrap [data-tone=off]{--tone:var(--muted)}.map-wrap [data-tone=idle]{--tone:var(--faint)}.map-mark{color:var(--tone)}.map-ring{transform-box:fill-box;transform-origin:50%;transition:transform .14s cubic-bezier(.2,.9,.3,1.4)}.map-mark[data-on="1"] .map-ring{transform:scale(1.16)}.map-dot{fill:var(--tone);stroke:var(--paper);stroke-width:1.1px}.map-mark[data-tone=idle] .map-dot{fill:var(--paper);stroke:var(--tone);stroke-width:1.6px}.map-count{font-family:var(--font-mono);fill:var(--paper);pointer-events:none;font-size:8.5px;font-weight:600}.map-mark[data-tone=idle] .map-count{fill:var(--tone)}.map-compass{color:var(--muted);fill:none}.map-compass path{stroke-linecap:round}.map-compass-n{font-family:var(--font-hand);fill:var(--muted);stroke:none;font-size:11px}.map-hits{pointer-events:none;position:absolute;inset:0}.map-hit{width:30px;height:30px;color:var(--tone);cursor:pointer;pointer-events:auto;background:0 0;border:0;border-radius:50%;margin:-15px 0 0 -15px;padding:0;position:absolute;top:0;left:0}.map-hit:focus-visible{outline-offset:1px;outline:2px dashed}.map-tip{border:1px solid var(--rule);background:var(--paper);white-space:nowrap;pointer-events:none;flex-direction:column;align-items:center;padding:3px 9px 4px;font-size:12px;line-height:1.35;display:flex;position:absolute;transform:translate(-50%,calc(-100% - 13px))}.map-tip[data-side=below]{transform:translate(-50%,13px)}.map-tip b{font-family:var(--font-hand);font-size:13px;font-weight:400}.map-tip span{color:var(--muted)}.map-zoom{align-items:center;gap:4px;display:flex;position:absolute;bottom:10px;right:10px}.map-zoom button{border:1px solid var(--rule);background:var(--paper);width:25px;height:25px;color:var(--ink-soft);cursor:pointer;place-items:center;font-size:15px;line-height:1;display:grid}.map-zoom button:hover:not(:disabled){border-color:var(--muted);color:var(--ink)}.map-zoom button:disabled{opacity:.35;cursor:default}.map-zoom-level{text-align:right;min-width:30px;font-family:var(--font-mono);color:var(--faint);font-size:11px}.map-panel{flex-direction:column;gap:7px;min-height:40px;display:flex}.map-box{align-self:flex-start;max-width:100%;padding:10px 12px}.map-panel-head{font-family:var(--font-hand);align-items:baseline;gap:10px;font-size:14px;display:flex}.map-list{flex-wrap:wrap;gap:6px 8px;margin:0;padding:0;list-style:none;display:flex}.map-node{border:1px solid var(--rule);color:var(--ink);align-items:center;gap:7px;padding:3px 10px 4px;font-size:12.5px;text-decoration:none;display:inline-flex}.map-node:hover{border-color:var(--muted)}.map-node-dot{background:var(--tone);border-radius:50%;flex:none;width:7px;height:7px}.map-node[data-tone=idle] .map-node-dot{border:1.5px solid var(--tone);background:0 0;width:6px;height:6px}.map-node-name{font-family:var(--font-hand)}.map-node-fig{font-family:var(--font-mono);color:var(--muted);font-size:11.5px}.map-dim{color:var(--faint);font-size:12px}.map-hint{color:var(--muted);font-family:var(--font-hand);margin:0;font-size:12.5px;line-height:1.5}@media (width<=620px){.map-tip,.map-zoom-level,.map-node .map-dim{display:none}}


/* Responsive & Zoom-safe enhancements */
html, body {
  max-width: 100vw;
  overflow-x: hidden;
}
.shell {
  max-width: min(1240px, 100%);
  box-sizing: border-box;
}
.topbar, .nav, .tabs, .card-head, .card-foot {
  flex-wrap: wrap;
}
.card {
  box-sizing: border-box;
  max-width: 100%;
  overflow: hidden;
}
.card-remark-text {
  white-space: normal !important;
  display: -webkit-box !important;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  overflow-wrap: anywhere;
  line-height: 1.35;
}
.meter-row {
  grid-template-columns: 40px minmax(48px, 1fr) clamp(92px, 34%, 122px) !important;
  gap: 8px !important;
}
.meter-name {
  white-space: nowrap;
}
.notice {
  overflow-wrap: anywhere;
  word-break: break-word;
}
.facts {
  grid-template-columns: repeat(auto-fill, minmax(min(185px, 100%), 1fr)) !important;
}
