@charset "UTF-8";@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url("./media/inter-latin-400-normal-55WT6UWF.woff2") format("woff2"),url("./media/inter-latin-400-normal-FR5HOXA4.woff") format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url("./media/inter-latin-500-normal-W62DVTXI.woff2") format("woff2"),url("./media/inter-latin-500-normal-ZNGIZ2YB.woff") format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url("./media/inter-latin-600-normal-R6Y2SZCR.woff2") format("woff2"),url("./media/inter-latin-600-normal-ZYHV6QZT.woff") format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url("./media/inter-latin-700-normal-SU5XVJMF.woff2") format("woff2"),url("./media/inter-latin-700-normal-TQQ5JXGD.woff") format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:800;src:url("./media/inter-latin-800-normal-SUCF22C3.woff2") format("woff2"),url("./media/inter-latin-800-normal-ZPDSDNQS.woff") format("woff")}@font-face{font-family:Sora;font-style:normal;font-display:swap;font-weight:500;src:url("./media/sora-latin-500-normal-D5I2CVY2.woff2") format("woff2"),url("./media/sora-latin-500-normal-TXJ6Y7BQ.woff") format("woff")}@font-face{font-family:Sora;font-style:normal;font-display:swap;font-weight:600;src:url("./media/sora-latin-600-normal-RPOBQQHN.woff2") format("woff2"),url("./media/sora-latin-600-normal-FSEJYYJR.woff") format("woff")}@font-face{font-family:Sora;font-style:normal;font-display:swap;font-weight:700;src:url("./media/sora-latin-700-normal-VBOJYNIO.woff2") format("woff2"),url("./media/sora-latin-700-normal-PUTQAZHJ.woff") format("woff")}@font-face{font-family:Sora;font-style:normal;font-display:swap;font-weight:800;src:url("./media/sora-latin-800-normal-YDFXR2V6.woff2") format("woff2"),url("./media/sora-latin-800-normal-HKYRI6KP.woff") format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url("./media/jetbrains-mono-latin-400-normal-3OOWLGQ2.woff2") format("woff2"),url("./media/jetbrains-mono-latin-400-normal-WDD34GPP.woff") format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url("./media/jetbrains-mono-latin-500-normal-V4XIP5OW.woff2") format("woff2"),url("./media/jetbrains-mono-latin-500-normal-ETEQEOVZ.woff") format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url("./media/jetbrains-mono-latin-700-normal-SVC2HUP4.woff2") format("woff2"),url("./media/jetbrains-mono-latin-700-normal-ZFEEZXV6.woff") format("woff")}:root{--bg: #0b0f1e;--surface: #1a1830;--surface-2: #201e3a;--surface-3: #231f40;--border: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .16);--fg: #f0eefd;--fg-2: #b3b0d0;--fg-3: #9895b6;--fg-inverse: #0b0f1e;--accent: #8b76f5;--accent-hover: #a99af5;--accent-fg: #ffffff;--accent-soft: rgba(124, 95, 240, .18);--accent-soft-fg: #c9bfff;--accent-line: rgba(124, 95, 240, .45);--accent-grad: linear-gradient(90deg, #7c5cff, #9f7bff);--accent-grad-hover: linear-gradient(90deg, #6a48f5, #8f68ff);--cyan: #00cfff;--teal: #00d4b4;--xp: #ffb84d;--xp-soft: rgba(255, 184, 77, .14);--xp-line: rgba(255, 184, 77, .4);--xp-grad: linear-gradient(90deg, #ffb84d, #ff9f1a);--pass: #4ade80;--pass-soft: rgba(74, 222, 128, .12);--pass-line: rgba(74, 222, 128, .35);--fail: #fa8585;--fail-soft: rgba(248, 113, 113, .12);--fail-line: rgba(248, 113, 113, .35);--warn: #f7b731;--warn-soft: rgba(247, 183, 49, .12);--warn-line: rgba(247, 183, 49, .35);--info: #60a5fa;--info-soft: rgba(96, 165, 250, .12);--info-line: rgba(96, 165, 250, .35);--c1: #a99af5;--c1-soft: rgba(139, 118, 245, .2);--c2: #60a5fa;--c2-soft: rgba(96, 165, 250, .15);--c3: #00d4b4;--c3-soft: rgba(0, 212, 180, .14);--c4: #4ade80;--c4-soft: rgba(74, 222, 128, .14);--c5: #f7b731;--c5-soft: rgba(247, 183, 49, .14);--c6: #fb923c;--c6-soft: rgba(251, 146, 60, .15);--c7: #f78bc4;--c7-soft: rgba(244, 114, 182, .14);--c8: #9896b0;--c8-soft: rgba(255, 255, 255, .07);--seq-0: #201e3a;--seq-1: #3a2f7a;--seq-2: #5b47c2;--seq-3: #7c5ff0;--seq-4: #a99af5;--code-bg: #0d1117;--code-fg: #e6edf3;--code-border: #30363d;--code-head: #161b22;--code-muted: #8b949e;--code-line: #1c2128;--term-pass: #3fb950;--term-fail: #f85149;--term-warn: #ffa657;--syn-kw: #ff7b72;--syn-type: #79c0ff;--syn-str: #a5d6ff;--syn-com: #8b949e;--syn-num: #79c0ff;--syn-fn: #d2a8ff;--syn-pun: #c9d1d9;--hero-grad: radial-gradient( circle at 25% 30%, #7b5cff 0%, #2a1766 40%, #120a35 70%, #0b061d 100% );--ink-glass: rgba(10, 6, 30, .7);--ink: #120a35;--ink-2: #1b1245;--ink-fg: #f0eefd;--ink-muted: #a9a3d6;--ink-border: rgba(255, 255, 255, .1);--ink-accent: #9c8bff;--glow-1: rgba(122, 60, 255, .55);--glow-2: rgba(0, 207, 255, .35);--page-grad: radial-gradient(circle at 20% 10%, rgba(120, 130, 255, .22), transparent 60%), radial-gradient(circle at 80% 80%, rgba(160, 90, 255, .16), transparent 60%), linear-gradient(180deg, #0a0f2a 0%, #090c1f 40%, #070a18 100%);--scrim: rgba(5, 7, 20, .7);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 8px 24px rgba(0, 0, 0, .45), 0 1px 3px rgba(0, 0, 0, .4);--shadow-lg: 0 24px 60px rgba(0, 0, 0, .6), 0 0 0 1px rgba(124, 95, 240, .15);--focus-ring: 0 0 0 2px var(--bg), 0 0 0 4px var(--accent);--font-display: "Sora", "Segoe UI", system-ui, sans-serif;--font-text: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", "Cascadia Code", Consolas, ui-monospace, monospace;--fs-xs: 12px;--fs-sm: 13px;--fs-base: 14.5px;--fs-md: 16px;--fs-lg: 18px;--fs-xl: 22px;--fs-2xl: 28px;--fs-3xl: 38px;--fs-4xl: 54px;--lh-tight: 1.15;--lh-snug: 1.35;--lh: 1.55;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-7: 32px;--sp-8: 40px;--sp-9: 56px;--sp-10: 80px;--r-xs: 4px;--r-sm: 6px;--r-md: 8px;--r-lg: 12px;--r-xl: 16px;--r-pill: 999px;--sidebar-w: 248px;--sidebar-w-collapsed: 68px;--topbar-h: 60px;--ease: cubic-bezier(.2, .7, .2, 1);color-scheme:dark}:root[data-theme=light]{--bg: #f5f6fa;--surface: #ffffff;--surface-2: #f0f1f7;--surface-3: #e6e7f0;--border: #e2e4ee;--border-strong: #c9ccda;--fg: #16152a;--fg-2: #4a4868;--fg-3: #615f7e;--fg-inverse: #ffffff;--accent: #6344e0;--accent-hover: #5233cc;--accent-fg: #ffffff;--accent-soft: #eeeafe;--accent-soft-fg: #4b2fc0;--accent-line: #c9bdf7;--accent-grad: linear-gradient(90deg, #7c5cff, #9f7bff);--accent-grad-hover: linear-gradient(90deg, #6a48f5, #8f68ff);--xp: #a34b07;--xp-soft: #fef3e2;--xp-line: #f6cf9a;--xp-grad: linear-gradient(90deg, #ffb84d, #ff9f1a);--pass: #137a3a;--pass-soft: #e6f6ec;--pass-line: #a7ddb9;--fail: #c2262e;--fail-soft: #fbeaea;--fail-line: #efb4b6;--warn: #946200;--warn-soft: #fff4d6;--warn-line: #ebcb82;--info: #1d63c2;--info-soft: #e6effb;--info-line: #a9c6ee;--c1: #6344e0;--c1-soft: #eeeafe;--c2: #1d63c2;--c2-soft: #e6effb;--c3: #0a706b;--c3-soft: #e0f3f2;--c4: #2c7a2f;--c4-soft: #e7f3e8;--c5: #9a6400;--c5-soft: #fff2d9;--c6: #b4530f;--c6-soft: #fceee2;--c7: #b4245d;--c7-soft: #fbe8f0;--c8: #4b5568;--c8-soft: #eceef2;--seq-0: #e9eaf2;--seq-1: #d5ccf7;--seq-2: #a895ee;--seq-3: #7c5ff0;--seq-4: #5233cc;--ink: #120a35;--ink-2: #1b1245;--ink-border: rgba(255, 255, 255, .12);--glow-1: rgba(124, 92, 255, .18);--glow-2: rgba(0, 207, 255, .12);--page-grad: radial-gradient(circle at 20% 10%, rgba(124, 92, 255, .1), transparent 55%), radial-gradient(circle at 80% 85%, rgba(0, 207, 255, .07), transparent 55%), linear-gradient(180deg, #f7f7fc 0%, #f2f3f9 100%);--scrim: rgba(16, 14, 40, .48);--shadow-sm: 0 1px 2px rgba(22, 21, 42, .06);--shadow-md: 0 4px 14px rgba(22, 21, 42, .08), 0 1px 3px rgba(22, 21, 42, .06);--shadow-lg: 0 18px 48px rgba(22, 21, 42, .18), 0 2px 8px rgba(22, 21, 42, .08);--focus-ring: 0 0 0 2px var(--surface), 0 0 0 4px var(--accent);color-scheme:light}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;min-height:100vh;background:var(--page-grad);background-color:var(--bg);background-attachment:fixed;color:var(--fg);font-family:var(--font-text);font-size:var(--fs-base);line-height:var(--lh);-webkit-font-smoothing:antialiased;overflow-x:hidden;overflow-x:clip}body:before,body:after{content:"";position:fixed;z-index:-1;width:640px;height:640px;border-radius:50%;filter:blur(140px);opacity:.5;pointer-events:none}body:before{top:-220px;left:-220px;background:radial-gradient(circle,var(--glow-1),transparent 70%)}body:after{right:-220px;bottom:-260px;background:radial-gradient(circle,var(--glow-2),transparent 70%)}h1,h2,h3,h4,h5{margin:0;color:var(--fg);font-family:var(--font-display);font-weight:700;line-height:var(--lh-tight);letter-spacing:-.015em;text-wrap:balance}h1{font-size:var(--fs-2xl)}h2{font-size:var(--fs-xl)}h3{font-size:var(--fs-lg)}h4{font-size:var(--fs-md)}h5{font-size:var(--fs-base)}p{margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:2px}:where(p,.callout,.hint) a:not(.btn){text-decoration:underline;text-underline-offset:2px}img,svg{max-width:100%}code,kbd,pre,samp{font-family:var(--font-mono)}:not(pre)>code{padding:.05em .35em;border:1px solid var(--border);border-radius:var(--r-xs);background:var(--surface-2);color:var(--fg);font-size:.9em}hr{margin:var(--sp-5) 0;border:0;border-top:1px solid var(--border)}button{color:inherit;font:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-xs)}[tabindex="-1"]:focus{outline:none}::selection{background:var(--accent-soft);color:var(--accent-soft-fg)}[hidden]{display:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.sr-only{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 var(--sp-6)}.page{width:100%;min-width:0;max-width:1320px;margin:0 auto;padding:var(--sp-7) var(--sp-7) var(--sp-9)}.page-narrow{max-width:960px}@media(max-width:760px){.container{padding:0 var(--sp-4)}.page{padding:var(--sp-5) var(--sp-4) var(--sp-8)}}.stack{display:flex;flex-direction:column;gap:var(--sp-4)}.stack-sm{gap:var(--sp-2)}.stack-lg{gap:var(--sp-7)}.row{display:flex;align-items:center;gap:var(--sp-3);min-width:0}.row-wrap{flex-wrap:wrap}.row-between{justify-content:space-between}.row-top{align-items:flex-start}.cluster{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.spacer{flex:1}.grid{display:grid;gap:var(--sp-5)}.grid>*{min-width:0}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-main{grid-template-columns:minmax(0,1fr) 340px}.grid-auto{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}@media(max-width:1100px){.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-main{grid-template-columns:minmax(0,1fr)}}@media(max-width:760px){.grid-2,.grid-3,.grid-4{grid-template-columns:minmax(0,1fr)}}.eyebrow{color:var(--fg-3);font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:500;letter-spacing:.06em;text-transform:uppercase}.muted{color:var(--fg-3)}.text-2{color:var(--fg-2)}.small{font-size:var(--fs-sm)}.xs{font-size:var(--fs-xs)}.strong{font-weight:600}.mono{font-family:var(--font-mono)}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.text-pass{color:var(--pass)}.text-fail{color:var(--fail)}.text-warn{color:var(--warn)}.text-xp{color:var(--xp)}.text-accent{color:var(--accent)}.truncate{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tone-1{background:var(--c1-soft);color:var(--c1)}.tone-2{background:var(--c2-soft);color:var(--c2)}.tone-3{background:var(--c3-soft);color:var(--c3)}.tone-4{background:var(--c4-soft);color:var(--c4)}.tone-5{background:var(--c5-soft);color:var(--c5)}.tone-6{background:var(--c6-soft);color:var(--c6)}.tone-7{background:var(--c7-soft);color:var(--c7)}.tone-8{background:var(--c8-soft);color:var(--c8)}.icon{flex:none;width:18px;height:18px;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.icon-sm{width:14px;height:14px}.icon-lg{width:22px;height:22px}.icon-xl{width:28px;height:28px}.btn{--h: 38px;display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);height:var(--h);padding:0 var(--sp-4);border:1px solid transparent;border-radius:var(--r-md);font-size:var(--fs-sm);font-weight:600;line-height:1;white-space:nowrap;text-decoration:none!important;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s var(--ease),border-color .15s var(--ease),color .15s var(--ease),box-shadow .15s var(--ease)}.btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.btn:disabled,.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed}.btn .icon{width:16px;height:16px}.btn-primary{background:var(--accent-grad);color:var(--accent-fg);box-shadow:0 6px 18px -6px var(--glow-1)}.btn-primary:hover:not(:disabled){background:var(--accent-grad-hover)}.btn-secondary{border-color:var(--border-strong);background:var(--surface);color:var(--fg);box-shadow:var(--shadow-sm)}.btn-secondary:hover:not(:disabled){background:var(--surface-2)}.btn-ghost{background:transparent;color:var(--fg-2)}.btn-ghost:hover:not(:disabled){background:var(--surface-2);color:var(--fg)}.btn-soft{background:var(--accent-soft);color:var(--accent-soft-fg)}.btn-soft:hover:not(:disabled){border-color:var(--accent-line)}.btn-danger{background:var(--fail);color:var(--fg-inverse)}.btn-danger:hover:not(:disabled){filter:brightness(.92)}.btn-sm{--h: 30px;padding:0 var(--sp-3);border-radius:var(--r-sm);font-size:var(--fs-xs)}.btn-lg{--h: 46px;padding:0 var(--sp-6);font-size:var(--fs-base)}.btn-block{width:100%}.btn-icon{width:var(--h);padding:0}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.label{color:var(--fg);font-size:var(--fs-sm);font-weight:600}.hint{color:var(--fg-3);font-size:var(--fs-xs)}.error-text{display:flex;align-items:center;gap:4px;color:var(--fail);font-size:var(--fs-xs)}.input,.select,.textarea{width:100%;min-width:0;height:40px;padding:0 var(--sp-3);border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--surface);color:var(--fg);font:inherit;font-size:var(--fs-base);transition:border-color .15s,box-shadow .15s}.input::placeholder,.select::placeholder,.textarea::placeholder{color:var(--fg-3)}.input:hover,.select:hover,.textarea:hover{border-color:var(--fg-3)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--accent);box-shadow:var(--focus-ring)}.input[aria-invalid=true],.select[aria-invalid=true],.textarea[aria-invalid=true]{border-color:var(--fail)}.input:disabled,.select:disabled,.textarea:disabled{background:var(--surface-2);color:var(--fg-3);cursor:not-allowed}.textarea{height:auto;min-height:96px;padding:var(--sp-3);line-height:var(--lh);resize:vertical}.select{appearance:none;padding-right:34px;background-image:linear-gradient(45deg,transparent 50%,var(--fg-3) 50%),linear-gradient(135deg,var(--fg-3) 50%,transparent 50%);background-position:calc(100% - 17px) 17px,calc(100% - 12px) 17px;background-size:5px 5px;background-repeat:no-repeat}.input-sm,.select-sm{height:32px;font-size:var(--fs-sm)}.select-sm{background-position:calc(100% - 17px) 13px,calc(100% - 12px) 13px}.check{display:inline-flex;align-items:flex-start;gap:var(--sp-2);color:var(--fg-2);font-size:var(--fs-sm);line-height:1.4;cursor:pointer}.check input{appearance:none;flex:none;display:grid;place-content:center;width:18px;height:18px;margin:1px 0 0;border:1.5px solid var(--border-strong);border-radius:var(--r-xs);background:var(--surface);cursor:pointer;transition:background .12s,border-color .12s}.check input:before{content:"";width:10px;height:10px;background:var(--accent-fg);transform:scale(0);transition:transform .12s var(--ease);clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0,43% 62%)}.check input:checked{border-color:var(--accent);background:var(--accent)}.check input:checked:before{transform:scale(1)}.check input:focus-visible{outline:none;box-shadow:var(--focus-ring)}.check input:disabled{opacity:.5;cursor:not-allowed}.switch{display:inline-flex;align-items:center;gap:var(--sp-3);color:var(--fg-2);font-size:var(--fs-sm);cursor:pointer}.switch input{appearance:none;position:relative;flex:none;width:36px;height:20px;margin:0;border:1px solid var(--border-strong);border-radius:var(--r-pill);background:var(--surface-3);cursor:pointer;transition:background .15s}.switch input:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:var(--fg);box-shadow:var(--shadow-sm);transition:transform .15s var(--ease)}.switch input:checked{border-color:var(--accent);background:var(--accent)}.switch input:checked:after{background:var(--accent-fg);transform:translate(16px)}.switch input:focus-visible{outline:none;box-shadow:var(--focus-ring)}.switch input:disabled{opacity:.5;cursor:not-allowed}.badge{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border:1px solid transparent;border-radius:var(--r-sm);background:var(--surface-2);color:var(--fg-2);font-size:var(--fs-xs);font-weight:600;line-height:1;white-space:nowrap}.badge .icon{width:12px;height:12px;stroke-width:2.2}.badge-pill{border-radius:var(--r-pill)}.badge-lg{height:26px;padding:0 10px;font-size:var(--fs-sm)}.badge-dot:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.badge-neutral{border-color:var(--border);background:var(--surface-2);color:var(--fg-2)}.badge-outline,.badge-free{border-color:var(--border-strong);background:transparent;color:var(--fg-2)}.badge-accent{background:var(--accent-soft);color:var(--accent-soft-fg)}.badge-easy,.badge-pass{background:var(--pass-soft);color:var(--pass)}.badge-medium,.badge-warn{background:var(--warn-soft);color:var(--warn)}.badge-hard,.badge-fail{background:var(--fail-soft);color:var(--fail)}.badge-info{background:var(--info-soft);color:var(--info)}.badge-pro{background:var(--accent-grad);color:var(--accent-fg)}.badge-locked{border-color:var(--border);background:var(--surface-2);color:var(--fg-3)}.badge-xp{background:var(--xp-soft);color:var(--xp)}.badge-level{border-color:var(--border);background:transparent;color:var(--fg-2);font-family:var(--font-mono);font-weight:500}:where(.card,.card-body){display:block}.card{min-width:0;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface)}.card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--border)}.card-head h2,.card-head h3{font-size:var(--fs-md)}.card-body{padding:var(--sp-5)}.card-foot{display:flex;align-items:center;justify-content:flex-end;gap:var(--sp-2);padding:var(--sp-3) var(--sp-5);border-top:1px solid var(--border);border-radius:0 0 var(--r-lg) var(--r-lg);background:var(--surface-2)}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;display:flex;max-width:100%;max-height:100%;z-index:1000}.cdk-overlay-backdrop{position:absolute;inset:0;pointer-events:auto;-webkit-tap-highlight-color:transparent;opacity:0;touch-action:manipulation;z-index:1000;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}@media(prefers-reduced-motion){.cdk-overlay-backdrop{transition-duration:1ms}}.cdk-overlay-backdrop-showing{opacity:1}@media(forced-colors:active){.cdk-overlay-backdrop-showing{opacity:.6}}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;display:flex;flex-direction:column;min-width:1px;min-height:1px;z-index:1000}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}.cdk-overlay-popover{background:none;border:none;padding:0;outline:0;overflow:visible;position:fixed;pointer-events:none;white-space:normal;color:inherit;text-decoration:none;width:100%;height:100%;inset:0 auto auto 0}.cdk-overlay-popover::backdrop{display:none}.cdk-overlay-popover .cdk-overlay-backdrop{position:fixed;z-index:auto}.cq-scrim{background:var(--scrim)}.cq-modal-pane .cdk-dialog-container>*,.cq-drawer-pane .cdk-dialog-container>*{display:flex;flex:1;flex-direction:column;min-height:0}.cq-modal-pane{max-width:calc(100vw - 32px)!important}.cq-modal-pane .cdk-dialog-container{display:flex;flex-direction:column;width:100%;max-height:calc(100vh - 32px);border:1px solid var(--border);border-radius:var(--r-xl);background:var(--surface);color:var(--fg);box-shadow:var(--shadow-lg);outline:none;animation:cq-rise .18s var(--ease)}.cq-drawer-pane{max-width:100vw!important}.cq-drawer-pane .cdk-dialog-container{display:flex;flex-direction:column;width:100%;height:100%;border-left:1px solid var(--border);background:var(--surface);color:var(--fg);box-shadow:var(--shadow-lg);outline:none;animation:cq-slide-in .2s var(--ease)}@keyframes cq-rise{0%{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}@keyframes cq-slide-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}.menu{min-width:220px;padding:var(--sp-1);border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-lg);animation:cq-pop .14s var(--ease)}.menu-head{display:flex;align-items:center;gap:var(--sp-3);padding:10px}.menu-item{display:flex;align-items:center;gap:var(--sp-3);width:100%;padding:8px 10px;border:0;border-radius:var(--r-sm);background:none;color:var(--fg);font:inherit;font-size:var(--fs-sm);text-align:left;text-decoration:none;cursor:pointer}.menu-item:hover,.menu-item:focus,.menu-item.cdk-focused{outline:none;background:var(--surface-2);text-decoration:none}.menu-item>cq-icon{color:var(--fg-3)}.menu-item.danger,.menu-item.danger>cq-icon{color:var(--fail)}.menu-sep{height:1px;margin:var(--sp-1) 0;background:var(--border)}@keyframes cq-pop{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.toast-stack{position:fixed;bottom:calc(var(--sp-5) + env(safe-area-inset-bottom,0px));left:50%;z-index:1100;display:flex;flex-direction:column;gap:var(--sp-2);width:min(420px,100vw - 32px);transform:translate(-50%);pointer-events:none}.toast{display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border:1px solid var(--ink-border);border-radius:var(--r-lg);background:var(--ink);color:var(--ink-fg);font-size:var(--fs-sm);box-shadow:var(--shadow-lg);pointer-events:auto;animation:cq-rise .2s var(--ease)}.toast>cq-icon{margin-top:1px;color:var(--ink-muted)}.toast.toast-pass>cq-icon{color:var(--pass)}.toast.toast-fail>cq-icon{color:var(--fail)}.toast.toast-warn>cq-icon{color:var(--warn)}.toast.toast-accent>cq-icon,.toast.toast-info>cq-icon{color:var(--ink-accent)}.toast-content{flex:1;min-width:0}.toast-title{font-weight:600}.toast-text{color:var(--ink-muted)}.toast-close{padding:2px;border:0;background:none;color:var(--ink-muted);cursor:pointer}.toast-close:hover{color:var(--ink-fg)}[data-tip]{position:relative}[data-tip]:hover:after,[data-tip]:focus-visible:after{content:attr(data-tip);position:absolute;bottom:calc(100% + 8px);left:50%;z-index:80;padding:6px 8px;border-radius:var(--r-sm);background:var(--ink);color:var(--ink-fg);font:500 var(--fs-xs)/1.35 var(--font-text);letter-spacing:0;text-transform:none;white-space:nowrap;box-shadow:var(--shadow-md);transform:translate(-50%);pointer-events:none}[data-tip-pos=bottom]:hover:after,[data-tip-pos=bottom]:focus-visible:after{top:calc(100% + 8px);bottom:auto}[data-tip-pos=right]:hover:after,[data-tip-pos=right]:focus-visible:after{top:50%;bottom:auto;left:calc(100% + 8px);transform:translateY(-50%)}.empty{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);padding:var(--sp-9) var(--sp-5);color:var(--fg-2);text-align:center}.empty h3{font-size:var(--fs-md)}.empty p{max-width:44ch;font-size:var(--fs-sm)}.empty-icon{display:grid;place-items:center;width:52px;height:52px;border:1px dashed var(--border-strong);border-radius:var(--r-lg);background:var(--surface-2);color:var(--fg-3)}.skeleton{border-radius:var(--r-sm);background:linear-gradient(90deg,var(--surface-2) 0,var(--surface-3) 40%,var(--surface-2) 80%);background-size:300% 100%;animation:cq-shimmer 1.4s infinite linear}.skel-title{width:50%;height:20px}.skel-line{height:12px;margin:6px 0}@keyframes cq-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.callout{display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-2);color:var(--fg-2);font-size:var(--fs-sm)}.callout>cq-icon{margin-top:2px}.callout strong{color:var(--fg)}.callout-info{border-color:var(--info-line);background:var(--info-soft)}.callout-info>cq-icon{color:var(--info)}.callout-pass{border-color:var(--pass-line);background:var(--pass-soft)}.callout-pass>cq-icon{color:var(--pass)}.callout-fail{border-color:var(--fail-line);background:var(--fail-soft)}.callout-fail>cq-icon{color:var(--fail)}.callout-warn{border-color:var(--warn-line);background:var(--warn-soft)}.callout-warn>cq-icon{color:var(--warn)}.callout-accent{border-color:var(--accent-line);background:var(--accent-soft)}.callout-accent>cq-icon{color:var(--accent)}.table-wrap{position:relative;display:block;width:100%;overflow-x:auto;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);-webkit-overflow-scrolling:touch}.table-wrap:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.table{width:100%;min-width:560px;border-collapse:collapse;font-size:var(--fs-sm)}.table th{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);background:var(--surface-2);color:var(--fg-3);font-size:var(--fs-xs);font-weight:600;letter-spacing:.04em;text-align:left;text-transform:uppercase;white-space:nowrap}.table td{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);color:var(--fg);vertical-align:middle}.table tr:last-child td{border-bottom:0}.table tbody tr:hover td{background:var(--surface-2)}.table .num,.table .right{text-align:right}.table td.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.table tr.is-me td{background:var(--accent-soft)}.table-compact td,.table-compact th{padding:var(--sp-2) var(--sp-3)}.pagination{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1)}.pagination button{min-width:32px;height:32px;padding:0 8px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);color:var(--fg-2);font-family:var(--font-mono);font-size:var(--fs-sm);cursor:pointer}.pagination button:hover:not(:disabled){border-color:var(--border-strong);color:var(--fg)}.pagination button[aria-current=page]{border-color:var(--accent);background:var(--accent);color:var(--accent-fg)}.pagination button:disabled{opacity:.45;cursor:not-allowed}.pagination button:focus-visible{outline:none;box-shadow:var(--focus-ring)}.pagination .gap{padding:0 4px;color:var(--fg-3)}.tabs{display:flex;gap:var(--sp-1);overflow-x:auto;border-bottom:1px solid var(--border);scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{display:inline-flex;align-items:center;gap:6px;margin-bottom:-1px;padding:var(--sp-3);border:0;border-bottom:2px solid transparent;background:none;color:var(--fg-3);font-size:var(--fs-sm);font-weight:600;white-space:nowrap;cursor:pointer;appearance:none}.tab:hover{color:var(--fg)}.tab[aria-selected=true]{border-bottom-color:var(--accent);color:var(--fg)}.tab:focus-visible{outline:none;box-shadow:inset var(--focus-ring);border-radius:var(--r-sm) var(--r-sm) 0 0}.tab-panel{padding-top:var(--sp-5)}.tab-panel:focus-visible{outline:none}.seg{display:inline-flex;gap:2px;max-width:100%;padding:3px;overflow-x:auto;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-2)}.seg button{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 var(--sp-3);border:0;border-radius:var(--r-sm);background:transparent;color:var(--fg-2);font-size:var(--fs-sm);font-weight:600;white-space:nowrap;cursor:pointer;appearance:none}.seg button:hover{color:var(--fg)}.seg button[aria-checked=true]{background:var(--surface);color:var(--fg);box-shadow:var(--shadow-sm)}.seg button:focus-visible{outline:none;box-shadow:var(--focus-ring)}.seg-sm button{height:24px;padding:0 var(--sp-2);font-size:var(--fs-xs)}.filter-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface)}.chips{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 var(--sp-3);border:1px solid var(--border-strong);border-radius:var(--r-pill);background:var(--surface);color:var(--fg-2);font-size:var(--fs-sm);font-weight:500;white-space:nowrap;cursor:pointer;appearance:none}.chip:hover{border-color:var(--fg-3);color:var(--fg)}.chip[aria-pressed=true]{border-color:var(--accent-line);background:var(--accent-soft);color:var(--accent-soft-fg)}.chip:focus-visible{outline:none;box-shadow:var(--focus-ring)}.chip .icon{width:14px;height:14px}.progress{min-width:40px;height:8px;overflow:hidden;border-radius:var(--r-pill);background:var(--surface-3)}.progress>span{display:block;height:100%;border-radius:var(--r-pill);background:var(--accent);transition:width .4s var(--ease)}.progress-thin{height:4px}.progress-lg{height:12px}.progress-pass>span{background:var(--pass)}.progress-fail>span{background:var(--fail)}.progress-warn>span{background:var(--warn)}.progress-xp>span{background:var(--xp-grad)}.ring{position:relative;display:inline-grid;flex:none;place-items:center}.ring svg{display:block;transform:rotate(-90deg)}.ring .ring-track{stroke:var(--surface-3)}.ring .ring-value{stroke:var(--accent);transition:stroke-dashoffset .6s var(--ease)}.ring.ring-pass .ring-value{stroke:var(--pass)}.ring.ring-warn .ring-value{stroke:var(--warn)}.ring.ring-fail .ring-value{stroke:var(--fail)}.ring.ring-xp .ring-value{stroke:var(--xp)}.ring-label{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:700;line-height:1.1;text-align:center}.stat{display:flex;flex-direction:column;gap:6px;min-width:0}.stat-label{display:flex;align-items:center;gap:6px;color:var(--fg-3);font-size:var(--fs-xs);font-weight:600;letter-spacing:.05em;text-transform:uppercase}.stat-value{font-family:var(--font-display);font-size:var(--fs-2xl);font-variant-numeric:tabular-nums;font-weight:700;letter-spacing:-.02em;line-height:1.05}.stat-value small{margin-left:4px;color:var(--fg-3);font-family:var(--font-text);font-size:var(--fs-sm);font-weight:500;letter-spacing:0}.stat-foot{color:var(--fg-3);font-size:var(--fs-xs)}.delta{display:inline-flex;align-items:center;gap:2px;font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:600}.delta.up{color:var(--pass)}.delta.down{color:var(--fail)}.code-block{display:block;min-width:0;overflow:hidden;border:1px solid var(--code-border);border-radius:var(--r-lg);background:var(--code-bg);color:var(--code-fg)}.code-block pre{margin:0;padding:14px 16px;overflow-x:auto;font:400 13px/1.65 var(--font-mono);tab-size:4;-webkit-overflow-scrolling:touch}.code-block pre:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.code-head{display:flex;align-items:center;gap:var(--sp-2);padding:8px 12px;border-bottom:1px solid var(--code-border);background:var(--code-head);color:var(--code-muted);font:500 var(--fs-xs)/1 var(--font-mono)}.code-head .dots{display:inline-flex;gap:5px;margin-right:6px}.code-head .dots i{width:9px;height:9px;border-radius:50%;background:var(--code-border)}.code-head .btn-ghost{height:24px;padding:0 6px;color:var(--code-muted)}.code-head .btn-ghost:hover{background:var(--code-line);color:var(--code-fg)}.code-sm pre{padding:10px 12px;font-size:12px}.code-lines pre{padding-left:0}.code-line{display:block;min-height:1.65em}.code-lines .code-line{position:relative;padding-left:52px}.code-ln{position:absolute;left:0;width:36px;color:var(--code-muted);text-align:right;opacity:.6;-webkit-user-select:none;user-select:none}.tk-keyword{color:var(--syn-kw)}.tk-type{color:var(--syn-type)}.tk-string{color:var(--syn-str)}.tk-comment{color:var(--syn-com);font-style:italic}.tk-number{color:var(--syn-num)}.tk-fn{color:var(--syn-fn)}.tk-punct{color:var(--syn-pun)}.terminal{overflow-x:auto;padding:14px 16px;border:1px solid var(--code-border);border-radius:var(--r-lg);background:var(--code-bg);color:var(--code-fg);font:400 13px/1.7 var(--font-mono)}.t-pass{color:var(--term-pass)}.t-fail{color:var(--term-fail)}.t-warn{color:var(--term-warn)}.t-muted{color:var(--code-muted)}.tests{display:block;overflow:hidden;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);font-family:var(--font-mono);font-size:var(--fs-sm)}.tests-summary{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-4);padding:10px 14px;border-bottom:1px solid var(--border);background:var(--surface-2);font-weight:600}.tests-summary .sum-pass{color:var(--pass)}.tests-summary .sum-fail{color:var(--fail)}.tests-summary .sum-time{margin-left:auto;color:var(--fg-3);font-weight:400}.tests-list{margin:0;padding:0;list-style:none}.test-row{display:grid;grid-template-columns:18px minmax(0,1fr) auto;align-items:start;gap:10px;padding:8px 14px;border-top:1px solid var(--border)}.test-row:first-child{border-top:0}.test-row>cq-icon{margin-top:2px}.test-row.test-pass>cq-icon{color:var(--pass)}.test-row.test-fail>cq-icon{color:var(--fail)}.test-name{color:var(--fg);overflow-wrap:anywhere}.test-time{color:var(--fg-3);font-size:var(--fs-xs)}.test-detail{grid-column:2/-1;padding:6px 10px;border-left:2px solid var(--fail);border-radius:0 var(--r-xs) var(--r-xs) 0;background:var(--fail-soft);color:var(--fg-2);font-size:var(--fs-xs);white-space:pre-wrap;overflow-wrap:anywhere}.chart-host{position:relative;display:block;min-width:0}.chart{display:block;overflow:visible}.chart text{fill:var(--fg-3);font-family:var(--font-mono);font-size:11px}.chart .grid-line{stroke:var(--border);stroke-width:1}.chart .bar{fill:var(--accent);transition:opacity .12s}.chart .bar-muted{fill:var(--surface-3)}.chart .bar-active{opacity:.8}.chart .line{fill:none;stroke:var(--accent);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.chart .area{fill:var(--accent-soft)}.chart .dot{fill:var(--accent);stroke:var(--surface);stroke-width:2}.chart .val{fill:var(--fg-2);font-weight:600}.chart .x-label-strong{fill:var(--fg);font-weight:700}.chart .hit{fill:transparent}.chart-tip{position:absolute;z-index:5;padding:6px 9px;border-radius:var(--r-sm);background:var(--ink);color:var(--ink-fg);font:500 var(--fs-xs)/1.4 var(--font-text);white-space:nowrap;box-shadow:var(--shadow-md);transform:translate(-50%,calc(-100% - 8px));pointer-events:none}.heatmap{display:grid;grid-auto-flow:column;grid-template-rows:repeat(7,13px);gap:3px;width:max-content}.heatmap i{width:13px;height:13px;border-radius:3px;background:var(--seq-0)}.heatmap .l1{background:var(--seq-1)}.heatmap .l2{background:var(--seq-2)}.heatmap .l3{background:var(--seq-3)}.heatmap .l4{background:var(--seq-4)}.heatmap .active{outline:2px solid var(--fg);outline-offset:1px}.heatmap-scroll{overflow-x:auto}.legend-scale{display:inline-flex;align-items:center;gap:3px;color:var(--fg-3);font-size:var(--fs-xs)}.legend-scale i{width:11px;height:11px;border-radius:3px;background:var(--seq-0)}.legend-scale .l1{background:var(--seq-1)}.legend-scale .l2{background:var(--seq-2)}.legend-scale .l3{background:var(--seq-3)}.legend-scale .l4{background:var(--seq-4)}.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-6)}.page-head>div{min-width:0}.page-head h1{font-size:var(--fs-2xl)}.page-sub{max-width:68ch;margin-top:var(--sp-2);color:var(--fg-2)}.band{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface)}.band>*{min-width:0;padding:var(--sp-5)}.band>*+*{border-left:1px solid var(--border)}@media(max-width:1100px){.band{grid-template-columns:repeat(2,minmax(0,1fr))}.band>:nth-child(3){border-left:0}.band>:nth-child(n+3){border-top:1px solid var(--border)}}@media(max-width:520px){.band{grid-template-columns:minmax(0,1fr)}.band>*+*{border-top:1px solid var(--border);border-left:0}}.list{display:flex;flex-direction:column;margin:0;padding:0;list-style:none}.list-row{display:flex;align-items:center;gap:var(--sp-3);min-width:0;padding:var(--sp-3) var(--sp-5);border-top:1px solid var(--border)}.list-row:first-child{border-top:0}.list-row>.grow{flex:1;min-width:0}a.list-row{color:inherit;text-decoration:none}a.list-row:hover{background:var(--surface-2)}a.list-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.list-title{overflow:hidden;color:var(--fg);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.list-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin-top:2px;color:var(--fg-3);font-size:var(--fs-xs)}.list-meta .sep:before{content:"\b7"}.pips{display:inline-flex;gap:3px}.pips i{width:8px;height:14px;border:1px solid var(--border-strong);border-radius:2px;background:var(--surface-3)}.pips i.on{border-color:var(--accent);background:var(--accent)}.pips.pips-none i{border-color:var(--fail-line)}.locked-wrap{position:relative;overflow:hidden;border-radius:inherit}.locked-wrap>.locked-content{filter:blur(5px);opacity:.55;pointer-events:none;-webkit-user-select:none;user-select:none}.locked-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-5);background:color-mix(in srgb,var(--surface) 55%,transparent);text-align:center}.locked-overlay .lock-badge{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--accent-soft);color:var(--accent)}.topic-icon{display:inline-grid;flex:none;place-items:center;width:var(--s, 36px);height:var(--s, 36px);border-radius:var(--r-md)}.opt{font:inherit;display:flex;align-items:center;gap:var(--sp-3);width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);color:var(--fg);font-size:var(--fs-sm);text-align:left;cursor:pointer;transition:border-color .12s,background .12s}.opt:hover{border-color:var(--border-strong);background:var(--surface-2)}.opt:focus-visible{outline:none;box-shadow:var(--focus-ring)}.opt[aria-checked=true]{border-color:var(--accent);background:var(--accent-soft)}.opt[aria-checked=true] .opt-key{border-color:var(--accent);background:var(--accent);color:var(--accent-fg)}.opt.is-correct{border-color:var(--pass);background:var(--pass-soft)}.opt.is-correct .opt-key{border-color:var(--pass);background:var(--pass);color:var(--fg-inverse)}.opt.is-wrong{border-color:var(--fail);background:var(--fail-soft)}.opt.is-wrong .opt-key{border-color:var(--fail);background:var(--fail);color:var(--fg-inverse)}.opt-key{display:grid;flex:none;place-items:center;width:24px;height:24px;border:1px solid var(--border-strong);border-radius:var(--r-sm);color:var(--fg-2);font:600 12px/1 var(--font-mono)}.opt .mono{white-space:pre-wrap}
