/* Resource-Version: 20261112_3 */
/* Generated by scripts/dev/build_public_css.py; edit the source files. */

/* Source: public-brand.css */
@font-face {
  font-family: 'NoemaBrand';
  src: url('/static/fonts/public/noema-brand-medium.ttf') format('truetype');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}
:root { --brand-family: 'NoemaBrand', 'Noto Sans SC', sans-serif; --brand-weight: 500; }

/* Source: public-shell.css */
/* Shared public-page shell. */
/* The library directory stays in document flow, so open navigation never covers anchors. */
.library-page .library-toc{position:relative;max-width:1440px;margin:0 auto;padding:8px var(--public-gutter);background:var(--paper)}
.library-page .library-toc>summary{width:160px;min-height:44px;padding:10px 0;font-size:16px;line-height:24px;justify-content:flex-start}
.library-page .library-toc>summary::after{display:none}
.library-page .library-toc[open]>summary{text-decoration:underline;text-underline-offset:5px}
.public-root .motion-control{display:flex;align-items:center;justify-content:center;padding:0}
.public-root .motion-control .material-symbols-outlined{font-size:24px}
.public-root.home-page .public-header .account .btn{color:#fff}
.public-root .reading-theme-toggle{display:block;margin:0 0 24px auto;min-height:44px;padding:8px 20px;border:1px solid var(--line);border-radius:99px;background:var(--surface);color:var(--ink);font-size:14px}
.public-root .reading-theme-toggle[aria-pressed=true]{border-color:var(--ink)}
.public-root.article-page[data-theme=dark]{color-scheme:dark}
@media(max-width:1100px){.library-page .library-toc{padding-left:48px;padding-right:48px}
}
@media(max-width:768px){.library-page .library-toc{padding-left:24px;padding-right:24px}
}
.public-root .material-symbols-outlined{font-family:'Material Symbols Outlined';width:24px;height:24px;display:inline-block;overflow:hidden;white-space:nowrap;line-height:1;font-size:24px;font-weight:400;font-feature-settings:'liga'}
.public-root{--public-header-height:85px;--public-gutter:120px;--public-section-space:64px;--public-edge:max(var(--public-gutter),calc((100% - 1440px)/2 + var(--public-gutter)));--paper:#f5f5f6;--surface:#fff;--ink:#111214;--body:#3a3f47;--line:#dee1e5;--danger:#9f2332;margin:0;background:var(--paper);color:var(--body);font:18px/1.75 NoemaSans,'Noto Sans SC','PingFang SC',sans-serif;overflow-wrap:break-word}
.public-root body.public-shell-body{margin:0}
.public-root *{box-sizing:border-box}
.public-root button,.public-root input{font:inherit}
.public-root button,.public-root a{-webkit-tap-highlight-color:transparent}
.public-root a{color:inherit;text-underline-offset:5px}
.public-root button{cursor:pointer}
.public-root img{max-width:100%;height:auto}
:where(.public-root:not(.home-page)) :where(h1,h2,h3){color:var(--ink);font-weight:400;line-height:1.4;margin:0}
:where(.public-root:not(.home-page)) :where(h1){font-weight:300}
:where(.public-root:not(.home-page)) :where(p){margin:0}
:where(.public-root:not(.home-page)) :where(h2){font-size:36px;letter-spacing:-.03em}
:where(.public-root:not(.home-page)) :where(h3){font-size:24px}
.public-root :focus-visible{outline:2px solid var(--ink);outline-offset:5px}
.public-root a,.public-root button{touch-action:manipulation}
.public-root .skip{position:fixed;top:-100px;left:24px;z-index:10000;padding:12px 20px;background:var(--surface)}
.public-root .skip:focus{top:12px}
.public-root [hidden]{display:none!important}
.public-header{height:var(--public-header-height);padding:16px var(--public-edge);display:flex;align-items:center;justify-content:space-between;gap:24px;border-bottom:1px solid var(--line);background:var(--paper);position:relative;z-index:2}
.public-header .brand{font-size:22px;letter-spacing:-.8px;color:var(--ink);text-decoration:none;white-space:nowrap;display:flex;align-items:center;flex-wrap:nowrap;column-gap:8px;min-height:48px;min-width:0;line-height:1.2}
.public-header nav{display:flex;gap:40px}
.public-header nav a,.account .text-link{font-size:14px;line-height:1.5;text-decoration:none;display:flex;align-items:center;min-height:48px}
.public-header nav a[aria-current]{font-weight:600;text-decoration:underline;text-decoration-thickness:1px}
.account{display:flex;align-items:center;gap:24px}
.public-root .public-header .account .text-link:active{opacity:.7}
.public-header .mobile-menu{display:none}
.public-root .btn{font-weight:600;display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:12px 28px;border:1px solid var(--ink);border-radius:99px;background:var(--ink);color:var(--paper);text-decoration:none;font-size:16px;white-space:normal;line-height:1.5}
.public-root .btn.secondary{background:transparent;color:var(--ink)}
.public-root .text-link{display:inline-flex;align-items:center;min-height:44px;padding:6px 0}
.public-root .icon-button{display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--ink);width:44px;height:44px;min-width:44px;padding:0;font-size:24px;line-height:1}
.public-root .eyebrow{font-size:12px;line-height:1.5;font-weight:500;letter-spacing:.06em;color:var(--body)}
.public-hero{position:relative;isolation:isolate;overflow:hidden;padding:var(--public-section-space) var(--public-edge);background:var(--paper)}
.hero-content{display:flex;flex-direction:column;align-items:flex-start;gap:0;position:relative;z-index:1}
.public-hero h1{font-size:96px;line-height:1.16;letter-spacing:-.04em;max-width:1200px}
.public-hero .hero-description{font-size:18px;line-height:1.8;max-width:720px}
.banner-stage{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;background:#f5f5f6}
.banner-stage canvas{position:absolute;width:100%;height:calc(100vw * .625);top:calc(-100vw * .104167);left:0}
.banner-stage canvas{opacity:0;transition:opacity .24s ease-out}
.banner-stage[data-ready] canvas{opacity:1}
.banner-stage[data-renderer="software"] canvas{transition:none}
.banner-stage.is-fallback canvas{display:none}
.banner-stage.is-fallback{background:#e8e8e8}
.public-root .motion-control{position:absolute;right:24px;bottom:24px;z-index:2;border:1px solid var(--line);border-radius:50%;background:var(--paper);width:44px;height:44px}
.fallback-guards{position:absolute;inset:0}
.fallback-guards i{position:absolute;background:#f5f5f6;filter:blur(16px)}
.public-root .section{max-width:1440px;margin:0 auto;padding:var(--public-section-space) var(--public-gutter)}
.public-root .split{display:grid;grid-template-columns:280px minmax(0,1fr);gap:80px;border-bottom:1px solid var(--line)}
.section-title{display:flex;flex-direction:column;gap:16px}
.section-body{display:flex;flex-direction:column;gap:32px;min-width:0}
.prose-block{display:flex;flex-direction:column;gap:12px}
.tool-rows article{border-top:1px solid var(--line);padding:20px 0}
.tool-rows h3 a{text-decoration:none;display:inline-block;padding:6px 0;min-height:44px}
.tool-rows p{margin-top:12px}
.public-root .faq h2{margin-bottom:32px}
.public-root .faq details{border-top:1px solid var(--line);padding:12px 0}
.public-root summary{cursor:pointer;color:var(--ink);min-height:48px;display:flex;align-items:center;justify-content:space-between;gap:20px;list-style:none;padding:12px 0;font-size:20px}
.public-root summary::after{content:'+';font-size:24px;font-weight:300}
.public-root details[open]>summary::after{content:'−'}
.public-root summary::-webkit-details-marker{display:none}
.public-root .faq details p{padding:10px 0 18px;max-width:880px}
.related h2{margin-bottom:32px}
.related-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:64px;margin-bottom:32px}
.related-columns h3{font-size:18px;margin-bottom:16px}
.row-link{display:block;padding:12px 0;min-height:48px;border-bottom:1px solid var(--line);text-decoration:none}
.series-list{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px 80px;margin-top:36px}
.series-list article:first-child{grid-column:1/-1;border-bottom:1px solid var(--line);padding-bottom:32px}
.series-list article h3{font-size:26px;line-height:1.5;max-width:720px}
.series-list article h3 a{display:inline-block;min-height:44px;text-decoration:none}
.series-list p{font-size:18px;max-width:720px;margin-top:12px}
.category-links{display:flex;flex-wrap:wrap;gap:12px 32px;margin-top:24px}
.category-links a{min-height:48px;padding:8px 0;text-decoration:none;border-bottom:1px solid var(--line)}
.article-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 80px;margin-top:32px}
.article-row{border-top:1px solid var(--line);padding:24px 0;display:flex;flex-direction:column;gap:16px;min-width:0}
.article-row :is(h2,h3){font-size:26px;line-height:1.5}
.article-row a{text-decoration:none;display:block;min-height:44px}
.article-row>p:last-child{font-size:18px}
.pagination{display:flex;flex-wrap:wrap;gap:8px;margin-top:40px;align-items:center}
.pager{display:flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:8px 16px;text-decoration:none;border-radius:99px;font-size:16px;line-height:1.5}
.pager[aria-current]{background:var(--ink);color:var(--paper)}
.pager[aria-disabled]{opacity:.65;cursor:default}
.reading-head h1{font-size:44px;line-height:1.45;max-width:950px;margin:24px 0;letter-spacing:-.03em;text-wrap:balance}
.reading-head>p{max-width:850px}
.reading-head .eyebrow{margin-top:24px}
.reading-meta{display:flex;align-items:center;justify-content:space-between;margin-top:32px;font-size:12px}
.reading-layout{display:grid;grid-template-columns:344px minmax(0,760px);gap:96px;align-items:start}
.reading-toc{min-width:0}
.reading-toc summary{font-size:16px}
.reading-toc nav a{display:block;padding:8px 0;font-size:14px;text-decoration:none;min-height:44px}
.reading-toc nav a[aria-current]{font-weight:600}
[data-article-toc] a{border-inline-start:2px solid transparent;padding-inline-start:10px}
[data-article-toc] a[aria-current="location"]{font-weight:600;border-inline-start-color:currentColor}
.article-prose{min-width:0;font-size:18px;line-height:1.8}
.article-prose h2{font-size:28px;line-height:1.5;margin:44px 0 20px;scroll-margin-top:24px}
.article-prose h3{font-size:22px;margin:32px 0 16px}
.article-prose p,.article-prose ul,.article-prose ol{margin:0 0 22px}
.public-root .article-prose img{display:block;max-width:100%;height:auto;margin:24px 0 8px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.public-root .article-prose p:has(>img){margin-bottom:8px}
.article-prose li{margin:8px 0}
.horizontal-scroll{overflow:auto;max-width:100%;border:1px solid var(--line);border-radius:8px;margin:24px 0}
.horizontal-scroll table{border-collapse:collapse;min-width:720px;font-size:16px}
.horizontal-scroll th,.horizontal-scroll td{border:1px solid var(--line);padding:14px;text-align:left;vertical-align:top}
.horizontal-scroll pre{white-space:pre;margin:0;padding:24px;font:14px/1.7 ui-monospace,monospace}
.article-prose figure{margin:24px 0}
.article-prose figcaption{font-size:14px;padding:12px 0}
.image-error{height:260px;border:1px dashed var(--line);display:flex;flex-direction:column;align-items:center;justify-content:center}
.fixture-block{margin-top:48px;padding-top:32px;border-top:1px solid var(--line)}
.article-ending h2{margin-bottom:32px}
.public-root .closing{display:flex;flex-direction:column;align-items:flex-start}
.public-root .closing>p{margin-top:16px;max-width:720px}
.public-root .closing-actions{display:flex;flex-wrap:wrap;align-items:center;gap:16px 28px;margin-top:28px}
.public-root.article-page[data-theme=dark]{--paper:#161616;--surface:#242424;--ink:#fff;--body:#d0d0d0;--line:#424242}
.public-root.article-page[data-theme=dark] .public-header .btn{color:#161616}
.listing{max-width:1440px!important}
.listing .article-row{padding:28px 0}
.public-root dialog{border:1px solid var(--line);border-radius:20px;padding:40px;background:var(--surface);color:var(--body);width:min(440px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto;margin:auto;box-shadow:0 24px 80px #0002}
.public-root dialog::backdrop{background:#1118;backdrop-filter:blur(5px)}
.public-root dialog .close{position:absolute;right:12px;top:12px}
.public-root .menu-dialog{width:min(520px,calc(100vw - 32px));padding-top:64px}
.menu-dialog nav{display:flex;flex-direction:column;gap:12px}
.menu-dialog nav>a{font-size:16px;line-height:1.5;display:block;min-height:48px;padding:8px 0;text-decoration:none}
.public-root .form-stack{display:flex;flex-direction:column;gap:20px}
.form-stack h1,.form-stack h2{font-size:32px;line-height:1.4}
.form-stack .form-description{font-size:16px}
.form-stack label{font-size:14px;color:var(--ink);display:flex;flex-direction:column;gap:8px}
.form-stack input{height:48px;background:var(--surface);border:1px solid #a0a3a8;border-radius:8px;padding:10px 14px;color:var(--ink);min-width:0;width:100%;font-size:16px}
.form-stack .check-label{flex-direction:row;align-items:center;min-height:44px}
.form-stack input[type=checkbox]{width:20px;height:20px}
.form-stack .field-error{font-size:14px;line-height:1.5;color:var(--ink)}
.form-stack input[aria-invalid=true]{border:2px solid var(--ink)}
.form-stack .form-alert{padding:16px;background:var(--paper);border-left:3px solid var(--ink);font-size:14px}
.form-stack .switch{background:transparent;border:0;text-decoration:underline;min-height:44px;font-size:14px;color:var(--ink)}
.form-stack .btn{width:100%}
.return-shell,.error-shell{padding-block:clamp(48px,8vw,96px);display:flex;flex-direction:column;justify-content:center;align-items:flex-start}
.return-shell>div{width:min(560px,100%);display:flex;flex-direction:column;gap:24px}
.return-shell h1,.error-shell h1{font-size:44px;line-height:1.4;max-width:800px}
.error-shell{gap:28px}
.payment-actions{display:flex;gap:16px;flex-wrap:wrap}
.order-meta{font-size:14px;padding:16px 0;border-top:1px solid var(--line)}
.state-links{display:flex;gap:12px;flex-wrap:wrap;margin:24px 0 48px}
.state-links a{display:flex;min-height:44px;align-items:center;padding:8px 16px;border:1px solid var(--line);border-radius:8px}
.library-toc nav{display:flex;flex-wrap:wrap;gap:4px 24px;max-height:45vh;overflow:auto;padding:8px 0 20px}
.library-toc a{display:flex;align-items:center;min-height:44px;font-size:14px;text-decoration:none}
.library-page .library-intro .public-hero{padding-top:64px;padding-bottom:64px}
.library-page .section-heading{margin-bottom:32px}
.library-page .eyebrow span{margin-right:24px}
.library-page .lead{font-size:20px;max-width:850px}
.library-page .values{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px 80px;margin-top:40px}
.library-page .value{border-top:1px solid var(--line);padding-top:24px}
.library-page .mini-num{font-size:12px}
.library-page .value h3{margin:12px 0}
.library-page .story p{margin-bottom:24px;max-width:860px}
.library-page .flow-list,.library-page .stages,.library-page .modules-grid,.library-page .workflow-stages{display:flex;flex-direction:column;gap:40px}
.library-page .stage{border-top:1px solid var(--line);padding:32px 0}
.library-page .stage-intro{max-width:800px;margin-bottom:24px}
.library-page .stage h3{margin-bottom:12px}
.library-page .stage-tools{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 48px}
.library-page .stage-tool{display:block;border-top:1px solid var(--line);padding:16px 0;text-decoration:none}
.library-page .stage-tool span,.library-page .stage-tool strong{display:block}
.library-page .stage-tool p{font-size:16px}
.library-page .module{margin-top:40px}
.library-page .module-head{margin-bottom:32px}
.library-page .module-head p{max-width:850px;margin-top:20px}
.library-page .module-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px 64px}
.library-page .feature{border-top:1px solid var(--line);padding:24px 0}
.library-page .feature h3{margin-bottom:12px}
.library-page .feature p{font-size:16px}
.library-page .tool-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px 48px}
.library-page .tool-card{display:block;padding:20px 0;border-top:1px solid var(--line);text-decoration:none}
.library-page .tool-card h3{font-size:22px}
.library-page .tool-card p{font-size:16px}
.library-page .quick-steps{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px 48px;margin-top:32px}
.library-page .quick-step{border-top:1px solid var(--line);padding:24px 0}
.library-page .quick-step p{font-size:16px}
.library-page .keyword-links{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:12px 24px}
.library-page .keyword-links a{display:inline-block!important}
.library-page .cta{text-align:left}
@media(min-width:1441px){
.public-hero .hero-content{max-width:1200px;margin:auto}
.public-header{padding-left:var(--public-edge);padding-right:var(--public-edge)}
}
@media(max-width:1100px){
.public-root{--public-gutter:48px;--public-section-space:56px}
.public-root .section{padding:var(--public-section-space) var(--public-gutter)}
.public-root .split{grid-template-columns:220px minmax(0,1fr);gap:40px}
.public-header nav{gap:20px}
.account{gap:16px}
.public-header .brand{font-size:20px}
.public-header .btn{padding:12px 20px}
.reading-layout{grid-template-columns:220px minmax(0,1fr);gap:40px}
.public-hero{padding:var(--public-section-space) var(--public-edge)}
}
@media(max-width:768px){
.public-root{--public-gutter:24px;--public-section-space:48px;font-size:16px}
.public-root{--public-header-height:73px}
.public-header{height:var(--public-header-height);padding:12px var(--public-edge);gap:12px}
.public-header nav{display:none}
.public-header .account{display:flex;margin-left:auto;flex-shrink:0}
.public-header .account .btn{display:none}
.public-header .mobile-menu{display:flex}
.public-header .brand{font-size:20px}
.public-root .section{padding:var(--public-section-space) var(--public-gutter)}
.public-root .split{display:flex;flex-direction:column;gap:28px}
.section-body{gap:28px}
:where(.public-root:not(.home-page)) :where(h2){font-size:30px}
:where(.public-root:not(.home-page)) :where(h3){font-size:22px}
.public-hero{padding:var(--public-section-space) var(--public-edge)}
.public-hero h1{font-size:64px;line-height:1.16;letter-spacing:-.045em}
.public-hero .hero-description{font-size:16px}
.hero-content{gap:0}
.banner-stage canvas{height:calc(100vw * 2.1641);top:calc(-100vw * .076923)}
.public-root .motion-control{right:16px;bottom:16px}
.public-root .faq summary{font-size:18px}
.related-columns{grid-template-columns:minmax(0,1fr);gap:32px}
.series-list,.article-grid{grid-template-columns:minmax(0,1fr);gap:28px}
.series-list article:first-child{grid-column:auto}
.series-list article:first-child h3{font-size:30px}
.article-row :is(h2,h3){font-size:22px}
.article-row>p:last-child{font-size:16px}
.article-grid{gap:0}
.category-links{flex-direction:column;gap:4px}
.reading-head h1{font-size:32px;line-height:1.5;letter-spacing:-.025em}
.reading-layout{display:block}
.reading-toc{background:var(--paper);border-bottom:1px solid var(--line);margin:-32px -24px 32px;padding:0 24px;max-height:none}
.reading-toc details[open] nav{max-height:50vh;overflow:auto}
.reading-toc nav{padding-bottom:20px}
.article-prose{font-size:16px}
.article-prose h2{font-size:24px;scroll-margin-top:80px}
.article-prose h3{font-size:20px}
.public-root dialog{padding:40px 24px 24px;border-radius:16px}
.form-stack h1,.form-stack h2{font-size:28px}
.return-shell,.error-shell{padding-block:48px}
.return-shell h1,.error-shell h1{font-size:32px}
.library-page .values,.library-page .stage-tools,.library-page .module-grid,.library-page .tool-grid,.library-page .quick-steps{grid-template-columns:minmax(0,1fr);gap:24px}
.library-page .lead{font-size:18px}
}
.public-root .public-header .mobile-menu{display:none}
.library-page .library-notice{max-width:1200px;margin:0 auto;padding:0 0 32px;font-size:14px}
.library-page .stage-nav{display:flex;flex-wrap:wrap;gap:12px 24px;margin:32px 0}
.library-page .stage-nav a{display:flex;align-items:center;min-height:44px;text-decoration:none}
.library-page .stage-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px 48px}
.library-page .stage-heading{display:flex;align-items:baseline;gap:24px;margin-bottom:20px}
.library-page .stage-num,.library-page .stage-index{font-size:12px}
.library-page .map-card{display:block;border-top:1px solid var(--line);padding:18px 0;text-decoration:none}
.library-page .map-card p{font-size:16px;margin-top:12px}
.library-page .steps{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px 48px;margin-top:32px}
.library-page .steps>article,.library-page .steps>div{border-top:1px solid var(--line);padding-top:24px}
.library-page .module{display:grid;grid-template-columns:280px minmax(0,1fr);gap:80px;border-top:1px solid var(--line);padding:40px 0}
.library-page .module-list{padding:0 120px;max-width:1440px;margin:auto}
.library-page .module .module-title{font-size:24px;line-height:1.4;font-weight:600;margin:0}
.library-page .module-summary{display:flex;flex-direction:column;gap:20px}
.library-page .detail-card{border-top:1px solid var(--line);padding:24px 0}
.library-page .detail-card .detail-title{font-size:20px;line-height:1.4;font-weight:600;margin:0 0 12px}
.library-page .detail-card p{font-size:16px}
.library-page .feature-list{display:flex;flex-direction:column;gap:24px}
.library-page .closing{max-width:1440px;padding:var(--public-section-space) var(--public-gutter);margin:auto}
.library-page .button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:10px 24px;border:1px solid var(--ink);border-radius:99px;text-decoration:none;font-size:16px}
.library-page .button.primary{background:var(--ink);color:var(--paper)}
@media(max-width:1100px){
.library-page .module-list{padding:0 48px}
.library-page .module{grid-template-columns:220px minmax(0,1fr);gap:40px}
.library-page .library-notice{padding:0 48px 32px}
}
@media(max-width:768px){
.public-root .public-header .mobile-menu{display:flex}
.library-page .module-list{padding:0 24px}
.library-page .stage-grid,.library-page .steps,.library-page .module{grid-template-columns:minmax(0,1fr);gap:24px}
.library-page .closing{padding:var(--public-section-space) var(--public-gutter)}
.library-page .library-notice{padding:0 24px 24px}
.library-page .stage-heading{align-items:flex-start}
}
.library-page .map-card{display:grid;grid-template-columns:minmax(0,1fr) 48px;gap:16px;padding:16px 0}
.library-page .map-card h4{margin:0;font-size:20px;line-height:1.4;font-weight:400;color:var(--ink)}
.library-page .map-card p{margin-top:8px}
.library-page .map-card>a{display:flex;align-items:center;justify-content:center;align-self:center;min-height:44px;font-size:14px}
.library-page .stage-heading{display:block}
.library-page .stage-index{float:left;margin-right:20px;line-height:36px}
.library-page .stage-grid{gap:8px 48px}
.library-page .steps{list-style:none;padding-left:0}
.library-page .steps h3{font-size:22px;margin:8px 0}
.library-page .steps p{font-size:16px}
.library-page .module .section-heading{margin-bottom:0}
.library-page .detail-card{padding:16px 0}
.library-page .feature-list{gap:8px}
@media(min-width:769px){
.library-page .stage{padding:24px 0}
.library-page .module.section{padding:24px 0}
.library-page .faq details p{padding-bottom:8px}
.library-page .steps{gap:16px 48px}
}
@media(min-width:769px){
.library-page .section{padding-block:var(--public-section-space)}
.library-page .module.section{padding-top:16px;padding-bottom:16px}
}
.related-item{margin-bottom:20px}
.related-item p{font-size:16px;line-height:1.75;margin-top:8px}
@media(prefers-reduced-motion:reduce){
.banner-stage canvas{transition:none}
.public-root *{scroll-behavior:auto!important;transition:none!important;animation:none!important}
}
.public-root .public-header a.brand-wordmark{font-family:var(--brand-family);font-weight:var(--brand-weight);font-size:22px;line-height:1.3;letter-spacing:-.03em;white-space:nowrap;text-transform:none;font-synthesis:none;display:inline-flex;align-items:center;flex-wrap:nowrap;column-gap:8px;min-height:44px;min-width:44px;text-decoration:none}
.public-root .public-header a.brand-wordmark span{font-family:var(--brand-family);font-weight:var(--brand-weight);letter-spacing:-.03em}
.public-root .public-header .brand-mark{width:32px;height:32px;flex:0 0 32px;object-fit:contain;display:block}
.public-root .public-header .brand-name,.public-root .public-header .brand-lab{white-space:nowrap}
@media(max-width:1099px){
.public-root .public-header .brand-lab{display:none}
}
@media(max-width:480px){
.public-root .public-header .brand-name,.public-root .public-header .brand-lab{display:none}
}
.public-root .eyebrow{text-transform:none}
.library-page .library-intro .public-hero{padding:var(--public-section-space) var(--public-edge);background:var(--paper)}
.library-page .library-notice{padding:0;margin:24px 0 0;max-width:850px;font-size:14px;line-height:1.8}
.library-page .map-card{grid-template-columns:minmax(0,1fr);gap:8px}
.library-page .map-card>a{justify-content:flex-start;justify-self:start;min-height:44px;padding:4px 0;font-size:14px;white-space:normal}
.library-page .stage-index{float:none;display:block;margin:0 0 12px;line-height:1.5}
.library-page .stage-grid{column-gap:48px;row-gap:8px}
.library-page .stage-heading p{max-width:800px}
.library-page .stage-nav a{gap:10px}
.library-page .stage-nav small{margin-left:4px}
.library-page .button{margin-top:20px}
.library-page .closing .library-notice{margin-top:20px}
.article-breadcrumb{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;font-size:14px;margin-bottom:36px;line-height:1.5}
.article-breadcrumb span{overflow-wrap:anywhere;color:var(--body)}
.article-breadcrumb .crumb-step,.pc-breadcrumb .crumb-step{display:flex;align-items:baseline;gap:12px;min-width:0;max-width:100%}
.article-breadcrumb .crumb-sep{flex:none}
.reading-meta>div{display:flex;flex-wrap:wrap;gap:8px 24px;align-items:center}
.reading-meta a{min-height:44px;display:inline-flex;align-items:center}
.article-series{border-top:1px solid var(--line);margin-top:24px;padding-top:12px}
.article-series summary{font-size:16px;line-height:1.5;min-height:52px}
.article-series nav{max-height:40vh;overflow:auto}
.article-series nav a[aria-current]{font-weight:600;color:var(--ink);border-left:2px solid var(--ink);padding-left:12px}
.article-practice{background:var(--paper);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.article-practice h2{margin-bottom:24px}
.article-practice>p{max-width:760px}
.practice-actions{display:flex;flex-wrap:wrap;gap:16px 28px;align-items:center;margin-top:28px}
.article-prev-next{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px 64px;margin-bottom:48px}
.article-prev-next:empty{display:none}
.article-related{border-bottom:1px solid var(--line);padding:12px 0 28px}
.article-related .row-link{border:0;margin:0;padding-bottom:12px}
.article-related p{font-size:16px;max-width:900px}
@media(max-width:1100px){
.library-page .library-intro .public-hero{padding-left:var(--public-edge);padding-right:var(--public-edge)}
}
@media(max-width:768px){
.library-page .library-intro .public-hero{padding:var(--public-section-space) var(--public-edge)}
.library-page .stage-grid{row-gap:0}
.library-page .stage-nav{gap:4px 20px}
.library-page .map-card>a{font-size:14px}
.article-prev-next{grid-template-columns:minmax(0,1fr);gap:12px}
.article-breadcrumb{margin-bottom:24px}
.article-practice .practice-actions{align-items:flex-start;flex-direction:column}
.reading-toc:has(.article-series){position:relative;top:auto}
.article-related p{font-size:16px}
}
@media(min-width:1101px){
.library-page .stage{display:grid;grid-template-columns:280px minmax(0,1fr);gap:64px}
.library-page .stage-heading{margin-bottom:0}
.library-page .map-card{grid-template-columns:minmax(0,1fr) 64px;column-gap:16px}
.library-page .map-card>a{justify-self:stretch;justify-content:flex-end}
.library-page .stage-grid{column-gap:32px}
}
@media(min-width:769px) and (max-width:1279px){
.public-root.article-page .section{padding-left:var(--public-gutter);padding-right:var(--public-gutter)}
.article-page .reading-layout{grid-template-columns:220px minmax(0,760px);gap:40px}
}
.library-page .stage-disclosure{border-top:1px solid var(--line);scroll-margin-top:84px}
.library-page .stage-summary{position:relative;display:block;list-style:none;padding:28px 0;min-height:112px;cursor:pointer}
.library-page .stage-summary::-webkit-details-marker{display:none}
.library-page .stage-summary::after{display:none}
.library-page .stage-summary-toggle{grid-column:3;grid-row:2;align-self:center;display:flex;width:24px;height:24px}
.library-page .stage-collapse-icon{display:none}
.library-page .stage-disclosure[open]>.stage-summary .stage-expand-icon{display:none}
.library-page .stage-disclosure[open]>.stage-summary .stage-collapse-icon{display:inline-block}
.library-page .stage-summary .stage-heading{display:grid;grid-template-columns:56px minmax(0,1fr);gap:24px;margin:0}
.library-page .stage-summary .stage-index{margin:6px 0 0}
.library-page .stage-summary .stage-heading>div{display:grid;grid-template-columns:240px minmax(0,1fr) 24px;column-gap:48px;row-gap:8px}
.library-page .stage-summary small{grid-column:1;grid-row:1;font-size:12px;letter-spacing:.06em;color:var(--body)}
.library-page .stage-summary h3{grid-column:1;grid-row:2;align-self:center;font-size:30px;margin:0;line-height:1.4}
.library-page .stage-summary p{grid-column:2;grid-row:1/3;align-self:center;font-size:18px;max-width:640px}
.library-page .stage-details{padding:0 0 36px 80px}
.library-page .stage-details .module{padding:32px 0 0;margin:24px 0 0;grid-template-columns:240px minmax(0,1fr);gap:48px}
.library-page .stage-details .map-card{grid-template-columns:24px minmax(0,1fr);column-gap:16px;align-items:start}
.library-page .stage-details .map-card>.material-symbols-outlined{grid-column:1;grid-row:1}
.library-page .stage-details .map-card>div{grid-column:2;grid-row:1;min-width:0}
.library-page .stage-details .map-card>a{grid-column:2;grid-row:2;justify-self:start;justify-content:flex-start}
.library-page [id^="source-"]{scroll-margin-top:208px}
.library-page .stage-details [id]{scroll-margin-top:208px}
.library-page .stage-summary:focus-visible{outline:2px solid var(--ink);outline-offset:4px;border-radius:4px}
@media(max-width:1100px){
.library-page .stage-summary .stage-heading>div{grid-template-columns:200px minmax(0,1fr) 24px;gap:8px 24px}
.library-page .stage-details .module{grid-template-columns:200px minmax(0,1fr);gap:24px}
}
@media(max-width:768px){
.library-page [id^="source-"],.library-page .stage-details [id]{scroll-margin-top:80px}
}
@media(max-width:768px){
.library-page .stage-summary{padding:24px 0}
.library-page .stage-summary .stage-heading{grid-template-columns:24px minmax(0,1fr);gap:16px}
.library-page .stage-summary .stage-heading>div{display:grid;grid-template-columns:minmax(0,1fr) 24px;gap:8px 16px}
.library-page .stage-summary-toggle{grid-column:2;grid-row:2}
.library-page .stage-summary h3{font-size:26px}
.library-page .stage-summary p{grid-column:1;grid-row:3;font-size:16px}
.library-page .stage-summary::after{right:0;top:28px}
.library-page .stage-details{padding:0 0 32px}
.library-page .stage-details .module{grid-template-columns:minmax(0,1fr);gap:24px}
.library-page .module .module-title{font-size:22px}
.library-page .stage-details .stage-grid{grid-template-columns:minmax(0,1fr)}
}
.public-root.article-page .reading-head h1{font-size:48px;line-height:1.35;margin:0 0 24px}
.article-page .article-breadcrumb{margin-bottom:28px}
.article-breadcrumb a{display:inline-flex;align-items:center;min-height:44px;padding-inline:10px;margin-inline:-10px}
.reading-toc-trigger{display:none;align-items:center;justify-content:space-between;gap:16px;width:100%;min-height:52px;padding:12px 0;border:0;background:transparent;color:var(--ink);text-align:left}
.article-series nav a{display:block;padding:10px 12px;border-bottom:1px solid var(--line);text-decoration:none}
.public-root .article-toc-dialog{padding:0;width:min(440px,calc(100vw - 32px));max-height:calc(100dvh - 32px)}
.article-toc-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;position:sticky;top:0;padding:20px 24px 12px;background:var(--surface);border-bottom:1px solid var(--line);z-index:1}
.public-root .article-toc-heading h2{font-size:24px;line-height:1.4}
.article-toc-content{padding:12px 24px 24px}
.article-toc-content a{display:block;min-height:44px;padding:12px 0;text-decoration:none;font-size:16px;line-height:1.6;color:var(--ink);border-bottom:1px solid var(--line)}
.article-prose h3{scroll-margin-top:24px}
@media(max-width:768px){
.public-root.article-page .reading-head h1{font-size:32px;line-height:1.5}
.article-prose h3{scroll-margin-top:80px}
.article-page .reading-toc:has(.article-series){position:relative}
.article-page .article-breadcrumb{margin-bottom:24px}
}
@media(max-width:768px){
.article-page .reading-layout>aside .reading-toc{display:none}
.article-page .reading-toc-trigger{display:flex}
.article-page .article-series{margin:0 0 20px}
.article-page .article-series nav{max-height:40vh;overflow:auto}
}
.public-root .reading-breadcrumb{width:min(1200px,calc(100% - 48px));margin:32px auto 0;display:flex;flex-wrap:wrap;gap:10px;font-size:14px}
.reading-main>.article-breadcrumb,.listing>.article-breadcrumb{width:auto;max-width:none;margin:0 0 24px}
.public-root .reading-layout{width:100%;max-width:1440px;padding-inline:var(--public-gutter);margin:var(--public-section-space) auto calc(2 * var(--public-section-space))}
.public-root .reading-main{width:100%;max-width:720px}
.public-root .reading-main,.public-root .reading-layout aside{min-width:0}
.public-root .reading-header h1{font-size:clamp(34px,5vw,56px);line-height:1.3;letter-spacing:-.04em}
.public-root .reading-header .lead{margin-top:24px;font-size:20px;line-height:1.7}
.public-root .reading-meta{margin:20px 0 48px;font-size:14px}
.public-root .reading-series{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;margin-top:32px;overflow-wrap:anywhere}
.public-root .reading-series h2{font-size:16px}
.public-root .reading-series a{font-size:14px;line-height:1.5;min-height:44px}
.public-root .reading-prev-next{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin:48px 0}
.public-root .reading-prev-next a{display:grid;grid-template-columns:minmax(0,1fr);min-width:0;gap:10px;padding:20px;border-top:1px solid var(--line);overflow-wrap:anywhere}
.public-root .article-prose .horizontal-scroll{overflow-x:auto;max-width:100%;margin:24px 0;scrollbar-gutter:stable}
.public-root .article-prose table{min-width:520px;border-collapse:collapse}
.public-root .article-prose th,.public-root .article-prose td{border:1px solid var(--line);padding:10px;text-align:left}
.public-root .article-prose pre{min-width:max-content}
@media(max-width:900px){
.public-root .reading-layout{grid-template-columns:minmax(0,1fr);gap:36px}
.public-root .reading-toc{position:static;max-height:none}
.public-root .reading-prev-next{grid-template-columns:minmax(0,1fr)}
}
.library-page .library-intro .public-hero{position:relative;isolation:isolate;background:radial-gradient(ellipse 60% 80% at 76% 45%,#8a8f96 0%,#dee1e5 52%,#f5f5f6 100%)}
.library-page .library-intro .public-hero::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:url('/static/images/public/grain.svg') repeat;opacity:.16}
.library-page .library-intro .hero-content{position:relative;z-index:1}
.mobile-only-break{display:none}
@media(max-width:600px){
.mobile-only-break{display:block}
}
.public-root.article-page[data-theme=dark]{--danger:#ff8792}
.library-page .mini-num{font-size:12px}
.public-root.home-page .public-header{position:absolute;top:0;left:0;right:0;width:auto;height:var(--public-header-height);padding:16px var(--public-edge);background:transparent;border:0}
.public-root.home-page .public-header nav{gap:28px}
.public-root.home-page .public-header .btn{font-size:14px;padding:12px 20px}
.public-root.home-page .public-header .brand{font-size:22px}
.public-root.home-page .public-header a{color:#111214}
.public-root.home-page .motion-control{position:fixed}
.public-root.home-page .hero-copy h1.brand-wordmark{font-family:var(--brand-family);font-weight:var(--brand-weight);letter-spacing:-.03em;font-synthesis:none;text-transform:none}
.public-root.home-page .dark-chapter,.public-root.home-page .dark-chapter :where(h2,h3){color:#fff}
.library-page .stage-disclosure,.library-page #features,.library-page #quick,.library-page #philosophy,.library-page #about,.library-page #faq,.library-page #public-tools{scroll-margin-top:72px}
.library-page .library-intro .banner-stage{z-index:-1;opacity:.72;mix-blend-mode:multiply}
.library-page #public-main{position:relative;isolation:isolate}
.library-page .library-banner-stage{top:0;height:430px;z-index:0;opacity:.72;mix-blend-mode:multiply}
.library-page .library-intro{position:relative;z-index:1}
.library-page .library-intro .public-hero{background:transparent}
.library-page .library-motion-control{position:absolute;z-index:2;right:var(--public-edge);top:var(--public-section-space)}
@media(max-width:900px){
.article-page .reading-layout>aside .reading-toc{display:none}
.article-page .reading-toc-trigger{display:flex}
.article-page .article-series{margin:0 0 20px}
.article-page .article-series nav{max-height:40vh;overflow:auto}
}
@media(max-width:700px){
.public-root.home-page .public-header{left:0;right:0;height:73px}
.public-root.home-page .public-header .mobile-menu{display:flex}
.public-root.home-page .public-header a.brand-wordmark{font-size:20px}
.public-root.home-page .chapter h2{font-size:41px}
.public-root.home-page .statement h2{font-size:47px}
.public-root.home-page .philosophy-title h2{font-size:42px}
.public-root.home-page .start-grid h2{font-size:37px}
.public-root.home-page .closing-v4 h2{font-size:41px}
.public-root.home-page .cap-copy h3{font-size:24px}
.public-root.home-page .principles h3{font-size:19px}
}
@media(max-width:360px){
.public-root:not(.home-page) .public-hero h1{font-size:48px;text-wrap:balance}
}
/* Public shell resource/navigation contract · 20261002_1 */
.public-root .tool-rows article > a,.public-root .tool-rows h3 a,.public-root .tool-rows h4 a,.public-root details > summary{min-height:44px;display:inline-flex;align-items:center}
.public-root .tools-discovery{display:flex;flex-direction:column;gap:8px;min-width:0}
.public-root .tools-filter{display:flex;flex-direction:column;align-items:stretch;gap:8px;min-width:0}
.public-root .tools-filter-heading{display:flex;align-items:center;justify-content:space-between;gap:8px 16px;flex-wrap:wrap;min-width:0}
.public-root .tools-filter label{color:var(--ink);font-size:16px;line-height:24px;font-weight:600}
.public-root .tools-filter-heading .text-link{min-width:44px;min-height:44px;display:inline-flex;align-items:center;font-size:14px}
.public-root .tools-filter input{font:inherit;font-size:16px;width:100%;min-width:0;min-height:50px;padding:10px 16px;background:var(--surface);color:var(--ink);border:1px solid var(--input-border,#80858b);border-radius:8px}
.public-root .tools-filter [data-tool-filter-status]{margin:0;min-height:24px;color:var(--body);font-size:14px;line-height:24px}
.public-root [hidden]{display:none!important}
/* Public repairs · 20261002_repair_1 */
.public-root{--input-border:#80858b}
.public-root .public-header nav a,.public-root .public-header .account .text-link{min-width:44px;display:inline-flex;align-items:center;justify-content:center}
.public-root .closing .small a{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px}
.public-root #public-menu a[aria-current]{font-weight:600;text-decoration:underline;text-underline-offset:6px}.library-page .library-toc a{min-width:44px}
.public-root .tools-filter input{border-color:var(--input-border)}
.public-root .tools-filter input:hover{border-color:var(--body)}
.public-root .tools-filter input:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
.public-root .tool-category h2{font-size:28px;line-height:1.4;margin:28px 0 16px}
.public-root .tool-category h3{display:flex;gap:12px;align-items:center;font-size:22px;line-height:1.5}
.public-root .tool-category h3 a{min-height:44px;min-width:44px;display:inline-flex;align-items:center}
.public-root .tool-category .material-symbols-outlined{flex:0 0 24px}
.tool-detail-page #details a,.tool-detail-page .text-link{min-height:44px;min-width:44px;display:inline-flex;align-items:center}
.tool-detail-page #details>a,.tool-detail-page #details .section-body>a{align-self:flex-start;border:1px solid var(--body);border-radius:99px;padding:8px 20px}
.tool-detail-page .tool-rows{gap:24px}
.public-root .pc-group-links{display:flex;gap:16px;flex-wrap:wrap}
.public-root .pc-group-links a{min-height:44px;min-width:44px;display:inline-flex;align-items:center}
@media(forced-colors:active){.public-root .tools-filter input{border-color:CanvasText}.public-root .tools-filter input:focus-visible{outline-color:Highlight}}
.public-root .reading-toc-inline{display:none;margin-block:24px;border-block:1px solid var(--line)}
.public-root .reading-toc-inline>summary{min-height:44px;min-width:44px;cursor:pointer}
.public-root .reading-toc-inline nav a{display:flex;align-items:center;min-height:44px;min-width:44px;padding-block:10px}
.public-root .reading-toc-inline [data-toc-level='3']{padding-inline-start:20px}
.public-root .article-anchor-alias{scroll-margin-top:88px}
@media(max-width:900px){.public-root .reading-toc-inline{display:block}}
/* Public Hero grouping follows title, explanation and action roles. */
.public-hero .hero-content>.eyebrow{margin:0 0 12px}
.public-hero .hero-content>h1{margin:0 0 24px}
.public-hero .hero-content>.hero-description{margin:0}
.public-hero .hero-content>.hero-action{margin:40px 0 0}
/* Tool actions may wrap; keep their full touch boxes clear of the motion button. */
.tool-detail-page #page-hero .hero-content{padding-bottom:24px}
.tool-detail-page #page-hero .hero-action{display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px}
@media(max-width:768px){.public-root.home-page .public-header{height:var(--public-header-height);padding-block:12px}}

/* Native article/CMS audio belongs to the public reading shell. */
.public-root .site-audio{min-width:0;margin:24px 0;padding:16px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.public-root .site-audio figcaption{margin:0 0 12px;font-size:16px;font-weight:600;line-height:1.6;overflow-wrap:anywhere;color:var(--ink)}
.public-root .site-audio audio{display:block;width:100%;max-width:100%;min-width:0}
.public-root .site-audio p{font-size:14px;line-height:1.6;color:var(--body)}
.public-root[data-theme="dark"] .site-audio audio{color-scheme:dark}

/* Public typography, alignment and state repairs · 20261008_3 */
/* Reading side rail: the aside (not the short TOC inside it) is the sticky unit, so it keeps following the full article row. */
@media(min-width:901px){
.public-root .reading-layout>aside{position:sticky;top:24px;align-self:start;max-height:calc(100dvh - 48px);overflow:auto;overscroll-behavior:contain;padding:8px;margin:-8px}
.public-root .reading-layout>aside .article-series nav{max-height:none;overflow:visible}
}
/* Article end modules never outrank the in-article h2 scale. */
.article-page .reading-main :is(.faq,.closing,.listing)>h2{font-size:28px;line-height:1.5}
@media(max-width:768px){.article-page .reading-main :is(.faq,.closing,.listing)>h2{font-size:24px}}
.public-root .reading-prev-next a{gap:8px}
.public-root .reading-prev-next span{font-size:14px;line-height:1.5;color:var(--body)}
.public-root .reading-prev-next strong,.public-root .article-prose strong{font-weight:600}
.public-root .reading-prev-next strong{font-size:18px;line-height:1.5;color:var(--ink)}
/* Home/product headings were outside the shared heading baseline (UA bold, inherited 1.75 leading). */
.home-page :where(h2,h3){font-weight:500;line-height:1.4}
/* Short lines and one/two-character orphans in CJK copy. */
.public-root :where(p,li,dd){text-wrap:pretty}
.public-root :where(h1,h2,h3,h4){text-wrap:balance}
/* Library: eyebrow, title and description form one group; the stage row aligns title, description and toggle on one axis. */
.library-page .section-heading{display:grid;gap:12px}
@media(min-width:769px){
.library-page .stage-summary p{grid-row:2;align-self:center}
}
/* Tool groups: description is separated from the first row by more than the in-group gap. */
.public-root .tool-category>p{margin-bottom:24px}
/* Hover/press feedback for controls that only changed on focus (UI-STATE-010). Pointer devices only. */
@media(hover:hover){
.menu-dialog nav>a:hover{text-decoration:underline;text-underline-offset:5px}
.public-header nav a:not([aria-current]):hover,.account .text-link:hover,.public-root .text-link:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:6px}
.public-root .btn:not(.secondary):hover,.library-page .button.primary:hover{opacity:.85}
.public-root .btn.secondary:hover,.library-page .button:not(.primary):hover{background:color-mix(in srgb,var(--ink) 8%,transparent)}
.public-root .article-row :is(h2,h3) a:hover,.series-list h3 a:hover,.tool-rows h3 a:hover,.tool-category h3 a:hover,.public-root .pc-preview-title a:hover,.public-root .pc-preview-detail:hover{text-decoration:underline;text-underline-offset:6px}
.tool-detail-page .related .tool-rows article>a:hover{text-decoration-thickness:2px}
.reading-toc nav a:hover,.article-series nav a:hover,.public-root .reading-prev-next a:hover strong,.library-toc a:hover,.library-page .stage-nav a:hover,.library-page .stage-tool:hover strong,.library-page .tool-card:hover h3,.library-page .map-card>a:hover{text-decoration:underline;text-underline-offset:5px}
.category-links a:hover{border-bottom-color:var(--ink)}
.pager:not([aria-current]):not([aria-disabled]):hover{background:color-mix(in srgb,var(--ink) 8%,transparent)}
.public-root summary:not(.stage-summary):hover{text-decoration:underline;text-underline-offset:5px}
.library-page .stage-summary:hover h3{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:6px}
.public-root :is(.pc-link,.pc-cost-table th a,.pc-prose a,.article-prose a,.pc-card a:not(.btn)):hover{text-decoration-thickness:2px}
}

/* Shared list title role, including featured series at small widths. */
@media(max-width:768px){.public-root .series-list article h3{font-size:22px}}
/* Tutorial articles and editorial topics share the reading-title role. */
.public-root.article-page .reading-header h1,.public-root .pc-document[data-content-kind="topic"] h1{font-size:clamp(32px,5vw,56px);font-weight:300;line-height:1.3;letter-spacing:-.04em}
@media(max-width:768px){.public-root.article-page .reading-header h1,.public-root .pc-document[data-content-kind="topic"] h1{font-size:32px}}

/* Hero breadcrumb preserves the eyebrow text position and full hit areas. */
.public-root .article-breadcrumb.hero-breadcrumb{font-size:12px;line-height:1.5;letter-spacing:.06em;color:var(--body);margin:0;align-items:baseline}
.public-root .hero-breadcrumb a{min-width:44px;min-height:44px;margin-block:-13px;overflow-wrap:anywhere}
.public-root .hero-breadcrumb .crumb-step{min-width:0;max-width:100%}
.public-root .public-hero .article-breadcrumb.hero-breadcrumb{margin-bottom:12px}

/* Source: public-footer.css */
/* Public shell only. Both footer variants use the same content and layout. */
.public-root .public-footer {
    display: flex;
    flex-direction: column;
    gap: 48px;
    padding: 64px var(--public-edge) calc(32px + env(safe-area-inset-bottom, 0px));
    border-top: 1px solid var(--line);
    background: var(--paper);
    color: var(--body);
}
.public-root .public-footer a {
    min-width: 44px;
    min-height: 44px;
    text-decoration: none;
}
.public-root .public-footer a:focus-visible {
    outline: 2px solid var(--ink);
    outline-offset: 2px;
}
.public-root .footer-cta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 32px;
    padding: 48px 56px;
    border-radius: 16px;
    background: var(--ink);
    color: var(--paper);
}
.public-root .footer-cta-copy { min-width: 0; max-width: 36em; }
.public-root .footer-cta-copy p { margin: 0; font-size: 16px; line-height: 1.8; }
.public-root .footer-cta-copy .footer-cta-title {
    margin-bottom: 12px;
    font-size: 32px;
    font-weight: 600;
    line-height: 1.4;
    text-wrap: balance;
}
.public-root .footer-cta-actions { display: flex; flex-shrink: 0; gap: 12px; }
.public-root .footer-cta-actions .btn {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    gap: 8px;
    min-height: 48px;
    padding: 12px 24px;
    border: 1px solid var(--paper);
    border-radius: 99px;
    font: inherit;
    font-size: 16px;
    font-weight: 600;
    line-height: 1.5;
    white-space: nowrap;
    transition: opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);
}
.public-root .footer-cta-actions .footer-cta-primary { background: var(--paper); color: var(--ink); }
.public-root .footer-cta-actions .footer-cta-secondary { background: transparent; color: var(--paper); }
.public-root .footer-cta-actions .btn:hover { opacity: .85; transform: none; }
.public-root .footer-cta-actions .btn:active { opacity: .75; }
.public-root .footer-cta-actions .btn:focus-visible { outline-color: var(--paper); }
.public-root .footer-cta-actions .material-symbols-outlined {
    width: 20px;
    height: 20px;
    flex: 0 0 20px;
    overflow: hidden;
    font-size: 20px;
    font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 20;
}
.public-root .footer-main {
    display: grid;
    grid-template-columns: minmax(320px, 1.2fr) minmax(0, 4fr);
    align-items: baseline;
    gap: 40px;
}
.public-root .footer-brand { min-width: 0; }
.public-root .public-footer .brand-wordmark {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    max-width: 100%;
    color: var(--ink);
    font-family: var(--brand-family);
    font-weight: var(--brand-weight);
    font-size: 24px;
    font-synthesis: none;
    line-height: 1.4;
    white-space: nowrap;
}
.public-root .public-footer .brand-mark { width: 32px; height: 32px; flex: 0 0 32px; object-fit: contain; }
.public-root .public-footer .brand-wordmark > span { align-self: baseline; }
.public-root .footer-brand p { max-width: 30em; margin: 16px 0 0; font-size: 14px; line-height: 1.8; text-wrap: balance; }
.public-root .footer-columns { align-items: baseline; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 40px; }
.public-root .footer-columns > div { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; }
.public-root .footer-columns h3 { margin: 0 0 12px; font-size: 14px; font-weight: 600; line-height: 1.5; color: var(--ink); }
.public-root .footer-columns a { display: flex; align-items: center; width: 100%; padding: 8px 0; font-size: 14px; line-height: 1.6; color: var(--body); overflow-wrap: anywhere; }
.public-root .footer-columns a:hover, .public-root .footer-legal a:hover { color: var(--ink); text-decoration: underline; text-underline-offset: 4px; }
.public-root .footer-legal { display: flex; flex-direction: column; gap: 16px; border-top: 1px solid var(--line); padding-top: 24px; }
.public-root .footer-legal-row { display: flex; flex-direction: column; gap: 16px; }
.public-root .footer-legal-links { display: flex; flex-wrap: wrap; gap: 8px 28px; }
.public-root .footer-legal-links a { display: inline-flex; align-items: center; font-size: 14px; line-height: 1.6; color: var(--body); }
.public-root .footer-legal-row p { margin: 0; font-size: 14px; line-height: 1.6; }
.public-root .footer-meta { display: flex; flex-direction: column; align-items: flex-start; gap: 16px; }
.public-root .footer-meta .copyright { display: flex; align-items: center; min-height: 44px; margin: 0; font-size: 14px; line-height: 1.6; }
.public-root .footer-icp { display: inline-flex; align-items: center; font-size: 14px; line-height: 1.6; color: var(--body); font-variant-numeric: tabular-nums; }

@media (max-width: 1024px) {
    .public-root .footer-main { grid-template-columns: minmax(0, 1fr); gap: 32px; }
    .public-root .footer-cta { flex-direction: column; align-items: flex-start; padding: 40px; gap: 24px; }
}
@media (max-width: 768px) {
    .public-root .public-footer { gap: 32px; padding-top: 48px; }
    .public-root .footer-columns { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px 24px; }
}
@media (max-width: 480px) {
    .public-root .footer-cta { padding: 24px; }
    .public-root .footer-cta-copy .footer-cta-title { font-size: 26px; }
    .public-root .footer-cta-actions { width: 100%; flex-direction: column; }
    .public-root .footer-cta-actions .btn { width: 100%; }
    .public-root .public-footer .brand-wordmark { font-size: 20px; }
    .public-root .footer-legal-links { flex-direction: column; align-items: flex-start; gap: 16px; }
}
@media (prefers-reduced-motion: reduce) {
    .public-root .footer-cta-actions .btn { transition: none; }
}

/* Source: public-auth.css */
.public-root #public-auth-dialog{padding:32px 36px;width:min(440px,calc(100vw - 32px))}
.public-root #public-auth-dialog .form-stack{gap:20px}
.public-root #public-auth-dialog .form-stack h2{font-size:32px;line-height:1.3}
.public-root #public-auth-dialog .form-stack label{font-weight:500}
.public-root #public-auth-dialog .form-stack input:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.public-root #public-auth-dialog .form-stack button[aria-busy=true]{opacity:.65;cursor:wait}
@media(max-width:390px){.public-root #public-auth-dialog{padding:28px 24px}}
.public-root .form-stack{display:grid;gap:20px;max-width:440px}
.public-root .form-stack [hidden]{display:none!important}
.public-root .form-stack .auth-step{display:grid;gap:20px;min-width:0}
.public-root .form-stack .btn{font-weight:600}
.public-root .auth-step-heading{display:grid;gap:12px;min-width:0}
.public-root .form-stack [data-auth-step-title]{font-weight:600}
.public-root .auth-step-heading:focus-visible{outline:2px solid var(--ink);outline-offset:4px}
.public-root .auth-steps{font-size:14px;line-height:1.5;color:var(--body)}
.public-root .auth-step-lines{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.public-root .auth-step-lines span{height:2px;background:var(--line)}
.public-root .auth-step-lines .is-current{background:var(--ink)}
.public-root .form-stack .auth-actions{display:flex;gap:12px;min-width:0}
.public-root .form-stack .auth-actions .btn{flex:1 1 0;width:auto;min-width:0;min-height:48px;padding:12px}
.public-root .auth-account-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding-bottom:12px;min-width:0}
.public-root .auth-account-summary p{min-width:0;overflow-wrap:anywhere;font-size:16px}
.public-root .auth-account-summary button{flex:0 0 auto;min-width:44px;min-height:44px;padding:8px;border:0;background:transparent;color:var(--ink);font-family:inherit;font-size:14px;font-weight:600;line-height:1.5;text-decoration:underline;cursor:pointer}
.public-root .auth-account-summary button:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.public-root .form-stack h2{margin:0;font-size:clamp(26px,5vw,36px);line-height:1.2}
.public-root .form-stack p{margin:0}
.public-root .form-stack label{display:grid;gap:8px;font-size:14px;line-height:1.5;font-weight:500}
.public-root .form-stack input{width:100%;height:48px;box-sizing:border-box;padding:0 16px;border:1px solid var(--input-border);border-radius:8px;background:var(--surface);color:var(--ink);font-family:inherit;font-size:16px}
.public-root .form-stack input[aria-invalid=true]{border-color:var(--danger)}
.public-root .form-error{min-height:21px;color:var(--danger);font-size:14px;line-height:1.5;visibility:hidden}
.public-root .form-error.is-visible{visibility:visible}
.public-root .field-error{font-size:14px;line-height:1.5;color:var(--danger);font-weight:400}
.public-root .form-switch a{text-decoration:underline}
.public-root .standalone-auth-shell{width:min(440px,calc(100vw - 32px));margin:clamp(80px,12vw,160px) auto;padding:32px;border:1px solid #d9dcdf;border-radius:12px;background:var(--paper,#fff)}
.public-root dialog::backdrop{background:rgba(18,22,27,.54)}
.public-root.auth-dialog-open{overflow:hidden}

.public-root .form-stack .code-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:start}
.public-root .form-stack .code-row label{min-width:0}
.public-root .form-stack input[name="phone"],.public-root .form-stack input[name="code"]{font-size:16px}
.public-root .form-stack .code-row .btn{width:auto;min-height:48px;margin-top:29px;padding:12px 16px;white-space:nowrap;font-size:14px}
.public-root .form-stack .code-row .btn[disabled]{opacity:.65;cursor:not-allowed}
.public-root .form-stack .form-alert{font-size:14px;color:var(--body)}
.public-root .sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:360px){.public-root .form-stack .code-row{grid-template-columns:minmax(0,1fr)}.public-root .form-stack .code-row .btn{width:100%;margin-top:0}}

[data-public-intent-preview] { padding: 12px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
[data-public-intent-preview] p { margin: 4px 0; white-space: pre-wrap; overflow-wrap: anywhere; }

/* Auth typography and alignment repairs · 20261008_3 */
/* One title style on every host page (home/product used UA bold, other pages 400) and on every step. */
.public-root .form-stack :is(h1,h2){color:var(--ink);font-weight:600;letter-spacing:-.02em}
.public-root #public-auth-dialog .form-stack h2,.public-root .standalone-auth-shell .form-stack :is(h1,h2){font-size:32px;line-height:1.3}
/* Title group (eyebrow, title, description) is tighter than the gap that separates it from the fields (UI-SPACE-003). */
.public-root .form-stack .auth-head{display:grid;gap:12px;margin-bottom:12px;min-width:0}
.public-root .form-stack [data-auth-register-intro]{display:grid;gap:12px;min-width:0}
/* Secondary copy in a 440px surface follows the form scale instead of the 18px page body. */
.public-root .form-stack .auth-head p:not(.eyebrow,.auth-steps),.public-root .form-stack .auth-offer{font-size:16px;line-height:1.6}
.public-root .form-stack .auth-policy,.public-root .form-stack .form-switch,.public-root .form-stack [data-public-intent-preview] p{font-size:14px;line-height:1.6}
/* Anchor to the top so field errors cannot move the heading. Short windows scroll inside the dialog. */
.public-root #public-auth-dialog{--auth-dialog-top:min(8dvh,64px);margin:var(--auth-dialog-top) auto auto;max-height:calc(100dvh - var(--auth-dialog-top) - 16px);overscroll-behavior:contain}
/* Close control shares the first text line's axis and the content's right edge. */
.public-root #public-auth-dialog .close{top:20px;right:26px}
@media(max-width:390px){.public-root #public-auth-dialog .close{top:16px;right:14px}}
