/*! normalize.css v3.0.2 | MIT License | git.io/normalize */@import url("https://fonts.googleapis.com/css?family=Open+Sans:400,700&display=swap");html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.highlight table td{padding:5px}.highlight table pre{margin:0}.highlight .cm{color:#999988;font-style:italic}.highlight .cp{color:#999999;font-weight:bold}.highlight .c1{color:#999988;font-style:italic}.highlight .cs{color:#999999;font-weight:bold;font-style:italic}.highlight .c,.highlight .cd{color:#999988;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .gd{color:#000000;background-color:#ffdddd}.highlight .ge{color:#000000;font-style:italic}.highlight .gr{color:#aa0000}.highlight .gh{color:#999999}.highlight .gi{color:#000000;background-color:#ddffdd}.highlight .go{color:#888888}.highlight .gp{color:#555555}.highlight .gs{font-weight:bold}.highlight .gu{color:#aaaaaa}.highlight .gt{color:#aa0000}.highlight .kc{color:#000000;font-weight:bold}.highlight .kd{color:#000000;font-weight:bold}.highlight .kn{color:#000000;font-weight:bold}.highlight .kp{color:#000000;font-weight:bold}.highlight .kr{color:#000000;font-weight:bold}.highlight .kt{color:#445588;font-weight:bold}.highlight .k,.highlight .kv{color:#000000;font-weight:bold}.highlight .mf{color:#009999}.highlight .mh{color:#009999}.highlight .il{color:#009999}.highlight .mi{color:#009999}.highlight .mo{color:#009999}.highlight .m,.highlight .mb,.highlight .mx{color:#009999}.highlight .sb{color:#d14}.highlight .sc{color:#d14}.highlight .sd{color:#d14}.highlight .s2{color:#d14}.highlight .se{color:#d14}.highlight .sh{color:#d14}.highlight .si{color:#d14}.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#d14}.highlight .ss{color:#990073}.highlight .s{color:#d14}.highlight .na{color:#008080}.highlight .bp{color:#999999}.highlight .nb{color:#0086B3}.highlight .nc{color:#445588;font-weight:bold}.highlight .no{color:#008080}.highlight .nd{color:#3c5d5d;font-weight:bold}.highlight .ni{color:#800080}.highlight .ne{color:#990000;font-weight:bold}.highlight .nf{color:#990000;font-weight:bold}.highlight .nl{color:#990000;font-weight:bold}.highlight .nn{color:#555555}.highlight .nt{color:#000080}.highlight .vc{color:#008080}.highlight .vg{color:#008080}.highlight .vi{color:#008080}.highlight .nv{color:#008080}.highlight .ow{color:#000000;font-weight:bold}.highlight .o{color:#000000;font-weight:bold}.highlight .w{color:#bbbbbb}.highlight{background-color:#f8f8f8}*{box-sizing:border-box}body{padding:0;margin:0;font-family:"Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;font-size:16px;line-height:1.5;color:#606c71}#skip-to-content{height:1px;width:1px;position:absolute;overflow:hidden;top:-10px}#skip-to-content:focus{position:fixed;top:10px;left:10px;height:auto;width:auto;background:#e19447;outline:thick solid #e19447}a{color:#1e6bb8;text-decoration:none}a:hover{text-decoration:underline}.btn{display:inline-block;margin-bottom:1rem;color:rgba(255,255,255,0.7);background-color:rgba(255,255,255,0.08);border-color:rgba(255,255,255,0.2);border-style:solid;border-width:1px;border-radius:0.3rem;transition:color 0.2s, background-color 0.2s, border-color 0.2s}.btn:hover{color:rgba(255,255,255,0.8);text-decoration:none;background-color:rgba(255,255,255,0.2);border-color:rgba(255,255,255,0.3)}.btn+.btn{margin-left:1rem}@media screen and (min-width: 64em){.btn{padding:0.75rem 1rem}}@media screen and (min-width: 42em) and (max-width: 64em){.btn{padding:0.6rem 0.9rem;font-size:0.9rem}}@media screen and (max-width: 42em){.btn{display:block;width:100%;padding:0.75rem;font-size:0.9rem}.btn+.btn{margin-top:1rem;margin-left:0}}.page-header{color:#fff;text-align:center;background-color:#159957;background-image:linear-gradient(120deg, #155799, #159957)}@media screen and (min-width: 64em){.page-header{padding:5rem 6rem}}@media screen and (min-width: 42em) and (max-width: 64em){.page-header{padding:3rem 4rem}}@media screen and (max-width: 42em){.page-header{padding:2rem 1rem}}.project-name{margin-top:0;margin-bottom:0.1rem}@media screen and (min-width: 64em){.project-name{font-size:3.25rem}}@media screen and (min-width: 42em) and (max-width: 64em){.project-name{font-size:2.25rem}}@media screen and (max-width: 42em){.project-name{font-size:1.75rem}}.project-tagline{margin-bottom:2rem;font-weight:normal;opacity:0.7}@media screen and (min-width: 64em){.project-tagline{font-size:1.25rem}}@media screen and (min-width: 42em) and (max-width: 64em){.project-tagline{font-size:1.15rem}}@media screen and (max-width: 42em){.project-tagline{font-size:1rem}}.main-content{word-wrap:break-word}.main-content :first-child{margin-top:0}@media screen and (min-width: 64em){.main-content{max-width:64rem;padding:2rem 6rem;margin:0 auto;font-size:1.1rem}}@media screen and (min-width: 42em) and (max-width: 64em){.main-content{padding:2rem 4rem;font-size:1.1rem}}@media screen and (max-width: 42em){.main-content{padding:2rem 1rem;font-size:1rem}}.main-content kbd{background-color:#fafbfc;border:1px solid #c6cbd1;border-bottom-color:#959da5;border-radius:3px;box-shadow:inset 0 -1px 0 #959da5;color:#444d56;display:inline-block;font-size:11px;line-height:10px;padding:3px 5px;vertical-align:middle}.main-content img{max-width:100%}.main-content h1,.main-content h2,.main-content h3,.main-content h4,.main-content h5,.main-content h6{margin-top:2rem;margin-bottom:1rem;font-weight:normal;color:#159957}.main-content p{margin-bottom:1em}.main-content code{padding:2px 4px;font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:0.9rem;color:#567482;background-color:#f3f6fa;border-radius:0.3rem}.main-content pre{padding:0.8rem;margin-top:0;margin-bottom:1rem;font:1rem Consolas, "Liberation Mono", Menlo, Courier, monospace;color:#567482;word-wrap:normal;background-color:#f3f6fa;border:solid 1px #dce6f0;border-radius:0.3rem}.main-content pre>code{padding:0;margin:0;font-size:0.9rem;color:#567482;word-break:normal;white-space:pre;background:transparent;border:0}.main-content .highlight{margin-bottom:1rem}.main-content .highlight pre{margin-bottom:0;word-break:normal}.main-content .highlight pre,.main-content pre{padding:0.8rem;overflow:auto;font-size:0.9rem;line-height:1.45;border-radius:0.3rem;-webkit-overflow-scrolling:touch}.main-content pre code,.main-content pre tt{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.main-content pre code:before,.main-content pre code:after,.main-content pre tt:before,.main-content pre tt:after{content:normal}.main-content ul,.main-content ol{margin-top:0}.main-content blockquote{padding:0 1rem;margin-left:0;color:#819198;border-left:0.3rem solid #dce6f0}.main-content blockquote>:first-child{margin-top:0}.main-content blockquote>:last-child{margin-bottom:0}.main-content table{display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all;-webkit-overflow-scrolling:touch}.main-content table th{font-weight:bold}.main-content table th,.main-content table td{padding:0.5rem 1rem;border:1px solid #e9ebec}.main-content dl{padding:0}.main-content dl dt{padding:0;margin-top:1rem;font-size:1rem;font-weight:bold}.main-content dl dd{padding:0;margin-bottom:1rem}.main-content hr{height:2px;padding:0;margin:1rem 0;background-color:#eff0f1;border:0}.site-footer{padding-top:2rem;margin-top:2rem;border-top:solid 1px #eff0f1}@media screen and (min-width: 64em){.site-footer{font-size:1rem}}@media screen and (min-width: 42em) and (max-width: 64em){.site-footer{font-size:1rem}}@media screen and (max-width: 42em){.site-footer{font-size:0.9rem}}.site-footer-owner{display:block;font-weight:bold}.site-footer-credits{color:#819198}:root{--ink: #172b3c;--ink-strong: #0d2234;--muted: #5f7486;--line: #d8e2ea;--surface: #ffffff;--surface-soft: #f4f8fb;--surface-blue: #eaf2f8;--navy: #0e3c65;--blue: #154871;--blue-mid: #2b658e;--blue-soft: #b2c3d2;--focus: #f2b134;--page-width: 1380px;--reading-width: 780px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background:var(--surface);font-family:"Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:17px;line-height:1.72}a{color:var(--blue-mid);text-decoration-thickness:0.08em;text-underline-offset:0.16em}a:hover{color:var(--navy)}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.skip-link{position:fixed;z-index:100;top:0.75rem;left:0.75rem;padding:0.65rem 0.9rem;color:var(--ink-strong);background:#fff;border-radius:0.35rem;transform:translateY(-180%)}.skip-link:focus{transform:none}.page-hero{position:relative;overflow:hidden;color:#fff;background:radial-gradient(circle at 76% 0%, rgba(91,181,174,0.42), transparent 39%),radial-gradient(circle at 16% 100%, rgba(60,128,180,0.48), transparent 42%),linear-gradient(125deg, #0a3155 0%, #174f77 53%, #16796e 112%);border-bottom:1px solid rgba(137,193,215,0.72)}.page-hero::before,.page-hero::after{position:absolute;width:24rem;height:24rem;content:"";border-radius:50%;filter:blur(34px);opacity:0.28;pointer-events:none}.page-hero::before{top:-15rem;left:4%;background:#6dc5d2}.page-hero::after{right:4%;bottom:-17rem;background:#61c799}.page-hero__timelines{position:absolute;z-index:1;inset:0;overflow:hidden;pointer-events:none}.hero-timeline{position:absolute;top:var(--timeline-top);left:var(--timeline-left);width:var(--timeline-length);height:1.5rem;opacity:0;transform:rotate(var(--timeline-angle)) scale(1);transform-origin:left center;animation:hero-timeline-cycle 22s linear infinite;animation-delay:var(--timeline-delay)}.hero-timeline__origin,.hero-timeline__rail{position:absolute;top:50%;left:0}.hero-timeline__origin{z-index:2;width:0;height:0}.hero-timeline__start,.hero-timeline__revision{display:block;flex:0 0 auto;border-radius:50%;background:rgba(255,255,255,0.44);box-shadow:0 0 8px rgba(255,255,255,0.16)}.hero-timeline__start{position:absolute;top:0;left:0;width:0.28rem;height:0.28rem;transform:translate(-50%, -50%)}.hero-timeline__label{position:absolute;top:0;right:0.42rem;color:rgba(255,255,255,0.42);font-size:0.58rem;font-weight:500;letter-spacing:0.01em;line-height:1;white-space:nowrap;transform:translateY(-50%)}.hero-timeline__rail{width:100%;height:1rem;border-top:1px solid rgba(255,255,255,0.2);clip-path:inset(-.5rem 100% -0.5rem 0);transform:translateY(-1px);animation:hero-timeline-reveal 22s linear infinite;animation-delay:var(--timeline-delay)}.hero-timeline__revision{position:absolute;top:-0.14rem;width:0.22rem;height:0.22rem;transform:translateX(-50%)}@keyframes hero-timeline-cycle{0%,
  2%{opacity:0;transform:rotate(var(--timeline-angle)) scale(1)}6%,
  34%{opacity:0.72;transform:rotate(var(--timeline-angle)) scale(1)}50%{opacity:0;transform:rotate(var(--timeline-angle)) scale(0.82)}100%{opacity:0;transform:rotate(var(--timeline-angle)) scale(0.82)}}@keyframes hero-timeline-reveal{0%,
  6%{clip-path:inset(-.5rem 100% -0.5rem 0)}34%,
  100%{clip-path:inset(-.5rem 0 -0.5rem 0)}}.page-hero__inner{position:relative;z-index:2;display:flex;align-items:center;justify-content:center;max-width:1040px;min-height:390px;margin:0 auto;padding:4.4rem 2rem}.page-hero__copy{width:100%;padding:1rem 1.5rem 1.25rem;text-align:center}.page-hero__title{max-width:none;margin:0;margin-inline:auto;color:#fff;font-size:clamp(2.5rem, 5vw, 4rem);font-weight:700;letter-spacing:-0.045em;line-height:1.04;white-space:nowrap}.page-hero__nowrap{white-space:nowrap}.page-hero__subtitle{max-width:840px;margin:1.15rem auto 0;color:#d9e7f0;font-size:clamp(1.05rem, 2vw, 1.35rem);line-height:1.45}.page-hero__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:0.75rem;margin-top:1.75rem}.hero-button{display:inline-flex;align-items:center;min-height:44px;padding:0.6rem 0.9rem;color:#fff;font-size:0.9rem;font-weight:600;text-decoration:none;border:1px solid rgba(255,255,255,0.42);border-radius:999px;background:rgba(255,255,255,0.08);box-shadow:inset 0 1px 0 rgba(255,255,255,0.14);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.hero-button:hover{color:#fff;background:rgba(255,255,255,0.12)}.hero-button--primary{color:var(--navy);background:#fff;border-color:#fff}.hero-button--primary:hover{color:var(--navy);background:#edf5fa}.article-layout{display:grid;grid-template-columns:minmax(180px, 240px) minmax(0, var(--reading-width)) minmax(180px, 240px);gap:clamp(2rem, 4vw, 4rem);align-items:start;max-width:var(--page-width);margin:0 auto;padding:3.75rem 2rem 6rem}.simple-layout{max-width:var(--reading-width);margin:0 auto;padding:3.75rem 2rem 6rem}.article-sidebar{--article-sidebar-sticky-top: clamp(5rem, 10vh, 6.5rem);grid-column:1;position:sticky;top:var(--article-sidebar-sticky-top);max-height:calc(100vh - var(--article-sidebar-sticky-top) - 1.5rem);padding-right:1rem;overflow-y:auto}.article-sidebar__title{margin:0 0 0.85rem;color:var(--ink-strong);font-size:0.86rem;font-weight:700;letter-spacing:-0.01em}.article-nav ol{margin:0;padding:0;list-style:none}.article-nav>ol>li{margin:0.18rem 0}.article-nav a,.article-nav__group>span{display:block;padding:0.3rem 0.5rem;color:var(--muted);font-size:0.83rem;font-weight:500;line-height:1.3;text-decoration:none;border-left:2px solid transparent;border-radius:0 0.25rem 0.25rem 0}.article-nav a:hover{color:var(--navy);background:var(--surface-soft)}.article-nav a[aria-current="true"]{color:var(--navy);background:var(--surface-blue);border-left-color:var(--blue-mid)}.article-nav__group{margin-top:0.45rem !important}.article-nav__group>span{color:var(--ink-strong);font-weight:700}.article-nav__group>a{color:var(--ink-strong);font-weight:700}.article-nav__group ol{margin:0.15rem 0 0.5rem 0.65rem}.article-nav__group ol a{padding-block:0.22rem;font-size:0.79rem}.mobile-nav{display:none;max-width:var(--reading-width);margin:1.1rem auto 0;padding:0 1rem}.mobile-nav__details{border:1px solid var(--line);border-radius:0.5rem;background:var(--surface)}.mobile-nav__details>summary{padding:0.75rem 1rem;color:var(--navy);font-size:0.9rem;font-weight:700;cursor:pointer}.mobile-nav__details .article-nav{max-height:60vh;padding:0 0.75rem 0.85rem;overflow:auto}.main-content{grid-column:2;min-width:0;max-width:var(--reading-width);padding:0;color:var(--ink);font-size:1rem}.main-content>:first-child{margin-top:0}.main-content h2,.main-content h3,.main-content h4{color:var(--ink-strong);font-weight:700;letter-spacing:-0.025em;scroll-margin-top:1.5rem}.main-content h2{margin:4.8rem 0 1.15rem;padding-bottom:0.45rem;font-size:clamp(1.8rem, 4vw, 2.55rem);line-height:1.15;border-bottom:1px solid var(--line)}.main-content h3{margin:2.7rem 0 0.8rem;font-size:1.38rem;line-height:1.25}.main-content h4{margin:2rem 0 0.55rem;font-size:1.05rem;line-height:1.35}.main-content p,.main-content ul,.main-content ol{margin-top:0.85rem;margin-bottom:0.85rem}.main-content li+li{margin-top:0.35rem}.main-content blockquote{margin:1.8rem 0 2.5rem;padding:1.15rem 1.3rem;color:var(--ink);background:var(--surface-blue);border-left:4px solid var(--blue-mid);border-radius:0 0.5rem 0.5rem 0}.main-content blockquote p:first-child{margin-top:0}.main-content blockquote p:last-child{margin-bottom:0}.main-content code{padding:0.12em 0.3em;color:#14334a;background:#edf3f7;border-radius:0.28rem;font-family:"JetBrains Mono", ui-monospace, SFMono-Regular, Consolas, monospace;font-size:0.87em}.main-content pre{margin:1.4rem 0;padding:1.05rem 1.15rem;color:#eaf2f8;background:#0c2437;border-radius:0.55rem;overflow-x:auto}.main-content pre code{padding:0;color:inherit;background:transparent}.skill-tree{margin:1.4rem 0 2rem}.skill-tree pre{margin:0;padding:1.35rem 1.5rem;color:#123e5d;background:radial-gradient(circle at 95% 0%, rgba(76,174,157,0.18), transparent 38%),linear-gradient(135deg, rgba(231,243,250,0.94), rgba(237,248,245,0.98));border:1px solid rgba(82,139,171,0.28);border-radius:0.8rem;box-shadow:inset 0 1px 0 rgba(255,255,255,0.92),0 14px 36px rgba(19,64,91,0.08)}.main-content hr{height:1px;margin:4rem 0;background:var(--line);border:0}.skill-card{display:block;margin:0;padding:0;background:transparent;border:0;border-bottom:1px solid var(--line);scroll-margin-top:1.5rem}.skill-card>h2{margin:0;padding:0;border:0}.skill-card__toggle{display:flex;width:100%;align-items:center;justify-content:space-between;gap:1rem;padding:1.35rem 0;color:var(--ink-strong);background:transparent;border:0;font:inherit;font-size:clamp(1.25rem, 3vw, 1.55rem);font-weight:700;letter-spacing:-0.025em;text-align:left;cursor:pointer}.skill-card__toggle::after{display:inline-block;flex:0 0 auto;color:var(--blue-mid);content:"›";font-size:1.8rem;font-weight:400;line-height:1;transform:rotate(0deg);transition:transform 160ms ease}.skill-card__toggle:hover{color:var(--blue)}.skill-card.is-open .skill-card__toggle::after{transform:rotate(90deg)}.skill-card.skill-card--enhanced:not(.is-open)>p{display:none}.skill-card>p{color:#314a5d;font-size:1.02rem}.skill-profile{margin:0;border:0}.skill-card--enhanced .skill-profile>summary{display:none}.skill-card:not(.skill-card--enhanced) .skill-profile>summary{display:flex;gap:0.7rem;align-items:baseline;padding:0.9rem 0;color:var(--navy);cursor:pointer;list-style:none;user-select:none}.skill-profile>summary::-webkit-details-marker{display:none}.skill-profile>summary::before{content:"+";display:inline-grid;flex:0 0 auto;place-items:center;width:1.25rem;height:1.25rem;color:#fff;background:var(--blue-mid);border-radius:50%;font-size:0.9rem;font-weight:700;line-height:1}.skill-profile[open]>summary::before{content:"–"}.skill-profile__action{font-size:0.92rem;font-weight:700}.skill-profile__hint{color:var(--muted);font-size:0.82rem}.skill-profile__body{padding:0 0 2.4rem;border:0}.skill-profile__body>h3:first-of-type{margin-top:1.8rem}.skill-profile__body h3.skill-support-heading{margin-top:2.1rem;padding:0;color:var(--navy);background:transparent;border:0}.article-figure{margin:2.25rem 0 3rem}.article-figure img{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:0.6rem;background:var(--surface-soft)}.article-figure--compact img{max-width:680px;margin-inline:auto}.article-figure figcaption{margin-top:0.65rem;color:var(--muted);font-size:0.82rem;line-height:1.5;text-align:center}.page-hero--benchmark::before,.page-hero--benchmark::after{content:none}.page-hero--benchmark .page-hero__inner{min-height:0;padding-block:3.25rem}.page-hero--benchmark .page-hero__copy{text-align:left}.page-hero--benchmark .page-hero__title{max-width:16ch;margin-inline:0;white-space:normal;line-height:1.1}.page-hero--benchmark .page-hero__subtitle{max-width:640px;margin-inline:0}.page-hero--benchmark .page-hero__actions{justify-content:flex-start}.benchmark-chart{overflow-x:auto;border:1px solid var(--line);border-radius:0.6rem;background:var(--surface-soft)}.benchmark-chart img{min-width:660px;border:0;border-radius:0}.benchmark-definitions{margin:1.35rem 0 1.8rem}.benchmark-definitions>div{display:grid;grid-template-columns:minmax(7.5rem, 9rem) minmax(0, 1fr);gap:0.8rem;padding:0.55rem 0}.benchmark-definitions>div+div{border-top:1px solid rgba(117,145,163,0.28)}.benchmark-definitions dt{color:var(--navy);font-weight:700}.benchmark-definitions dd{margin:0}.benchmark-figure__downloads{display:block;margin-top:0.4rem}.benchmark-details{margin:1.5rem 0 2rem;padding:1rem 1.15rem;border:1px solid var(--line);border-radius:0.6rem}.benchmark-details>summary{color:var(--navy);font-weight:700;cursor:pointer}.benchmark-task-table td{vertical-align:top}@media screen and (max-width: 640px){.benchmark-task-table thead{display:none}.benchmark-task-table tbody,.benchmark-task-table tr,.benchmark-task-table td{display:block;width:auto}.benchmark-task-table tr{padding:0.8rem 0;border-bottom:1px solid var(--line)}.benchmark-task-table td{padding:0.25rem 0.65rem;border:0}.benchmark-task-table td:first-child{color:var(--navy)}.benchmark-definitions>div{display:block}.benchmark-definitions dt{margin-bottom:0.2rem}}@media print{.benchmark-chart{overflow:visible}.benchmark-chart img{min-width:0}.benchmark-figure,.benchmark-details:has(.benchmark-figure){break-inside:avoid-page}}.project-visuals{display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));gap:1rem;margin:2rem 0 3.2rem}.project-visuals figure{margin:0}.project-visuals a{display:block}.project-visuals img{display:block;width:100%;aspect-ratio:16 / 9;object-fit:cover;border:1px solid var(--line);border-radius:0.5rem}.project-visuals figcaption{margin-top:0.55rem;color:var(--muted);font-size:0.79rem;line-height:1.4}.commit-chart{margin:0;padding:1.1rem 1rem 0.5rem;background:radial-gradient(circle at 95% 0%, rgba(76,174,157,0.18), transparent 38%),linear-gradient(135deg, rgba(231,243,250,0.94), rgba(237,248,245,0.98));border:1px solid rgba(82,139,171,0.28);border-radius:0.8rem;box-shadow:inset 0 1px 0 rgba(255,255,255,0.92),0 14px 36px rgba(19,64,91,0.08)}.commit-chart__summary{margin:0 0 0.4rem !important;color:var(--muted);font-size:0.8rem;text-align:right}.commit-chart svg{display:block;width:100%;height:auto;overflow:visible}.commit-chart .grid-line,.commit-chart .axis-line,.commit-chart .month-line{stroke:#cdd9e2;stroke-width:1;vector-effect:non-scaling-stroke}.commit-chart .month-line{stroke-dasharray:3 4}.commit-chart .commit-area{fill:#2b658e;opacity:0.21}.commit-chart .commit-wave{fill:none;stroke:#2b658e;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.commit-chart .hover-zone{fill:transparent;pointer-events:all}.commit-chart .hover-guide{stroke:#5f7486;stroke-width:1;opacity:0;vector-effect:non-scaling-stroke}.commit-chart .axis-label,.commit-chart .date-label{fill:#5f7486;font-family:"Plus Jakarta Sans", sans-serif;font-size:11px}.commit-chart .peak-label{fill:#172b3c;font-family:"Plus Jakarta Sans", sans-serif;font-size:12px;font-weight:700}.skill-evolution-chart{overflow-x:auto;padding-top:0.55rem}.skill-evolution-chart svg{min-width:650px}.skill-evolution-chart .skill-evolution-guides line{stroke:#cdd9e2;stroke-width:1;stroke-dasharray:3 4;vector-effect:non-scaling-stroke}.skill-evolution-chart .skill-evolution-lanes line{stroke:rgba(43,101,142,0.3);stroke-width:1.5;vector-effect:non-scaling-stroke}.skill-evolution-chart .skill-introduction{fill:#154871}.skill-evolution-chart .skill-revision{fill:#8eabc1;stroke:#154871;stroke-width:0.7;vector-effect:non-scaling-stroke}.skill-evolution-chart .skill-evolution-key text,.skill-evolution-chart .skill-evolution-lanes text,.skill-evolution-chart .skill-evolution-dates text{fill:#5f7486;font-family:"Plus Jakarta Sans", sans-serif;font-size:11px}.skill-evolution-chart .skill-evolution-lanes text{fill:#172b3c;font-weight:700}.skill-evolution-chart .skill-evolution-axis{stroke:#cdd9e2;stroke-width:1;vector-effect:non-scaling-stroke}.commit-project-chart{padding:0.65rem 0.75rem 0.35rem}.commit-project-chart .project-span{fill:#2b658e;opacity:0.86}.commit-project-chart .project-number-badge{fill:#c8dce9}.commit-project-chart .project-number-label{fill:#172b3c;font-family:"Plus Jakarta Sans", sans-serif;font-size:9px;font-weight:700}.commit-project-chart .project-key,.commit-project-chart .project-label{fill:#5f7486;font-family:"Plus Jakarta Sans", sans-serif;font-size:10px}.commit-project-chart .project-label{fill:#172b3c;font-weight:700}.site-footer{color:#cfdeea;background:#0b2c49}.site-footer__inner{display:flex;justify-content:space-between;gap:1rem;max-width:var(--page-width);margin:0 auto;padding:1.8rem 2rem;font-size:0.85rem}.site-footer a{color:#fff}@media (max-width: 1120px){.article-sidebar{display:none}.mobile-nav{display:block}.article-layout{display:block;max-width:var(--reading-width);padding:2.8rem 1rem 5rem}.main-content{max-width:none}}@media (max-width: 820px), (prefers-reduced-motion: reduce){.page-hero__timelines{display:none}}@media print{.page-hero__timelines{display:none}}@media (max-width: 820px){body{font-size:16px}.page-hero__inner{min-height:0;padding:2.5rem 1.25rem}.page-hero__copy{padding:0.75rem 0.5rem 1rem}.page-hero__title{font-size:clamp(2rem, 8vw, 3.1rem);white-space:normal}.page-hero__subtitle{margin-top:0.8rem}.article-layout{padding-top:2.4rem;padding-bottom:4.5rem}}@media (max-width: 560px){.page-hero__inner{padding-inline:0.8rem}.page-hero__actions{display:grid}.hero-button{justify-content:center}.main-content h2{margin-top:3.8rem}.skill-card{margin-inline:0}.skill-profile{margin-inline:0}.skill-profile>summary{display:grid;grid-template-columns:auto 1fr;gap:0.2rem 0.6rem;padding-inline:1rem}.skill-profile__hint{grid-column:2}.skill-profile__body{padding-inline:0}.project-visuals{grid-template-columns:1fr}.site-footer__inner{display:block;padding-inline:1rem}.site-footer__inner a{display:block;margin-top:0.35rem}}@media print{body{color:#000;font-size:10.5pt}.page-hero{color:#000;background:none;border-bottom:2px solid #000}.page-hero__inner,.page-hero--benchmark .page-hero__inner{display:block;min-height:0;padding:1rem 0}.page-hero__logo,.skip-link,.page-hero__actions,.article-sidebar,.mobile-nav,.article-tools,.site-footer{display:none !important}.page-hero__eyebrow,.page-hero__title,.page-hero__subtitle,.page-hero--benchmark .page-hero__subtitle{color:#000}.article-layout,.simple-layout{display:block;max-width:none;padding:0}.main-content{max-width:none}.skill-card,.skill-profile__body{break-inside:avoid-page}.skill-profile>summary{display:none}.skill-profile:not([open])>.skill-profile__body{display:block}a{color:#000;text-decoration:underline}}
