:root{color-scheme:light dark;--bg:#f4f5f7;--surface:#ffffff;--surface-2:#f1f3f6;--line:#e3e6eb;--line-strong:#c9ced6;--ink:#15181d;--ink-2:#4b5462;--ink-3:#737c89;--shadow:0 1px 2px rgb(16 24 40/0.05);--float:0 1px 2px rgb(16 24 40/0.06),0 8px 24px rgb(16 24 40/0.08);--ok-fg:#17663a;--ok-bg:#e5f4ea;--ok-line:#3d9a62;--warn-fg:#8a4b00;--warn-bg:#fff3d9;--warn-line:#d9930f;--fail-fg:#a3141f;--fail-bg:#fde7e8;--fail-line:#d6333f;--unknown-fg:#414a57;--unknown-bg:#e9ecf0;--unknown-line:#8b95a5;--accent:#2456c8;--accent-hover:#1d47a8;--accent-ink:#ffffff;--accent-soft:#e6edfb;--radius:12px;--radius-sm:8px;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--appbar-h:56px;--mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;--sans:"Pretendard",ui-sans-serif,system-ui,-apple-system,"Segoe UI","Noto Sans KR","Apple SD Gothic Neo","Malgun Gothic",sans-serif}@media (prefers-color-scheme:dark){:root{--bg:#0e1115;--surface:#161a20;--surface-2:#1c2129;--line:#262d36;--line-strong:#3a434f;--ink:#e8ebef;--ink-2:#aab3bf;--ink-3:#7f8996;--shadow:none;--float:none;--ok-fg:#86dba5;--ok-bg:#12301f;--ok-line:#3d9a62;--warn-fg:#ffd27a;--warn-bg:#3a2b0b;--warn-line:#c98a10;--fail-fg:#ffadb4;--fail-bg:#40141b;--fail-line:#d6333f;--unknown-fg:#c5ccd6;--unknown-bg:#262c35;--unknown-line:#6c7784;--accent:#8db4f0;--accent-hover:#a9c7f5;--accent-ink:#0b1220;--accent-soft:#1a2638}}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit}code{font-family:var(--mono);font-size:.92em}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.icon{flex:none;display:block}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.tone-ok{color:var(--ok-fg);background:var(--ok-bg)}.tone-warn{color:var(--warn-fg);background:var(--warn-bg)}.tone-fail{color:var(--fail-fg);background:var(--fail-bg)}.tone-unknown{color:var(--unknown-fg);background:var(--unknown-bg)}.tone-text-ok{color:var(--ok-fg)}.tone-text-warn{color:var(--warn-fg)}.tone-text-fail{color:var(--fail-fg)}.tone-text-unknown{color:var(--unknown-fg)}.screen{height:100vh;height:100dvh;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden}.appbar{display:flex;align-items:center;gap:var(--s4);min-width:0;min-height:var(--appbar-h);padding:0 var(--s5);background:var(--surface);border-bottom:1px solid var(--line)}.brand{flex:none;display:flex;align-items:baseline;gap:var(--s2)}.brand h1{margin:0;font-size:15px;font-weight:750;letter-spacing:-.015em}.host{font-family:var(--mono);font-size:12px;color:var(--ink-3)}.overall{min-width:0;display:flex;align-items:center;gap:var(--s3);padding-left:var(--s4);border-left:1px solid var(--line)}.overall-state{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:700;line-height:1.3;white-space:nowrap}.overall-state.is-ok .icon{color:var(--ok-fg)}.overall-state.is-fail,.overall-state.is-unknown,.overall-state.is-warn{padding:4px 11px 4px 8px;border-radius:999px}.overall-state.is-unknown,.overall-state.is-warn{color:var(--warn-fg);background:var(--warn-bg)}.overall-state.is-fail{color:var(--fail-fg);background:var(--fail-bg)}.overall-counts{display:flex;gap:var(--s3);font-size:13px;color:var(--ink-3);white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.overall-counts b{font-weight:700;color:var(--ink)}.overall-counts [class^=tone-text-] b{color:inherit}.appbar-actions{margin-left:auto;display:flex;align-items:center;gap:2px}.appbar-actions form{margin:0}.appbar-age{margin-right:var(--s2);font-size:12px;color:var(--ink-3);white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.icon-btn{flex:none;display:inline-grid;place-items:center;width:32px;height:32px;padding:0;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--ink-2);cursor:pointer}.icon-btn:hover:not([aria-disabled=true]){background:var(--surface-2);color:var(--ink)}.icon-btn[aria-disabled=true]{cursor:default;opacity:.6}.stage{position:relative;min-height:0;overflow:hidden}.viewer,.viewer-canvas{position:absolute;inset:0}.viewer-canvas{overflow:hidden;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:-webkit-grab;cursor:grab;background-color:var(--bg);background-image:radial-gradient(circle at 1px 1px,var(--line-strong) 1px,transparent 0);background-size:24px 24px}.viewer-canvas:active{cursor:-webkit-grabbing;cursor:grabbing}.viewer-content{position:absolute;top:0;left:0;transform-origin:0 0}.alerts,.outside-chip,.strip,.viewer-controls{background:var(--surface);border:1px solid var(--line);box-shadow:var(--float)}.viewer-controls{right:var(--s4);bottom:var(--s4);z-index:2;gap:2px;padding:3px;border-radius:11px}.alerts,.viewer-controls{position:absolute;display:flex}.alerts{top:var(--s4);left:var(--s4);z-index:3;width:340px;max-height:calc(100% - 2 * var(--s4));flex-direction:column;border-radius:var(--radius)}.alerts[data-open]{max-height:calc(100% - var(--s4) - 180px)}.alerts-head{flex:none;display:flex;align-items:baseline;justify-content:space-between;gap:var(--s2);padding:12px 16px 6px}.alerts-head h2{margin:0;font-size:13px;font-weight:700}.alerts-count{font-size:12px;color:var(--ink-3);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.alerts-scroll{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 var(--s2) var(--s2)}.alert-day+.alert-day{margin-top:var(--s1)}.alert-day-head{position:-webkit-sticky;position:sticky;top:0;z-index:1;margin:0;padding:6px var(--s2) 4px;font-size:11.5px;font-weight:650;color:var(--ink-3);background:var(--surface)}.alert-list{list-style:none;margin:0;padding:0}.alert-row{display:grid;grid-template-columns:14px minmax(0,1fr) auto;align-items:center;grid-column-gap:10px;column-gap:10px;grid-row-gap:2px;row-gap:2px;padding:7px var(--s2);border-radius:var(--radius-sm)}.alert-row:hover{background:var(--surface-2)}.alert-icon{display:flex}.alert-label{font-size:13px;font-weight:600;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.alert-time{font-size:12px;color:var(--ink-3);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.alert-sub{grid-column:2/4;font-size:12px;line-height:1.35;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.alerts-toggle{flex:none;display:flex;align-items:center;justify-content:center;gap:6px;margin:0 var(--s2) var(--s2);padding:7px;border:0;border-radius:var(--radius-sm);background:var(--surface-2);color:var(--ink-2);font:inherit;font-size:12.5px;font-weight:600;line-height:1.3;cursor:pointer}.alerts-toggle:hover{color:var(--ink)}.flip{transform:rotate(180deg)}.panel-note{margin:0;padding:2px 16px 14px;font-size:13px;color:var(--ink-3)}.error-text{color:var(--fail-fg)}.notices{position:absolute;top:var(--s4);right:var(--s4);z-index:3;width:min(440px,calc(100% - 340px - 3 * var(--s4)));display:flex;flex-direction:column;gap:var(--s2)}.notice{margin:0;display:flex;align-items:flex-start;gap:10px;padding:10px 14px;border:1px solid var(--fail-line);border-radius:var(--radius);background:var(--fail-bg);color:var(--fail-fg);font-size:13px;line-height:1.45;box-shadow:var(--float)}.notice-warn{border-color:var(--warn-line);background:var(--warn-bg);color:var(--warn-fg)}.notice-icon{margin-top:2px}.notice-body{min-width:0;display:flex;flex-direction:column;gap:2px}.notice-list{margin:2px 0 0;padding-left:18px}.stage-foot{position:absolute;left:var(--s4);bottom:var(--s4);z-index:2;max-width:calc(100% - 160px);display:flex;flex-direction:column;align-items:flex-start;gap:var(--s2)}.stage-hint{margin:0;padding:4px 10px;border-radius:999px;font-size:12px;color:var(--ink-3);background:color-mix(in srgb,var(--surface) 85%,transparent)}.outside{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.outside-label{font-size:12px;font-weight:600;color:var(--ink-3)}.outside-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 11px 5px 8px;border-radius:999px;color:var(--ink);font:inherit;font-size:12.5px;font-weight:600;line-height:1.3;cursor:pointer}.strip{padding:10px 12px 8px;border-radius:var(--radius)}.strip-sum{margin:0 0 8px;font-size:12px;font-weight:600;line-height:1.3;color:var(--ink-2)}.strip-cells{list-style:none;margin:0;padding:0;height:20px;display:flex;align-items:flex-end;gap:2px}.strip-cell{flex:none;width:9px;height:6px;border-radius:2px;background:var(--line-strong)}.strip-cell.is-unknown{height:11px;background:var(--unknown-line)}.strip-cell.is-warn{height:14px;background:var(--warn-line)}.strip-cell.is-fail{height:20px;background:var(--fail-line)}.strip-cell.empty{background:repeating-linear-gradient(135deg,var(--line-strong) 0 1.5px,transparent 1.5px 3.5px)}.strip-axis{margin:4px 0 0;display:flex;justify-content:space-between;font-size:10.5px;line-height:1.3;color:var(--ink-3)}.stage[data-stale] .alerts-scroll,.stage[data-stale] .stage-foot,.stage[data-stale] .viewer-content{opacity:.72;filter:saturate(.6)}.btn{font:inherit;font-size:13px;font-weight:600;line-height:1.3;display:inline-flex;align-items:center;justify-content:center;gap:6px;color:var(--ink);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:7px 12px;cursor:pointer;box-shadow:var(--shadow)}.btn:hover:not(:disabled):not([aria-disabled=true]){background:var(--surface-2)}.btn:disabled,.btn[aria-disabled=true]{cursor:default;opacity:.6}.btn-primary{color:var(--accent-ink);background:var(--accent);border-color:var(--accent)}.btn-primary:hover:not(:disabled):not([aria-disabled=true]){background:var(--accent-hover)}.btn-quiet{color:var(--ink-2);border-color:transparent;background:transparent;box-shadow:none}.btn-block{width:100%;padding:10px 14px;font-size:14px}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 8px 3px 6px;border-radius:999px;font-size:12px;font-weight:650;line-height:1.3;white-space:nowrap}.badge-lg{padding:5px 12px 5px 9px;font-size:13px}.arch svg{display:block;width:100%;height:auto;font-family:var(--sans)}.arch .c-region{fill:var(--surface-2);stroke:var(--line-strong);stroke-dasharray:5 4}.arch .c-mask{fill:var(--surface)}.arch .t-cloud{fill:var(--ink-2);font-size:11px}.arch [data-node-id]>rect:not(.c-mask){fill:var(--surface);stroke:var(--line-strong);stroke-width:1.25px}.arch .t-primary{fill:var(--ink);font-size:13px;font-weight:650}.arch .t-muted{fill:var(--ink-3);font-size:10px}.arch path[class^=a-]{fill:none;stroke:var(--ink-3)}.arch path.a-emphasis{stroke:var(--ink-2)}.arch path.a-dashed{stroke-dasharray:5 4}.arch polygon[class^=m-]{fill:var(--ink-3)}.arch polygon.m-emphasis{fill:var(--ink-2)}.arch [class^=t-edge-]{fill:var(--ink-2);font-size:9px}.arch .semantic-sigil{fill:none;stroke:var(--ink-3);stroke-width:1.4px}.arch .sigil-fill{fill:var(--ink-3);stroke:none}.arch [data-state] .semantic-sigil{display:none}.arch [data-state=unknown]>rect:not(.c-mask),.arch [data-state=warn]>rect:not(.c-mask){fill:var(--warn-bg);stroke:var(--warn-line)}.arch [data-state=fail]>rect:not(.c-mask){fill:var(--fail-bg);stroke:var(--fail-line);stroke-width:2px}.arch [data-state=unknown] .t-primary,.arch [data-state=warn] .t-primary{fill:var(--warn-fg)}.arch [data-state=fail] .t-primary{fill:var(--fail-fg)}.arch .arch-status{pointer-events:none}.arch .arch-count{fill:currentColor;font-size:10px;font-weight:700}.arch [role=button]{cursor:pointer;outline:none}.arch [role=button]:hover>rect:not(.c-mask){stroke:var(--accent)}.arch [data-selected=true]>rect:not(.c-mask),.arch [role=button]:focus-visible>rect:not(.c-mask){stroke:var(--accent);stroke-width:2.5px}.check-value{font-family:var(--mono);font-size:12px;white-space:nowrap}.check-value.is-word{font-family:inherit;font-size:12.5px}.check-error{display:block;margin-top:3px;color:var(--fail-fg);font-family:var(--mono);font-size:12px}.empty-note{margin:0;color:var(--ink-3);font-size:13px;display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2)}.modal{width:min(680px,calc(100vw - 32px));max-height:min(84vh,820px);padding:0;border:1px solid var(--line);border-radius:16px;background:var(--surface);color:var(--ink);box-shadow:0 24px 64px rgb(16 24 40/.22);overflow:hidden}.modal[open]{display:flex;flex-direction:column}.modal::-webkit-backdrop{background:rgb(10 13 18/.5)}.modal::backdrop{background:rgb(10 13 18/.5)}html:has(.modal[open]){overflow:hidden}.modal-inner{display:flex;flex-direction:column;min-height:0}.modal-head{position:relative;padding:var(--s5) 56px var(--s4) var(--s5);border-bottom:1px solid var(--line)}.modal-title-row{display:flex;align-items:center;gap:var(--s2)}.modal-title-row h2{margin:0;font-size:20px;font-weight:750;letter-spacing:-.015em}.modal-meta{margin:6px 0 0;font-size:12.5px;color:var(--ink-3);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.modal-close{position:absolute;top:var(--s4);right:var(--s4);padding:6px}.modal-stale{margin:var(--s3) var(--s5) 0}.modal-empty{padding:var(--s5)}.modal-body{min-height:0;overflow-y:auto;padding:var(--s2) var(--s3) var(--s4)}.modal-list{list-style:none;margin:0;padding:0}.modal-row{padding:var(--s3);border-radius:10px}.modal-row+.modal-row{margin-top:2px}.modal-row.edge-unknown,.modal-row.edge-warn{background:var(--warn-bg)}.modal-row.edge-fail{background:var(--fail-bg)}.modal-row-top{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s1) var(--s2)}.modal-row-label{font-weight:650}.modal-row-top .check-value{margin-left:auto;color:var(--ink-2)}.modal-row-detail{margin:6px 0 0;font-size:13px;color:var(--ink-2);overflow-wrap:anywhere}.modal-ok-head{display:flex;align-items:center;gap:6px;margin:var(--s2) var(--s3) var(--s1);font-size:12px;font-weight:650;color:var(--ink-3)}.modal-list+.modal-ok-head{margin-top:var(--s4)}.modal-ok-list{list-style:none;margin:0;padding:0}.modal-ok-row{display:flex;align-items:baseline;gap:var(--s3);padding:7px var(--s3);border-radius:var(--radius-sm);font-size:13.5px;line-height:1.35}.modal-ok-row:hover{background:var(--surface-2)}.modal-ok-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-ok-row .check-value{margin-left:auto;color:var(--ink-3)}@media (max-width:720px){.modal{width:100vw;max-width:100vw;max-height:92dvh;margin:auto 0 0;border-radius:16px 16px 0 0}.modal-head{padding:var(--s4) 52px var(--s3) var(--s4)}}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));grid-gap:var(--s2);gap:var(--s2);margin:var(--s2) var(--s2) var(--s3)}.fact{min-width:0;padding:var(--s3);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.fact-head{display:flex;align-items:center;gap:6px;margin:0 0 var(--s2);font-size:12px;font-weight:650;color:var(--ink-3)}.fact-head b{color:var(--ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.fact-path{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--mono);font-weight:500}.fact-note{margin-left:auto;font-weight:500}.fact-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:6px;gap:6px}.fact-line{display:flex;flex-wrap:wrap;gap:6px;margin:0;font-size:13px;line-height:1.45}.fact-line+.fact-line{margin-top:var(--s2)}.fact-muted{min-width:0;color:var(--ink-3);overflow-wrap:anywhere}.port-row{display:flex;align-items:center;gap:var(--s2);font-size:13px}.port-row .fact-muted{margin-left:auto;text-align:right}.port-num{min-width:3.2em;font-family:var(--mono);font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.api-name{font-weight:600}.pill{padding:1px 8px;border-radius:999px;font-size:11.5px;white-space:nowrap;background:var(--surface-2);color:var(--ink-2)}.pill-all{background:var(--accent-soft);color:var(--accent)}.chip{padding:2px 8px;border-radius:var(--radius-sm);font-size:12.5px;background:var(--surface-2);color:var(--ink-2);overflow-wrap:anywhere}.chip-mono{font-family:var(--mono);font-size:12px;color:var(--ink)}.chip-empty{background:var(--warn-bg);color:var(--warn-fg)}.login{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:var(--s5) var(--s4)}.login-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:var(--s6) 28px 28px;box-shadow:0 1px 2px rgb(16 24 40/.05),0 12px 32px rgb(16 24 40/.06)}.login-head{display:flex;align-items:center;gap:var(--s3);margin-bottom:var(--s5)}.login-mark{flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:12px;color:var(--accent);background:var(--accent-soft)}.login-title{margin:0;font-size:18px;font-weight:750;letter-spacing:-.015em;line-height:1.25}.login-sub{margin:2px 0 0;font-size:13px;color:var(--ink-3)}.login-form{gap:var(--s4)}.field,.login-form{display:flex;flex-direction:column}.field{gap:6px}.field-label{font-size:13px;font-weight:600;color:var(--ink-2)}.input{font-size:14px;padding:10px 12px}.login-error{margin:0;padding:10px 12px;border-radius:var(--radius-sm);background:var(--fail-bg);color:var(--fail-fg);font-size:13px;line-height:1.45}.login-form .btn-block{margin-top:var(--s1)}.input{font:inherit;min-width:0;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink)}.input:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}@media (max-width:899px){.appbar{gap:var(--s3);padding:0 var(--s3)}.overall{padding-left:0;border-left:0}.alerts{top:var(--s3);left:var(--s3);right:var(--s3);width:auto}.alerts[data-open]{bottom:var(--s3);max-height:none}.notices{top:auto;left:var(--s3);right:var(--s3);bottom:112px;width:auto}.stage-foot{left:var(--s3);bottom:var(--s3);max-width:calc(100% - 72px)}.viewer-controls{right:var(--s3);bottom:var(--s3);flex-direction:column}}@media (max-width:560px){.appbar-age,.host,.overall-counts .count-ok{display:none}.strip-cell{width:7px}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}