@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Noto+Sans+KR:wght@400;500;600;700;800&display=swap');
:root{--bg:#0a1119;--panel:#0f1822;--panel2:#121d29;--line:#25313d;--muted:#8d9dab;--text:#e5ecf2;--accent:#70e2c5;--blue:#83baf5;--warn:#f7b66c;--mono:'IBM Plex Mono',monospace;--sans:'Noto Sans KR',sans-serif;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:13px var(--sans);line-height:1.65}button,input{font:inherit}button,a,input{outline-offset:5px}button{cursor:pointer}button{color:inherit;background:none;border:0}a{color:inherit;text-decoration:none}button:hover,a:hover{color:var(--accent)}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent)}[hidden]{display:none!important}.topbar{height:86px;display:flex;align-items:center;padding:0 30px;gap:44px;border-bottom:1px solid var(--line);background:#0c141d;position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:13px;font:600 16px var(--mono);letter-spacing:2px;min-width:208px}.brand-mark{width:40px;height:40px;border:1px solid #3e5d5b;display:flex;align-items:center;justify-content:center;border-radius:10px;font-size:32px;font-weight:500;letter-spacing:-3px;line-height:1;color:var(--accent)}.brand-mark span{color:#c4f9ec}.brand-sub{display:block;font-size:9px;color:var(--muted);letter-spacing:1.5px;margin-top:7px}.main-tabs{align-self:stretch;display:flex;gap:28px}.main-tabs button{font-size:13px;position:relative;color:var(--muted);padding:0 3px}.main-tabs button.selected{color:var(--text)}.main-tabs button.selected:after{content:'';position:absolute;bottom:-1px;left:0;right:0;height:2px;background:var(--accent)}.snapshot-label{display:flex;align-items:center;gap:9px;margin-left:auto;font:9px var(--mono);letter-spacing:1.5px;color:var(--muted)}.snapshot-label strong{display:block;font-size:10px;font-weight:400;color:#b6c5d3;letter-spacing:0;margin-top:7px}.status-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);display:inline-block;box-shadow:0 0 0 4px #70e2c510;flex-shrink:0}.icon-button{border:1px solid var(--line);border-radius:50%;width:28px;height:28px;font:14px var(--mono);flex-shrink:0}.workspace{display:grid;grid-template-columns:244px minmax(0,1fr);max-width:2000px;margin:auto}.sidebar{border-right:1px solid var(--line);padding:28px 18px;min-height:calc(100vh - 86px);position:sticky;top:86px;height:calc(100vh - 86px);overflow:auto;display:flex;flex-direction:column}.sidebar-heading{font:10px var(--mono);letter-spacing:1.3px;color:var(--muted);display:flex;justify-content:space-between;padding:0 6px 19px}.search{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:#101923;padding:8px 9px;border-radius:5px}.search>span{font-size:23px;color:var(--muted);line-height:20px}.search input{min-width:0;width:100%;background:none;border:0;color:var(--text);font-size:11px;outline:none}.search input::placeholder{color:#8796a3}.search kbd{font:10px var(--mono);border:1px solid var(--line);padding:0 4px;color:#7d8d9b}.filter-row{display:flex;gap:3px;padding:13px 0 18px}.filter-row button{padding:4px 8px;font-size:10px;color:var(--muted);border-radius:3px}.filter-row button.selected{background:#20302f;color:var(--accent)}.path-button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:13px 9px;border:1px solid transparent;border-radius:5px;margin-bottom:6px}.path-button .number{font:10px var(--mono);color:#657684}.path-button strong{font-size:11px;font-weight:500;display:block}.path-button small{display:block;font:9px var(--mono);color:var(--muted);margin-top:5px}.path-button .path-dot{width:5px;height:5px;border-radius:50%;margin-left:auto;background:var(--blue);flex-shrink:0}.path-button .path-dot.verified{background:var(--accent)}.path-button .path-dot.blocked{background:var(--warn)}.path-button.selected{background:#162623;border-color:#29443d}.path-button.selected .number,.path-button.selected strong{color:var(--accent)}.path-button:hover{background:#14212c}.sidebar-foot{margin-top:auto;padding:38px 9px 0}.micro,.eyebrow{font:9px var(--mono);color:var(--muted);letter-spacing:1.5px}.tiny-grid{display:grid;grid-template-columns:1fr 1fr;margin-top:16px}.tiny-grid strong{display:block;font:24px var(--mono);font-weight:400;color:#c3d2df}.tiny-grid span{font-size:10px;color:var(--muted)}.sidebar-foot p{font-size:10px;color:#8998a5;margin:17px 0 23px}.sidebar-foot a{font-size:11px;display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:16px}main{min-width:0;padding:30px 28px 0}.view-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:27px}.eyebrow{color:#8b9eab;font-size:9px}.eyebrow span{color:var(--accent)}h1{font-size:25px;line-height:1.45;letter-spacing:-.9px;font-weight:600;margin:10px 0 9px}.view-heading p{color:var(--muted);font-size:11px;margin:0;max-width:790px;line-height:1.9}.evidence-chip{white-space:nowrap;font:10px var(--mono);padding:5px 9px;border:1px solid #2c4851;border-radius:4px;margin-top:23px;color:var(--blue)}.evidence-chip.verified{border-color:#31534a;color:var(--accent);background:#172b24}.evidence-chip.blocked{border-color:#584534;color:var(--warn);background:#261f19}.explorer-grid{display:grid;grid-template-columns:minmax(0,1fr) 294px;gap:18px;align-items:start}.canvas-column{min-width:0}.canvas-panel{border:1px solid var(--line);border-radius:7px;overflow:hidden;background:#0d161f}.canvas-toolbar{height:49px;display:flex;align-items:center;gap:18px;padding:0 14px;border-bottom:1px solid var(--line);background:#111b25}.segmented{display:flex;gap:2px;background:#0a121a;padding:3px;border-radius:4px}.segmented button{font-size:10px;padding:4px 11px;color:var(--muted);border-radius:3px}.segmented .selected{background:#273340;color:var(--text)}.canvas-note{font-size:9px;color:#80909d}.zoom-tools{display:flex;align-items:center;margin-left:auto}.zoom-tools button{padding:3px 6px;font:11px var(--mono);color:var(--muted)}.canvas-scroll{position:relative;min-height:390px;overflow:auto;background-image:radial-gradient(#728ba020 .75px,transparent .75px);background-size:16px 16px}.canvas-scroll svg{width:100%;min-height:390px;display:block}.canvas-legend{display:flex;align-items:center;gap:15px;padding:13px 15px;border-top:1px solid var(--line);font-size:9px;color:var(--muted)}.canvas-legend span{display:flex;align-items:center;gap:6px}.canvas-legend i{display:block;width:5px;height:5px;border-radius:50%}.legend-live{background:var(--accent)}.legend-recorded{background:var(--blue)}.legend-warning{background:var(--warn)}.canvas-legend .legend-tail{margin-left:auto;color:#637687}.boundary{fill:#13202a42;stroke:#283846;stroke-width:1;stroke-dasharray:4 5}.boundary.target{fill:#16312b28;stroke:#315047}.boundary.source{fill:#17304b25;stroke:#2c4258}.boundary.platform{fill:#23254225;stroke:#36405b}.boundary-label{fill:#97a8b7;font:500 11px var(--mono);letter-spacing:1.1px}.boundary-detail{fill:#617888;font:10px var(--mono)}.edge{fill:none;stroke:#50687b;stroke-width:1.5;stroke-linejoin:round;transition:opacity .25s,stroke .25s}.edge.active{stroke:var(--accent);stroke-width:2}.edge.warning{stroke:var(--warn);stroke-dasharray:5 5}.edge.dimmed{opacity:.14}.edge-label{fill:#86a2b5;font:9px var(--mono);paint-order:stroke;stroke:#0d161f;stroke-width:5px;stroke-linejoin:round;text-anchor:middle}.edge-label.warning{fill:var(--warn)}.edge-label.dimmed{opacity:.1}.node{cursor:pointer;transition:opacity .25s}.node rect{fill:#14212e;stroke:#3b5365;stroke-width:1.1;transition:stroke .2s,fill .2s}.node .node-icon{color:#83baf5}.node[data-group="network"] rect{fill:#1c252c;stroke:#47706b;stroke-dasharray:3 2}.node[data-group="network"] .node-icon{color:#70e2c5}.node[data-group="target"] rect{fill:#10271f;stroke:#395f50}.node[data-group="target"] .node-icon{color:#8ed4bb}.node:hover rect,.node:focus rect,.node.selected rect{stroke:var(--accent);stroke-width:2;fill:#1c3232}.node.dimmed{opacity:.19}.node-label{fill:#dfebf1;font:500 11px var(--mono)}.node-sub{fill:#89a1b2;font:9px var(--mono)}.node-dot{fill:var(--accent)}.node-dot.recorded{fill:var(--blue)}.packet{fill:var(--accent);filter:drop-shadow(0 0 5px #70e2c5)}.flow-panel{margin-top:20px}.flow-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.flow-heading h2{font-size:14px;font-weight:500;margin:7px 0 0;letter-spacing:-.3px}.playback{display:flex;gap:6px}.playback button{font-size:10px;border:1px solid var(--line);border-radius:4px;padding:6px 10px}.playback .play-button{color:var(--accent);border-color:#37584f;background:#142b23}.flow-note{font-size:9px;color:#7c8e9d;margin:11px 0}.flow-step{display:grid;grid-template-columns:31px 95px 1fr;gap:10px;padding:13px 10px;border-top:1px solid #23303a;align-items:start}.step-num{font:11px var(--mono);color:#637c8f;padding-top:3px}.step-phase{font-size:11px;font-weight:500;color:#a6bdcd}.flow-step strong{display:block;font-size:11px;font-weight:500}.flow-step p{margin:4px 0 0;color:var(--muted);font-size:10px}.flow-step.current{background:#142720;border-left:2px solid var(--accent)}.flow-step.current .step-num,.flow-step.current .step-phase{color:var(--accent)}.flow-step.done .step-num{color:var(--accent)}.details{border:1px solid var(--line);border-radius:7px;background:#101923;overflow:hidden}.details-head{padding:21px 20px 18px;border-bottom:1px solid var(--line)}.details-head h2{font-size:15px;line-height:1.65;font-weight:500;letter-spacing:-.4px;margin:11px 0 9px}.details-head p{font-size:10px;line-height:1.95;color:#9daebb;margin:0}.detail-section{padding:18px 20px;border-bottom:1px solid var(--line)}.detail-section:last-child{border:0}.detail-section h3{font:9px var(--mono);color:var(--muted);letter-spacing:1.2px;margin:0 0 12px}.layer{border-left:2px solid #365847;padding:0 0 0 10px;margin-bottom:14px}.layer:last-child{margin:0}.layer-label{font:9px var(--mono);color:#79a599;display:block;margin-bottom:4px}.layer-value{font-size:10px;line-height:1.8;color:#d2e0e9;overflow-wrap:anywhere}.permission-item{font-size:10px;display:flex;gap:8px;margin:7px 0;line-height:1.8;color:#b7c6d2}.permission-item span{color:var(--accent);flex-shrink:0}.permission-item.deny span{color:var(--warn)}.endpoint{padding:10px;background:#0b131c;border-radius:4px;border:1px solid var(--line);font:9px/1.8 var(--mono);word-break:break-all;color:#b6d4cf}.endpoint button{display:block;font:9px var(--sans);color:var(--accent);margin-top:9px;padding:0}.evidence-reference{display:block;padding:9px 0;border-bottom:1px solid #202e3a;font-size:10px}.evidence-reference:last-child{border:0;padding-bottom:0}.evidence-reference small{display:block;font:9px var(--mono);color:#6f8b9d;margin-top:4px}.back-path{font-size:10px;color:var(--accent);padding:0;margin-bottom:15px}.bottom-notice{display:flex;gap:12px;align-items:flex-start;border:1px solid #3d392d;background:#1c1c16;border-radius:5px;padding:13px 17px;margin:28px 0 36px;color:#b8b6a5;font-size:10px}.bottom-notice>span{border:1px solid #6b6444;border-radius:50%;width:16px;height:16px;line-height:14px;text-align:center;font:10px var(--mono);flex-shrink:0;color:#d6c38e}.bottom-notice p{margin:0;line-height:1.9}.bottom-notice strong{color:#dfd4ae;font-weight:500}.bottom-notice button{padding:0;color:#e0c987;font-size:10px}footer{display:flex;gap:25px;align-items:center;border-top:1px solid var(--line);padding:18px 0 24px;color:#5e7485;font:9px var(--mono)}footer a{margin-left:auto}.gate-strip{display:flex;align-items:center;border:1px solid var(--line);border-radius:6px;margin-bottom:28px;padding:26px;gap:25px;background:var(--panel)}.gate-strip div{flex:1}.gate-strip div>span{color:var(--accent);font:11px var(--mono);margin-right:12px}.gate-strip strong{font:500 15px var(--mono)}.gate-strip p{font-size:10px;color:var(--muted);margin:9px 0 0}.gate-strip>b{font-weight:400;color:#46677c}.table-scroll{overflow:auto;border:1px solid var(--line);border-radius:6px}table{width:100%;border-collapse:collapse;font-size:11px;min-width:840px}th{text-align:left;background:#14202b;color:#94acbd;padding:16px 15px;font-size:10px;font-weight:500}td{border-top:1px solid var(--line);padding:20px 15px;vertical-align:top;line-height:1.9;color:#9ab0be}td:first-child{color:var(--text);font-weight:500;width:150px}td:nth-child(4){color:#85c6af}td:nth-child(5){color:#c5a888}.protocol-primer{margin:40px 0}.protocol-primer h2{font-size:21px;font-weight:500;margin-top:10px}.primer-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}.primer-grid article{border-top:1px solid #3c515d;padding-top:8px}.primer-grid h3{font:14px var(--mono);margin-top:16px}.primer-grid p{font-size:11px;color:var(--muted);line-height:2}.primer-grid a{color:var(--accent);font-size:10px}.evidence-summary{display:flex;align-items:center;gap:15px;padding:15px 20px;border:1px solid #304f42;border-radius:5px;background:#10221b;font-size:11px;color:#b6d3c5}.evidence-summary p{margin:0}.section-title{font-size:16px;font-weight:500;display:flex;align-items:center;gap:16px;margin:33px 0 18px}.section-title span{font:9px var(--mono);color:#678399}.evidence-row{display:grid;grid-template-columns:140px 1fr 115px;gap:22px;border-top:1px solid var(--line);padding:22px 5px}.evidence-time{font:10px var(--mono);color:#8199aa}.evidence-time span{display:block;color:var(--accent);margin-top:8px;font:10px var(--sans)}.evidence-row h3{font-size:12px;margin:0 0 7px;font-weight:500}.evidence-row p{font-size:11px;color:var(--muted);margin:0;line-height:1.9}.evidence-row a{font-size:10px;color:#82a9bc;text-align:right}.pending-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:15px}.pending-item{padding:24px;border:1px solid var(--line);background:#101922;border-radius:5px}.pending-item small{color:var(--warn);font-size:10px}.pending-item h3{font-size:14px;font-weight:500;margin:9px 0}.pending-item p{font-size:11px;color:var(--muted);line-height:1.9}.pending-item a{font-size:10px;color:#92a8b6}.scope-note{margin:28px 0 36px;background:#121b24;padding:20px 24px;border-left:2px solid #637e92}.scope-note h3{font-size:12px;margin:0 0 9px}.scope-note p{font-size:11px;color:var(--muted);margin:0;line-height:1.9}.plain-button{border:1px solid #3d554f;border-radius:4px;background:#162621;color:#a6dacb;font-size:11px;padding:9px 14px;white-space:nowrap}#sequence{padding:25px 32px;min-height:440px}.sequence-card{margin-left:18px;border-left:1px solid #355447;padding:0 0 28px 30px;position:relative}.sequence-card:last-child{border-left-color:transparent;padding-bottom:5px}.sequence-card:before{content:attr(data-index);position:absolute;left:-12px;top:0;display:grid;place-items:center;width:23px;height:23px;border:1px solid #426d5e;background:#11251d;border-radius:50%;font:10px var(--mono);color:var(--accent)}.sequence-card h3{font-size:12px;font-weight:500;margin:0 0 6px}.sequence-card p{font-size:11px;color:var(--muted);margin:0;line-height:1.9}.sequence-card.current:before{background:var(--accent);color:#0a2119}.sequence-card.current h3{color:var(--accent)}dialog{background:#101c27;color:var(--text);border:1px solid #48615e;border-radius:9px;max-width:500px;width:calc(100% - 40px);padding:34px;box-shadow:0 20px 90px #0008}dialog::backdrop{background:#040b12cf;backdrop-filter:blur(3px)}dialog>.icon-button{position:absolute;right:20px;top:20px}dialog h2{font-size:23px;margin:15px 0 22px}dialog ol{padding-left:18px;color:#b2c4d0;font-size:12px}dialog li{padding-bottom:11px}dialog p{font-size:11px;color:var(--muted);line-height:1.9;margin:15px 0 24px}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);border:1px solid #3e6656;border-radius:5px;background:#173127;padding:12px 22px;z-index:100;opacity:0;pointer-events:none;transition:opacity .2s;font-size:12px}#toast.visible{opacity:1}.empty-search{color:var(--muted);font-size:11px;padding:20px 8px}
@media(min-width:1700px){main{padding:38px 36px 0}.explorer-grid{grid-template-columns:minmax(0,1fr) 320px}.canvas-scroll svg{min-height:530px}.view-heading p{font-size:12px}.details-head p,.layer-value,.permission-item{font-size:11px}}
@media(max-width:1270px){.topbar{gap:24px;padding:0 20px}.brand{min-width:180px}.main-tabs{gap:20px}.workspace{grid-template-columns:218px 1fr}.sidebar{padding:25px 12px}main{padding:25px 20px 0}.explorer-grid{grid-template-columns:minmax(0,1fr)}.details{display:none}.details.mobile-open{display:block}.canvas-scroll svg{min-height:410px}.canvas-note{display:block}.snapshot-label{letter-spacing:.5px}.view-heading p{max-width:660px}.node-label{font-size:12px}.node-sub{font-size:10px}.node rect{stroke-width:1.5}}
@media(max-width:850px){.topbar{height:72px;gap:20px}.brand{min-width:auto;font-size:13px}.brand-mark{width:33px;height:33px;font-size:28px}.brand-sub{font-size:8px}.main-tabs{gap:17px}.main-tabs button{font-size:11px}.snapshot-label{display:none}.topbar>.icon-button{margin-left:auto}.workspace{grid-template-columns:180px 1fr}.sidebar{top:72px;height:calc(100vh - 72px);padding:22px 10px}.sidebar-heading{font-size:8px}.path-button{padding:11px 6px;gap:7px}.path-button strong{font-size:10px}.path-button small{font-size:8px}.filter-row button{font-size:9px;padding:4px 6px}.path-button .number{font-size:8px}.canvas-note{display:none}.view-heading{gap:10px}.view-heading h1{font-size:22px}.evidence-chip{font-size:8px}.canvas-scroll svg{min-width:660px}.gate-strip{padding:20px;gap:12px;flex-wrap:wrap}.gate-strip div{min-width:160px}.gate-strip>b{display:none}.primer-grid{grid-template-columns:1fr}.evidence-row{grid-template-columns:100px 1fr;gap:15px}.evidence-row a{grid-column:2;text-align:left}.pending-grid{grid-template-columns:1fr}footer{font-size:8px;gap:15px;flex-wrap:wrap}footer a{margin-left:0}}
@media(max-width:600px){.topbar{height:auto;min-height:76px;flex-wrap:wrap;padding:15px 18px 0;gap:0 18px}.brand{margin-bottom:13px}.topbar>.icon-button{order:1;margin-bottom:14px}.main-tabs{order:2;width:100%;height:42px;justify-content:space-between;gap:10px}.workspace{display:block}.sidebar{position:static;min-height:0;height:auto;border-right:0;border-bottom:1px solid var(--line);padding:16px 18px 10px}.sidebar-heading,.sidebar-foot{display:none}.search{margin-bottom:0}.filter-row{padding:10px 0}.filter-row button{font-size:10px;padding:4px 12px}.path-list{display:flex;overflow:auto;gap:7px;padding-bottom:4px}.path-button{min-width:157px;width:auto;padding:10px 9px;margin:0;border:1px solid var(--line)}.path-button strong{font-size:10px}.path-button small{font-size:8px}.path-button .number{font-size:9px}main{padding:24px 14px 0}.view-heading{margin-bottom:20px;flex-wrap:wrap}.view-heading h1{font-size:22px}.view-heading p{font-size:10px}.evidence-chip{margin:0;font-size:9px}.canvas-toolbar{padding:0 10px;gap:10px}.canvas-scroll svg{min-width:700px;min-height:440px}.canvas-scroll{min-height:400px}.canvas-legend{gap:12px;padding:12px 10px;font-size:8px}.canvas-legend .legend-tail{display:none}.flow-heading{align-items:flex-end}.flow-heading h2{font-size:12px}.playback{gap:4px}.playback button{font-size:9px;padding:5px 7px}.flow-step{grid-template-columns:23px 57px 1fr;gap:5px;padding:13px 6px}.flow-step strong,.step-phase{font-size:10px}.flow-step p{font-size:10px}.bottom-notice{margin-top:20px;padding:12px}.details{display:block}.details-head{padding:20px}.details-head p{font-size:11px}.detail-section{padding:18px 20px}.layer-value,.permission-item{font-size:11px}.gate-strip{display:block;padding:20px}.gate-strip div+div{margin-top:24px}.gate-strip div{margin-bottom:20px}.gate-strip div:last-child{margin-bottom:0}.protocol-primer h2{font-size:19px}.evidence-row{display:block}.evidence-time{margin-bottom:12px}.evidence-time span{display:inline;margin-left:10px}.evidence-row a{display:inline-block;margin-top:12px}.evidence-summary{font-size:10px;align-items:flex-start}.evidence-summary .status-dot{margin-top:6px}#sequence{padding:24px 18px}.section-title{font-size:14px}.section-title span{font-size:8px}footer span:nth-child(2){display:none}footer{justify-content:space-between}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}.packet{display:none}}
.node-label{font-size:13px}.node-sub{font-size:10px}.evidence-reference{width:100%;text-align:left}.details{scroll-margin-top:105px}#evidence-list article{scroll-margin-top:120px}
@media(min-width:601px) and (max-width:1270px){.details{display:block}#details-content{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.details-head{grid-column:1/-1}.details .detail-section{border-bottom:1px solid var(--line)}.details .detail-section:last-child{grid-column:1/-1}}
@media(max-width:600px){.canvas-legend:after{content:'지도는 좌우로 이동할 수 있습니다';display:block;color:#7e9aac}.canvas-legend{flex-wrap:wrap}}
