:root{--bg: #f6f7f9;--surface: #ffffff;--surface-2: #f0f2f5;--surface-3: #e6e9ee;--border: #dce0e6;--border-strong: #c3c9d2;--text: #16191d;--text-2: #4b535e;--text-3: #7c8695;--up: #d92b2b;--up-bg: #fdeaea;--down: #1861c9;--down-bg: #e8f0fd;--accent: #4b3ff0;--accent-bg: #eceafe;--warn: #b8730a;--warn-bg: #fdf3e2;--ok: #1a7f52;--ok-bg: #e7f5ee;--mono: "JetBrains Mono", "Cascadia Mono", Consolas, "D2Coding", monospace;--sans: "Pretendard", -apple-system, BlinkMacSystemFont, "Segoe UI", "Malgun Gothic", "Apple SD Gothic Neo", sans-serif;--r: 10px;--shadow: 0 1px 2px rgba(20,24,31,.05), 0 4px 14px rgba(20,24,31,.05);--side-w: 216px}:root[data-theme=dark]{--bg: #0e1116;--surface: #161a21;--surface-2: #1d222b;--surface-3: #262c37;--border: #2a313c;--border-strong: #3a424f;--text: #e8ebf0;--text-2: #a4adbb;--text-3: #6f7987;--up: #ff5d5d;--up-bg: #2e1618;--down: #5d9bff;--down-bg: #131f33;--accent: #8b80ff;--accent-bg: #1e1b38;--warn: #e0a03a;--warn-bg: #2c2113;--ok: #47c48a;--ok-bg: #12281f;--shadow: 0 1px 2px rgba(0,0,0,.35), 0 6px 20px rgba(0,0,0,.3)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.6 var(--sans);-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:24px;margin:0 0 6px;letter-spacing:-.02em}h2{font-size:19px;margin:32px 0 12px;letter-spacing:-.01em}h3{font-size:16px;margin:24px 0 8px}h4{font-size:14.5px;margin:0}p{margin:8px 0}code{font:500 12.5px/1.5 var(--mono);background:var(--surface-2);border:1px solid var(--border);padding:1px 5px;border-radius:4px}.app{display:grid;grid-template-columns:var(--side-w) 1fr;min-height:100vh}.side{background:var(--surface-2);border-right:1px solid var(--border);padding:18px 0;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{padding:0 18px 16px;display:flex;align-items:center;gap:9px}.brand:hover{text-decoration:none}.brand .mark{display:block;border-radius:7px}.brand b{font-size:14.5px;letter-spacing:-.01em;color:var(--text)}.brand-top{display:none;padding:0}.navsec{font:700 10px var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);padding:14px 18px 6px}.nav a{display:flex;align-items:center;gap:10px;padding:8px 18px;font-size:13.5px;color:var(--text-2);font-weight:500;border-left:3px solid transparent;text-decoration:none}.nav a:hover{background:var(--surface-3);color:var(--text);text-decoration:none}.nav a.active{background:var(--surface);color:var(--accent);font-weight:700;border-left-color:var(--accent)}.nav .ic{width:17px;text-align:center;font-size:13px;opacity:.75}.nav .cnt{margin-left:auto;font:600 10.5px var(--mono);color:var(--text-3)}.main{min-width:0;display:flex;flex-direction:column}.top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:13px 24px;border-bottom:1px solid var(--border);background:var(--surface);position:sticky;top:0;z-index:10}.top h2{margin:0;font-size:17px}.top .sp{flex:1}.iconbtn{flex:none;width:30px;height:30px;display:grid;place-items:center;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;color:var(--text-2);font-size:14px;line-height:1;cursor:pointer;padding:0}.iconbtn:hover{background:var(--surface-3);color:var(--text)}.iconbtn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.navtoggle{display:none}.theme-sw button{min-width:30px;font-size:12.5px}@media(max-width:620px){.theme-sw button{padding:5px 7px}}.body{padding:20px 24px 60px}@media(max-width:900px){.app{grid-template-columns:1fr}.side{position:static;height:auto;border-right:0;border-bottom:1px solid var(--border)}.nav{display:flex;flex-wrap:wrap}.app.nav-off .side{display:none}.navtoggle{display:grid}.brand-top{display:flex}.brand-top b{font-size:14px}.top h2{font-size:15px}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:16px 18px;box-shadow:var(--shadow)}.card-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:10px}.card-head>div:first-child{flex:1}.card .sub{font-size:12px;color:var(--text-3);margin:2px 0 0}.grid{display:grid;gap:14px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}.g5{grid-template-columns:repeat(5,minmax(0,1fr))}@media(max-width:1100px){.g4,.g5{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.g2,.g3,.g4,.g5{grid-template-columns:1fr}}.tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:13px 15px}.tile .lbl{font-size:11.5px;color:var(--text-3);font-weight:600;letter-spacing:.04em;text-transform:uppercase}.tile .val{font:700 23px/1.15 var(--mono);margin-top:5px;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.tile .dlt{font:500 12px/1 var(--mono);margin-top:5px}.tw{overflow-x:auto;border:1px solid var(--border);border-radius:var(--r);background:var(--surface)}table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:left;font:600 11.5px/1.3 var(--sans);letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);padding:10px 12px;border-bottom:1px solid var(--border);background:var(--surface-2);white-space:nowrap;position:sticky;top:0}td{padding:9px 12px;border-bottom:1px solid var(--border);vertical-align:top}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:var(--surface-2)}td.num,th.num{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}td.nm{font-weight:600;white-space:nowrap}.tk{font:500 11px/1 var(--mono);color:var(--text-3)}caption{caption-side:bottom;font-size:12px;color:var(--text-3);padding:9px 12px;text-align:left}.b{display:inline-flex;align-items:center;gap:4px;font:600 11.5px/1 var(--sans);padding:4px 8px;border-radius:5px;border:1px solid transparent;white-space:nowrap}.b-up{background:var(--up-bg);color:var(--up)}.b-down{background:var(--down-bg);color:var(--down)}.b-ok{background:var(--ok-bg);color:var(--ok)}.b-warn{background:var(--warn-bg);color:var(--warn)}.b-acc{background:var(--accent-bg);color:var(--accent)}.b-mut{background:var(--surface-2);color:var(--text-3);border-color:var(--border)}.up{color:var(--up)}.down{color:var(--down)}.mut{color:var(--text-3)}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.xs{font-size:12px}.sm{font-size:13px}.sig{font:700 10px var(--mono);padding:2px 5px;border-radius:3px}.sig3{background:var(--ok-bg);color:var(--ok)}.sig2{background:var(--warn-bg);color:var(--warn)}.sig0{background:var(--surface-2);color:var(--text-3)}.seg{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--surface)}.seg button{font:600 12px var(--sans);border:0;background:transparent;color:var(--text-2);padding:7px 13px;cursor:pointer;border-right:1px solid var(--border)}.seg button:last-child{border-right:0}.seg button.on{background:var(--accent);color:#fff}.seg button:hover:not(.on){background:var(--surface-2)}.btn{font:600 12.5px var(--sans);background:var(--surface-2);color:var(--text-2);border:1px solid var(--border);border-radius:7px;padding:7px 12px;cursor:pointer}.btn:hover{background:var(--surface-3);color:var(--text)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.sm{padding:5px 9px;font-size:12px}.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}input[type=date],select{font:500 12.5px var(--mono);border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:7px;padding:6px 9px}.pill{font:600 11.5px var(--sans);background:var(--surface-2);border:1px solid var(--border);border-radius:20px;padding:5px 11px;color:var(--text-2)}.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:14px}.state{padding:28px;text-align:center;color:var(--text-3);font-size:13.5px;border:1px dashed var(--border);border-radius:var(--r);background:var(--surface)}.state.err{color:var(--up);border-color:color-mix(in srgb,var(--up) 40%,var(--border));background:var(--up-bg)}.empty{padding:20px;text-align:center;color:var(--text-3);font-size:13px}.notyet{padding:14px 16px;border-radius:var(--r);font-size:13.5px;background:var(--warn-bg);border-left:3px solid var(--warn);color:var(--text-2)}.note{border-left:3px solid var(--accent);background:var(--accent-bg);padding:12px 15px;border-radius:0 var(--r) var(--r) 0;margin:14px 0;font-size:13.5px}.note.warn{border-color:var(--warn);background:var(--warn-bg)}.note.ok{border-color:var(--ok);background:var(--ok-bg)}.note b{display:block;margin-bottom:3px}.chart-wrap svg{display:block;width:100%;height:auto}.chart-wrap text.axis{font:500 11px var(--mono);fill:var(--text-3)}.chart-wrap text.axis.strong{font-weight:700}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:11.5px;color:var(--text-2);margin-top:8px}.legend i{display:inline-block;width:12px;height:3px;border-radius:2px;margin-right:5px;vertical-align:3px}.legend i.dash{background:repeating-linear-gradient(90deg,currentColor 0 4px,transparent 4px 7px)}.divbars{display:flex;flex-direction:column;gap:4px}.divrow{display:grid;grid-template-columns:150px 1fr 74px auto;gap:9px;align-items:center;font-size:12.5px}.divrow .dl{font-weight:600;color:var(--text-2)}.divrow .dl i{display:block;font-style:normal;font-size:10.5px;color:var(--text-3);font-weight:400}.dtrack{position:relative;height:var(--h, 14px);background:var(--surface-2);border-radius:3px}.dtrack:before{content:"";position:absolute;left:50%;top:-2px;bottom:-2px;width:1px;background:var(--border-strong)}.dtrack span{position:absolute;top:2px;bottom:2px;border-radius:2px}.dtrack span.pos{background:var(--ok)}.dtrack span.neg{background:var(--up)}.divrow .dv{font:700 11.5px var(--mono);text-align:right}@media(max-width:700px){.divrow{grid-template-columns:110px 1fr 66px}}.stackbar{display:flex;height:30px;border-radius:5px;overflow:hidden;border:1px solid var(--border)}.stackbar div{display:grid;place-items:center;font:600 10.5px var(--sans);color:#fff;overflow:hidden;white-space:nowrap}.bar{height:7px;background:var(--surface-3);border-radius:4px;overflow:hidden}.bar>i{display:block;height:100%;background:var(--accent);border-radius:4px}.listrow{display:grid;grid-template-columns:100px 74px 1fr 130px 92px 92px;gap:12px;align-items:center;width:100%;text-align:left;padding:12px 15px;border:1px solid var(--border);border-radius:9px;background:var(--surface);margin-bottom:7px;cursor:pointer;font-family:inherit;font-size:inherit;color:inherit}.listrow:hover{border-color:var(--accent);background:var(--accent-bg)}.listrow .d{font:600 12px var(--mono);color:var(--text-2)}.listrow .ti{font-weight:650;font-size:13.5px}.listrow .ti span{display:block;font-weight:400;font-size:11.5px;color:var(--text-3);margin-top:2px}.lhead{display:grid;grid-template-columns:100px 74px 1fr 130px 92px 92px;gap:12px;padding:0 15px 7px;font:700 10.5px var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}@media(max-width:1080px){.listrow,.lhead{grid-template-columns:90px 66px 1fr 88px}.hide-sm{display:none}}.kv{display:grid;grid-template-columns:max-content 1fr;gap:4px 16px;font-size:13px;margin:0}.kv dt{color:var(--text-3);font-weight:600}.kv dd{margin:0;font-family:var(--mono);font-variant-numeric:tabular-nums}.pre-sm{margin:0;font:400 11.5px/1.55 var(--mono);color:var(--text-2);background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:10px 12px;overflow-x:auto;white-space:pre}.term-wrap{position:relative;display:inline}.term{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:help;border-bottom:1px dotted var(--accent)}.term:hover{color:var(--accent)}.term-pop{position:absolute;left:0;top:calc(100% + 6px);z-index:50;display:block;width:min(320px,78vw);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:10px 12px;box-shadow:0 10px 28px #0000002e;font:400 12.5px/1.6 var(--sans);color:var(--text-2);white-space:normal;text-align:left}.term-pop b{display:block;color:var(--text);margin-bottom:3px}.term-why{display:block;margin-top:7px;padding-top:7px;border-top:1px solid var(--border);color:var(--text-3)}.term-why b{display:inline;color:var(--text-2)}.gloss{margin:0}.gloss-item{padding:11px 0;border-bottom:1px solid var(--border)}.gloss-item:last-child{border-bottom:0;padding-bottom:0}.gloss-item dt{font:600 14px/1.4 var(--sans);color:var(--text)}.gloss-item dd{margin:5px 0 0;font:400 13px/1.65 var(--sans);color:var(--text-2)}.brand{text-decoration:none;color:inherit}.brand:hover b{color:var(--accent)}.hero{padding:30px 0 34px;border-bottom:1px solid var(--border);margin-bottom:26px}.hero-badge{display:inline-block;margin-bottom:16px;font:600 11.5px/1 var(--mono);letter-spacing:.04em;color:var(--accent);background:var(--accent-bg);padding:6px 11px;border-radius:20px}.hero h1{margin:0 0 14px;max-width:30ch;font:700 clamp(28px,4.4vw,44px)/1.26 var(--sans);letter-spacing:-.025em;color:var(--text-3);word-break:keep-all;overflow-wrap:break-word}.hero h1 b{color:var(--text);font-weight:700}.hero-sub{margin:0 0 22px;max-width:68ch;font:400 15.5px/1.72 var(--sans);color:var(--text-2);word-break:keep-all;overflow-wrap:break-word}.hero-sub b{color:var(--text)}.hero-cta{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:28px}.hero-cta .btn{padding:9px 16px;font-size:13.5px}.hero-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:1px;background:var(--border);border:1px solid var(--border);border-radius:10px;overflow:hidden}.hero-stats>div{background:var(--surface);padding:14px 16px}.hero-stats b{display:block;font:700 19px/1.2 var(--sans);letter-spacing:-.02em;color:var(--text)}.hero-stats span{display:block;margin-top:4px;font-size:12px;color:var(--text-3)}.hsteps{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}.hstep{display:flex;gap:13px;align-items:flex-start;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px}.hstep-n{flex:0 0 27px;height:27px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:#fff;font:700 13px/1 var(--mono)}.hstep h4{margin:2px 0 6px;font-size:14.5px}.hstep p{margin:0}.hfunnel{display:grid;gap:12px}.hfunnel-row{display:grid;grid-template-columns:minmax(180px,1.1fr) minmax(170px,1.3fr) 1.5fr;gap:14px;align-items:center}.hfunnel-lab{font:600 13.5px/1.45 var(--sans);color:var(--text)}.hfunnel-bar{position:relative;display:flex;align-items:center;gap:9px;height:30px;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;overflow:hidden}.hfunnel-bar i{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,var(--accent),var(--accent-bg));opacity:.5}.hfunnel-bar b{position:relative;margin-left:10px;font:700 13px/1 var(--mono);color:var(--text)}@media(max-width:720px){.hfunnel-row{grid-template-columns:1fr;gap:5px}.hfunnel-note{margin-bottom:6px}}.card.hbad{border-left:3px solid var(--down)}.hlinks{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:11px}.hlink{display:block;text-decoration:none;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:15px 16px;transition:border-color .12s,transform .12s}.hlink:hover{border-color:var(--accent);transform:translateY(-1px)}.hlink b{display:block;font-size:14.5px;color:var(--text);margin-bottom:5px}.hlink span{display:block;font:400 12.5px/1.6 var(--sans);color:var(--text-3)}.aflow{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;gap:12px;align-items:stretch}.aflow-col{display:flex;flex-direction:column;gap:8px}.aflow-head{font:600 11.5px/1 var(--mono);letter-spacing:.03em;color:var(--text-3);text-transform:none;padding-bottom:2px}.aflow-arrow{align-self:center;color:var(--text-3);font-size:20px;line-height:1;-webkit-user-select:none;user-select:none}.aflow-note{margin-top:2px}.arole{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--border);border-radius:8px;padding:11px 13px}.arole b{display:block;font-size:13.5px;color:var(--text);margin-bottom:4px}.arole span{display:block;font:400 12.5px/1.6 var(--sans);color:var(--text-2)}.arole span b{display:inline;font-size:inherit;margin:0}.arole.aveto,.arole.acritic{border-left-color:var(--down)}.arole.amacro{border-left-color:var(--warn)}.arole.adec{border-left-color:var(--accent);background:var(--accent-bg)}.arole.aout{border-left-color:var(--ok)}@media(max-width:900px){.aflow{grid-template-columns:1fr}.aflow-arrow{transform:rotate(90deg);padding:2px 0}}h1,h2,h3,h4,.hero-badge,.hstep h4,.arole b,.hlink b,.aflow-head,.hfunnel-lab,.tile .lbl,.note b{word-break:keep-all;overflow-wrap:break-word}.archwrap{overflow-x:auto;border:1px solid var(--border);border-radius:10px;background:var(--surface);padding:10px 12px}.arch{display:block;height:auto;width:100%;max-width:860px;min-width:720px;margin-inline:auto}.arch text{font-family:var(--sans)}.arch .a-t{font-size:12px;font-weight:650;fill:var(--text)}.arch .a-s{font-size:10.5px;fill:var(--text-3)}.arch .a-rail{font-size:10px;font-weight:600;fill:var(--text-3);letter-spacing:.02em}.arch .a-src rect,.arch .a-box{fill:var(--surface-2);stroke:var(--border);stroke-width:1}.arch .a-box.a-hi{fill:var(--accent-bg);stroke:var(--accent);stroke-width:1.6}.arch .a-box.a-ok{fill:var(--ok-bg);stroke:var(--ok)}.arch .a-box.a-warn{fill:var(--warn-bg);stroke:var(--warn)}.arch .a-db{fill:var(--accent-bg);stroke:var(--accent);stroke-width:1.4}.arch .a-db-t{fill:var(--accent)}.body{flex:1}.pagetools{display:flex;justify-content:flex-end;margin:-4px 0 10px}.mt{margin-top:14px}.foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:14px 24px;border-top:1px solid var(--border);background:var(--surface);color:var(--text-3);font-size:12.5px}.foot b{color:var(--text-2);font-weight:600}.foot a{color:var(--text-2)}.foot a:hover{color:var(--accent)}.foot .dv{color:var(--border-strong)}.foot .sp{flex:1}.mask{position:fixed;inset:0;z-index:100;background:#0a0d128c;display:flex;align-items:center;justify-content:center;padding:20px}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:0 20px 60px #00000059;width:min(560px,100%);max-height:calc(100vh - 40px);display:flex;flex-direction:column;outline:none}.modal-head{display:flex;align-items:flex-start;gap:12px;padding:16px 18px;border-bottom:1px solid var(--border)}.modal-head h3{margin:0;font-size:16px}.modal-head .sub{margin:3px 0 0;font-size:12.5px;color:var(--text-3)}.modal-head .btn{margin-left:auto}.modal-body{padding:4px 18px 18px;overflow-y:auto}.modal-body h4{margin:18px 0 6px;font-size:13px;color:var(--text-3);text-transform:none;letter-spacing:.02em}.modal-body p{color:var(--text-2)}.about-stack{margin:0;padding-left:18px;color:var(--text-2)}.about-stack li{margin:4px 0}.about-stack b{color:var(--text);font-weight:600}.about-links{display:grid;gap:8px;margin:6px 0 16px}.about-links a{display:flex;align-items:baseline;gap:10px;border:1px solid var(--border);border-radius:8px;padding:9px 12px;background:var(--surface-2);color:var(--text-2);font-size:13px;text-decoration:none}.about-links a:hover{border-color:var(--accent);background:var(--accent-bg)}.about-links b{color:var(--text);font-size:12.5px;min-width:44px}
