/* Policy Core sales page (/software/policy-core). Generated from the Policy Core public site's stylesheet, scoped under .ps. */
.ps { background: var(--paper, #f7f5f0); color: var(--ink, #0d2b2e); font-family: 'IBM Plex Sans', system-ui, sans-serif; line-height: 1.55; }
.ps *, .ps *::before, .ps *::after { box-sizing: border-box; }
.ps h1, .ps h2, .ps h3 { font-family: inherit; font-weight: 600; margin-top: 0; }
.ps p, .ps ul, .ps ol, .ps dl { margin-top: 0; }
.ps a { color: inherit; }
.ps .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; }
.ps .btn { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 0 1.2rem; border: 2px solid transparent; border-radius: 4px; font-weight: 600; font-size: 1rem; text-decoration: none; cursor: pointer; }
.ps .cta-row { display: flex; flex-wrap: wrap; gap: .75rem; margin: 1.25rem 0; }
.ps .table-wrap { overflow-x: auto; }
.ps :focus-visible { outline: 3px solid var(--thistle-deep, #3f2766); outline-offset: 3px; }
.ps .hero :focus-visible, .ps .cta-band :focus-visible, .ps .sec.dark :focus-visible { outline-color: #fff; }
.ps code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
.ps figure { margin: 0; }
.ps .doc-figure figcaption { font-size: .85rem; color: var(--ink-soft, #2f484b); }
.ps .btn-primary { background: var(--ink, #0d2b2e); color: #fff; border-color: var(--ink, #0d2b2e); }
@property --n { syntax: '<integer>'; initial-value: 38; inherits: false; }
.ps .wrap { max-width: 78rem; margin: 0 auto; padding: 0 clamp(1.25rem, 4vw, 2.5rem); }
.ps .wrap{max-width: 78rem; margin: 0 auto; padding: 0 clamp(1.25rem, 4vw, 2.5rem);}
.ps .btn-light{background: var(--paper, #f7f5f0); color: var(--ink, #0d2b2e); border-color: var(--paper, #f7f5f0);}
.ps .btn-light:hover{background: #fff;}
.ps .btn-outline-light{background: transparent; color: var(--paper, #f7f5f0); border-color: var(--paper, #f7f5f0);}
.ps .btn-outline-light:hover{background: rgba(247, 245, 240, .14);}
.ps a.arrow{font-weight: 600; text-decoration: none; border-bottom: 2px solid currentColor; padding-bottom: 1px;}
.ps a.arrow::after{content: " \2192";}
.ps .hero{background: var(--ink, #0d2b2e); color: var(--paper, #f7f5f0); padding: clamp(2.5rem, 7vw, 5.5rem) 0 clamp(3rem, 8vw, 6rem); overflow: hidden;}
.ps .hero-grid{display: grid; gap: clamp(2rem, 5vw, 4rem); align-items: center;}
@media (min-width: 62rem){.ps .hero-grid{grid-template-columns: minmax(0, 6fr) minmax(0, 5fr);}}
.ps .kicker{font-size: .8rem; letter-spacing: .1em; text-transform: uppercase; font-weight: 700; color: #e6c470; margin: 0 0 1rem;}
.ps .hero h1{font-size: clamp(2.2rem, 5.2vw, 3.9rem); line-height: 1.06; letter-spacing: -.025em; font-weight: 600; margin: 0 0 1.25rem; color: var(--paper, #f7f5f0);}
.ps .hero-lead{font-size: clamp(1.05rem, 1.6vw, 1.3rem); line-height: 1.55; max-width: 38rem; color: #d9e4e2; margin: 0 0 1.75rem;}
.ps .hero-note{font-size: .9rem; color: #b9cac7; margin: 0; max-width: 38rem;}
.ps .hero .cta-row{margin: 0 0 1.25rem;}
.ps .hero-art{position: relative; padding: 0 0 4.5rem; max-width: 34rem;}
.ps .sheet{background: #fff; color: var(--ink, #0d2b2e); padding: 1.4rem 1.5rem 1.6rem; box-shadow: 12px 12px 0 var(--thistle, #5b3a8c); border-radius: 2px;}
.ps .sheet-meta{font-size: .72rem; letter-spacing: .06em; text-transform: uppercase; font-weight: 700; color: #3d5558; margin: 0 0 .35rem;}
.ps .sheet-title{font-size: 1.35rem; font-weight: 600; margin: 0 0 1rem; padding-bottom: .8rem; border-bottom: 2px solid var(--ink, #0d2b2e);}
.ps .sheet-row{display: flex; align-items: baseline; gap: .7rem; padding: .42rem .5rem; font-size: .98rem;}
.ps .sheet-row .num{font-weight: 700; color: var(--brand-deep, #0a4440); min-width: 3rem; font-variant-numeric: tabular-nums;}
.ps .sheet-row.l1{font-weight: 600; margin-top: .25rem;}
.ps .sheet-row.l2{padding-left: 1.6rem;}
.ps .sheet-row.l3{padding-left: 3rem; font-size: .93rem;}
.ps .sheet-row.hit{background: #f1ecf8; outline: 2px solid var(--thistle-deep, #3f2766); outline-offset: -2px;}
.ps .chip{margin-left: auto; font-size: .68rem; letter-spacing: .05em; text-transform: uppercase; font-weight: 700; background: var(--thistle-deep, #3f2766); color: #fff; padding: .18rem .45rem; border-radius: 2px; white-space: nowrap;}
.ps .record{position: absolute; right: -.5rem; bottom: 0; width: min(17rem, 78%); background: var(--paper, #f7f5f0); color: var(--ink, #0d2b2e); border: 2px solid var(--ink, #0d2b2e); padding: 1rem 1.1rem; box-shadow: 8px 8px 0 #c79a35; border-radius: 2px;}
@media (max-width: 40rem){.ps .record{right: 0;}}
.ps .record-h{font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; font-weight: 700; margin: 0 0 .15rem; color: #3d5558;}
.ps .record-big{font-size: 2.3rem; font-weight: 600; line-height: 1; margin: 0 0 .6rem;}
.ps .record-big span{font-size: 1rem; font-weight: 500; color: #3d5558;}
.ps .bar-track{height: .6rem; background: #dcd8cd; border-radius: 1px; overflow: hidden; margin-bottom: .75rem;}
.ps .bar-fill{height: 100%; background: var(--brand, #0e5f5a);}
.ps .record-list{list-style: none; margin: 0; padding: 0; font-size: .88rem;}
.ps .record-list li{display: flex; align-items: center; gap: .5rem; padding: .18rem 0;}
.ps .record-list em{margin-left: auto; font-style: normal; color: #3d5558; font-size: .8rem;}
.ps .dot{width: .6rem; height: .6rem; border-radius: 50%; flex: none;}
.ps .dot.ok{background: var(--brand, #0e5f5a);}
.ps .dot.wait{background: #c79a35;}
.ps .record-foot{font-size: .72rem; color: #3d5558; margin: .5rem 0 0;}
.ps .sec{padding: clamp(3rem, 7vw, 5.5rem) 0;}
.ps .sec.tint{background: #ece8dd;}
.ps .sec.dark{background: var(--ink-soft, #2f484b); color: var(--paper, #f7f5f0);}
.ps .sec-grid{display: grid; gap: .5rem 2rem;}
@media (min-width: 52rem){.ps .sec-grid{grid-template-columns: 6rem minmax(0, 1fr);}}
.ps .sec-num{font-size: clamp(3rem, 8vw, 5.5rem); line-height: .9; font-weight: 600; letter-spacing: -.04em; color: #b9c9c6; margin: 0;}
.ps .sec.dark .sec-num{color: #6f8c8b;}
.ps .sec-title{font-size: clamp(1.7rem, 3.4vw, 2.6rem); line-height: 1.12; letter-spacing: -.02em; font-weight: 600; margin: 0 0 1.25rem; max-width: 40rem; border: 0; padding: 0; text-transform: none;}
.ps .sec-lead{font-size: 1.12rem; max-width: 44rem; margin: 0 0 1.75rem;}
.ps .pull{font-size: clamp(1.4rem, 3vw, 2.1rem); line-height: 1.25; font-weight: 500; letter-spacing: -.015em; max-width: 36rem; margin: 0 0 1.25rem; color: var(--thistle-deep, #3f2766);}
.ps .numbered-list{list-style: none; margin: 0; padding: 0; display: grid; gap: 0; max-width: 46rem; border-top: 2px solid var(--ink, #0d2b2e);}
.ps .numbered-list li{display: grid; grid-template-columns: 3.4rem 1fr; gap: .75rem; padding: 1rem 0; border-bottom: 1px solid var(--rule, #dcd8cd);}
.ps .numbered-list .num{font-weight: 700; color: var(--brand-deep, #0a4440); font-variant-numeric: tabular-nums;}
.ps .sec.dark a{color: #fff;}
.ps .compare{width: 100%; border-collapse: collapse; background: #fff; border: 2px solid var(--ink, #0d2b2e); font-size: 1rem;}
.ps .compare th,.ps .compare td{padding: .9rem 1.1rem; text-align: left; vertical-align: top; border-bottom: 1px solid var(--rule, #dcd8cd); overflow-wrap: break-word;}
.ps .compare thead th{background: var(--ink, #0d2b2e); color: var(--paper, #f7f5f0); font-size: .78rem; letter-spacing: .08em; text-transform: uppercase;}
.ps .compare thead th:last-child{background: var(--thistle-deep, #3f2766);}
.ps .compare tbody th{font-weight: 600; width: 22%;}
.ps .compare tbody td:nth-child(2){color: #3d5558; width: 30%;}
.ps .compare tbody td:last-child{background: #f1ecf8; font-weight: 500;}
.ps .compare tbody tr:last-child > *{border-bottom: 0;}
.ps .show{display: grid; gap: 1.75rem 3rem; align-items: center; padding-top: clamp(2rem, 5vw, 3.5rem); padding-bottom: clamp(1rem, 3vw, 2rem);}
@media (min-width: 62rem){.ps .show{grid-template-columns: minmax(0, 5fr) minmax(0, 6fr);}
.ps .show.flip .show-text{order: 2;}
.ps .show{padding-left: calc(clamp(1.25rem, 4vw, 2.5rem) + 8rem);}}
.ps .show h3{font-size: clamp(1.4rem, 2.4vw, 1.9rem); line-height: 1.15; letter-spacing: -.015em; margin: 0 0 .75rem;}
.ps .sub-num{font-weight: 700; color: var(--thistle-deep, #3f2766); font-size: 1rem; margin: 0 0 .25rem; letter-spacing: .04em;}
.ps .show-text p{max-width: 34rem;}
.ps .show-art figure.doc-figure{margin: 0;}
.ps .show-art figure.doc-figure a{display: block; border: 2px solid var(--ink, #0d2b2e); box-shadow: 10px 10px 0 #cfc5e3; background: #fff;}
.ps .show-art figure.doc-figure img{display: block; width: 100%; height: auto; max-height: 28rem; object-fit: cover; object-position: top left;}
.ps .show-art figcaption{margin-top: 1rem; font-size: .85rem;}
.ps .code-panel{background: var(--ink, #0d2b2e); color: #e8f0ee; border: 2px solid var(--ink, #0d2b2e); box-shadow: 10px 10px 0 #cfc5e3; padding: 1.1rem 1.25rem; overflow-x: auto;}
.ps .code-panel pre{margin: 0; font-size: .86rem; line-height: 1.55; white-space: pre;}
.ps .code-panel code{background: none; color: inherit; padding: 0;}
.ps .caption-note{font-size: .85rem; margin: 1rem 0 0;}
.ps .roles{display: grid; gap: 2rem 2.5rem;}
@media (min-width: 52rem){.ps .roles{grid-template-columns: repeat(3, minmax(0, 1fr));}}
.ps .role{border-top: 3px solid var(--ink, #0d2b2e); padding-top: .9rem;}
.ps .role h3{font-size: 1.25rem; margin: 0 0 .5rem;}
.ps .fits{display: grid; gap: 1.75rem 2.5rem;}
@media (min-width: 52rem){.ps .fits{grid-template-columns: repeat(2, minmax(0, 1fr));}}
@media (min-width: 80rem){.ps .fits{grid-template-columns: repeat(4, minmax(0, 1fr));}}
.ps .fits > div{border-top: 1px solid var(--rule, #dcd8cd); padding-top: .9rem;}
.ps .fits h3{font-size: 1.15rem; margin: 0 0 .4rem;}
.ps .honest{display: grid; gap: 1.1rem; max-width: 46rem; font-size: 1.08rem;}
.ps .honest p{margin: 0;}
.ps .honest strong{color: #fff;}
.ps .faq{max-width: 48rem; border-top: 2px solid var(--ink, #0d2b2e);}
.ps .faq details{border-bottom: 1px solid var(--rule, #dcd8cd);}
.ps .faq summary{cursor: pointer; padding: 1rem 2.5rem 1rem 0; font-weight: 600; font-size: 1.1rem; list-style: none; position: relative; min-height: 44px;}
.ps .faq summary::-webkit-details-marker{display: none;}
.ps .faq summary::after{content: "+"; position: absolute; right: .25rem; top: .6rem; font-size: 1.5rem; font-weight: 400;}
.ps .faq details[open] summary::after{content: "\2212";}
.ps .faq details p{margin: 0 0 1.1rem; max-width: 40rem;}
.ps .cta-band{background: var(--thistle-deep, #3f2766); color: #fff; padding: clamp(3rem, 7vw, 5rem) 0;}
.ps .cta-band h2{font-size: clamp(1.9rem, 4.2vw, 3rem); line-height: 1.1; letter-spacing: -.02em; margin: 0 0 .75rem; max-width: 40rem; color: #fff; border: 0; padding: 0; text-transform: none;}
.ps .cta-band p{font-size: 1.1rem; max-width: 40rem; color: #ece6f6;}
.ps .cta-band .cta-row{margin-top: 1.5rem;}
.ps .cta-band .btn-light{color: var(--thistle-deep, #3f2766);}
.ps .page-band{background: var(--ink, #0d2b2e); color: var(--paper, #f7f5f0); padding: clamp(2.25rem, 6vw, 4rem) 0;}
.ps .page-band h1{font-size: clamp(2rem, 4.6vw, 3.2rem); line-height: 1.1; letter-spacing: -.025em; margin: 0 0 .9rem; color: var(--paper, #f7f5f0); max-width: 44rem; font-weight: 600;}
.ps .page-band p{font-size: 1.15rem; max-width: 40rem; color: #d9e4e2; margin: 0;}
.ps .page-band .cta-row{margin-top: 1.5rem;}
.ps .split{display: grid; gap: 1rem 3rem; padding: clamp(2rem, 5vw, 3.5rem) 0; border-bottom: 1px solid var(--rule, #dcd8cd);}
@media (min-width: 52rem){.ps .split{grid-template-columns: 17rem minmax(0, 1fr);}
.ps .split > h2{position: sticky; top: 1.5rem; align-self: start;}}
.ps .split > h2{font-size: 1.5rem; line-height: 1.2; letter-spacing: -.01em; margin: 0; border: 0; padding: 0; text-transform: none;}
.ps .split .site-dl{margin: 0;}
.ps .split ul{margin: 0; padding-left: 1.2rem; max-width: 46rem;}
.ps .split li + li{margin-top: .6rem;}
.ps .split p{max-width: 46rem; margin-top: 0;}
.ps .plain-sec{padding: clamp(2rem, 5vw, 3.5rem) 0;}
.ps .timeline{list-style: none; margin: 0; padding: 0; counter-reset: step;}
.ps .timeline > li{display: grid; gap: .75rem 2rem; padding: 2rem 0; border-bottom: 1px solid var(--rule, #dcd8cd);}
@media (min-width: 52rem){.ps .timeline > li{grid-template-columns: 5rem minmax(0, 1fr) minmax(0, 1fr); align-items: start;}
.ps .timeline > li:not(.has-art){grid-template-columns: 5rem minmax(0, 1fr);}}
.ps .timeline .step-n{font-size: clamp(2.4rem, 5vw, 3.6rem); font-weight: 600; letter-spacing: -.04em; color: #b9c9c6; line-height: 1; margin: 0;}
.ps .timeline h2{font-size: 1.5rem; margin: 0 0 .5rem; border: 0; padding: 0; text-transform: none; letter-spacing: -.01em;}
.ps .timeline p{max-width: 34rem; margin: 0 0 .75rem;}
.ps .timeline figure.doc-figure{margin: 0;}
.ps .timeline figure.doc-figure a{display: block; border: 2px solid var(--ink, #0d2b2e); box-shadow: 8px 8px 0 #cfc5e3; background: #fff;}
.ps .timeline figure.doc-figure img{display: block; width: 100%; height: auto; max-height: 20rem; object-fit: cover; object-position: top left;}
.ps .flow{display: grid; gap: 1rem; align-items: stretch; margin: 0 0 1.5rem;}
@media (min-width: 52rem){.ps .flow{grid-template-columns: 1fr auto 1fr; align-items: center;}}
.ps .flow .node{border: 2px solid var(--ink, #0d2b2e); padding: 1.1rem 1.25rem; background: #fff; border-radius: 2px;}
.ps .flow .node.right{background: #f1ecf8; box-shadow: 8px 8px 0 #cfc5e3;}
.ps .flow .node h3{margin: 0 0 .5rem; font-size: 1.1rem;}
.ps .flow .node ul{margin: 0; padding-left: 1.1rem; font-size: .95rem;}
.ps .flow .arrow-mid{text-align: center; font-weight: 700; color: var(--thistle-deep, #3f2766); font-size: .85rem;}
.ps .flow .arrow-mid span{display: block; font-size: 2rem; line-height: 1;}
.ps .options{display: grid; gap: 2rem; padding: clamp(2rem, 5vw, 3.5rem) 0;}
@media (min-width: 52rem){.ps .options{grid-template-columns: repeat(2, minmax(0, 1fr));}}
.ps .option{padding: 1.75rem; border: 2px solid var(--ink, #0d2b2e); background: #fff;}
.ps .option.alt{background: var(--ink, #0d2b2e); color: var(--paper, #f7f5f0);}
.ps .option.alt h2,.ps .option.alt p{color: var(--paper, #f7f5f0);}
.ps .option h2{margin: 0 0 .6rem; font-size: 1.5rem; border: 0; padding: 0; text-transform: none;}
.ps .limits{background: #f1ecf8; border: 2px solid var(--thistle-deep, #3f2766); padding: 1.25rem 1.5rem; max-width: 50rem;}
.ps .limits h3{margin: 0 0 .5rem;}
.ps .limits ul{margin: 0; padding-left: 1.2rem;}
@media (prefers-reduced-motion: no-preference){.ps .btn{transition: background-color .15s ease-out, transform .1s ease-out;}}
@media print{.ps .hero,.ps .cta-band,.ps .page-band,.ps .sec.dark{background: #fff !important; color: #000 !important;}}
.ps .sheet-gap{height: 3.2rem;}
.ps .hero-art{padding-bottom: 1.5rem;}
.ps .record{right: -1.25rem; bottom: -1.5rem;}
@media (max-width: 40rem){.ps .record{right: 0;}}
.ps .sec.dark .sec-title,.ps .sec.dark h3{color: var(--paper, #f7f5f0);}
.ps .code-panel pre{font-size: .82rem;}
.ps .page-band .kicker{font-size: .8rem; color: #e6c470; margin: 0 0 1rem;}
.ps .flow .node h2{margin: 0 0 .5rem; font-size: 1.1rem; border: 0; padding: 0; text-transform: none; letter-spacing: 0;}
.ps .show{grid-template-columns: minmax(0, 1fr);}
.ps .show > *{min-width: 0;}
@media (min-width: 62rem){.ps .show{grid-template-columns: minmax(0, 5fr) minmax(0, 6fr);}}
.ps .sec-grid > *{min-width: 0;}
@media (max-width: 52rem){.ps .code-panel pre{white-space: pre-wrap; overflow-wrap: anywhere;}}
@media (max-width: 40rem){.ps .record{position: relative; right: auto; bottom: auto; width: 100%; margin-top: 1.25rem; box-shadow: 6px 6px 0 #c79a35;}
.ps .sheet-gap{display: none;}
.ps .hero-art{padding-bottom: 0;}}
@property --n{ syntax: '<integer>'; initial-value: 38; inherits: false; }
.ps .bar-fill{width: 82%; transform-origin: left center;}
.ps .count{--n: 38; counter-reset: n var(--n);}
.ps .count::before{content: counter(n);}
.ps .rl-done{display: none;}
@keyframes rise{ from { opacity: 0; transform: translateY(18px); } }
@keyframes slide-in{ from { opacity: 0; transform: translateX(-14px); } }
@keyframes pop{ from { opacity: 0; transform: scale(.6); } 60% { transform: scale(1.08); } }
@keyframes fill{ from { transform: scaleX(0); } }
@keyframes tally{ from { --n: 0; } }
@keyframes ring{ 0% { outline-color: transparent; } 40% { outline-color: var(--thistle-deep, #3f2766); outline-offset: 3px; } 100% { outline-color: var(--thistle-deep, #3f2766); outline-offset: -2px; } }
@keyframes swap-out{ to { opacity: 0; } }
@keyframes swap-in{ from { opacity: 0; transform: translateY(6px); } }
@keyframes reveal{ from { opacity: 0; transform: translateY(26px); } }
@keyframes numeral{ from { opacity: 0; transform: translateX(-24px); } }
@keyframes wipe{ from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(-24px -24px -24px -24px); } }
@keyframes lines{ from { clip-path: inset(0 0 100% 0); } to { clip-path: inset(0 0 0 0); } }
@keyframes drift-sheet{ to { transform: translateY(-34px); } }
@keyframes drift-record{ to { transform: translateY(26px); } }
@media (prefers-reduced-motion: no-preference){.ps .hero-copy > *{animation: rise .8s cubic-bezier(.16, 1, .3, 1) both;}
.ps .hero-copy > :nth-child(1){animation-delay: .05s;}
.ps .hero-copy > :nth-child(2){animation-delay: .15s;}
.ps .hero-copy > :nth-child(3){animation-delay: .3s;}
.ps .hero-copy > :nth-child(4){animation-delay: .45s;}
.ps .hero-copy > :nth-child(5){animation-delay: .55s;}
.ps .sheet{animation: rise .9s .2s cubic-bezier(.16, 1, .3, 1) both;}
.ps .sheet-row{animation: slide-in .5s cubic-bezier(.16, 1, .3, 1) both;}
.ps .sheet-row:nth-of-type(1){animation-delay: .55s;}
.ps .sheet-row:nth-of-type(2){animation-delay: .65s;}
.ps .sheet-row:nth-of-type(3){animation-delay: .75s;}
.ps .sheet-row:nth-of-type(4){animation-delay: .85s;}
.ps .sheet-row:nth-of-type(5){animation-delay: .95s;}
.ps .sheet-row:nth-of-type(6){animation-delay: 1.05s;}
.ps .sheet-row:nth-of-type(7){animation-delay: 1.15s;}
.ps .sheet-row.hit{animation: slide-in .5s .95s cubic-bezier(.16, 1, .3, 1) both, ring 1.1s 1.5s ease-out both;}
.ps .chip{animation: pop .5s 1.9s cubic-bezier(.34, 1.4, .64, 1) both;}
.ps .record{animation: rise .9s 1.1s cubic-bezier(.16, 1, .3, 1) both;}
.ps .bar-fill{animation: fill 1.3s 1.6s cubic-bezier(.16, 1, .3, 1) both;}
.ps .count{animation: tally 1.4s 1.6s cubic-bezier(.16, 1, .3, 1) both;}
.ps .record-list li{animation: slide-in .45s ease-out both;}
.ps .record-list li:nth-child(1){animation-delay: 1.9s;}
.ps .record-list li:nth-child(2){animation-delay: 2.05s;}
.ps .record-list li:nth-child(3){animation-delay: 2.2s;}
.ps .rl-done{display: inline;}
.ps .tick .rl-wait{animation: swap-out .25s 4.2s ease-out both;}
.ps .tick .rl-done{position: absolute; right: 0; color: var(--brand-deep, #0a4440); font-weight: 600; animation: swap-in .4s 4.35s ease-out both;}
.ps .tick{position: relative;}
.ps .tick .dot{animation: dot-ok .3s 4.3s ease-out both;}
@keyframes dot-ok{ to { background: var(--brand, #0e5f5a); transform: scale(1.25); } }
.ps a.arrow::after{display: inline-block; transition: transform .2s cubic-bezier(.16, 1, .3, 1);}
.ps a.arrow:hover::after,.ps a.arrow:focus-visible::after{transform: translateX(5px);}
.ps .btn{transition: background-color .15s ease-out, transform .15s cubic-bezier(.16, 1, .3, 1);}
.ps .btn:hover{transform: translateY(-2px);}
.ps .faq details::details-content{transition: block-size .3s ease, content-visibility .3s allow-discrete; block-size: 0; overflow: clip;}
.ps .faq details[open]::details-content{block-size: auto;}
.ps{interpolate-size: allow-keywords;}}
@supports (animation-timeline: view()){@media (prefers-reduced-motion: no-preference){.ps .sec-title,.ps .pull,.ps .sec-lead,.ps .numbered-list li,.ps .show-text,.ps .role,.ps .fits > div,.ps .honest p,.ps .faq details,.ps .compare tbody tr,.ps .cta-band h2,.ps .cta-band p,.ps .split,.ps .timeline > li,.ps .option{animation: reveal linear both; animation-timeline: view(); animation-range: entry 0% entry 45%;}
.ps .sec-num,.ps .step-n{animation: numeral linear both; animation-timeline: view(); animation-range: entry 0% entry 60%;}
.ps .show-art figure.doc-figure a,.ps .timeline figure.doc-figure a{animation: wipe linear both; animation-timeline: view(); animation-range: entry 5% entry 65%;}
.ps .code-panel pre{animation: lines steps(11, end) both; animation-timeline: view(); animation-range: entry 10% entry 75%;}
.ps .hero-art .sheet{animation: drift-sheet linear both; animation-timeline: scroll(root); animation-range: 0 40vh;}
.ps .hero-art .record{animation: drift-record linear both; animation-timeline: scroll(root); animation-range: 0 40vh;}}}
.ps .record-big .count{font-size: 2.3rem; font-weight: 600; color: inherit;}
.ps .record-big .of{font-size: 1rem; font-weight: 500; color: #3d5558;}
.ps .record{bottom: -3.2rem;}
.ps .sheet-gap{height: 5.2rem;}
.ps .hero-art{padding-bottom: 3rem;}
@media (max-width: 40rem){.ps .record{bottom: auto;}
.ps .hero-art{padding-bottom: 0;}}

.ps .all-h { font-size: 1.1rem; letter-spacing: .08em; text-transform: uppercase; margin: clamp(2.5rem, 6vw, 4rem) 0 1rem; padding-top: 1rem; border-top: 2px solid var(--ink, #0d2b2e); }
.ps .all-features { list-style: none; padding: 0; margin: 0; display: grid; gap: 0 2.5rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); }
.ps .all-features li { padding: .9rem 0; border-bottom: 1px solid var(--rule, #dcd8cd); }
.ps .all-features strong { display: block; margin-bottom: .2rem; }
.ps .all-features span { color: var(--ink-soft, #2f484b); font-size: .96rem; }

/* the enlarge window (appended to <body>, so not under .ps) */
dialog.pslb { border: 2px solid #0d2b2e; padding: 0; background: #fff; color: #0d2b2e; width: min(96vw, 1400px); max-height: 96vh; margin: auto; display: flex; flex-direction: column; font-family: 'IBM Plex Sans', system-ui, sans-serif; }
dialog.pslb:not([open]) { display: none; }
dialog.pslb::backdrop { background: rgba(8, 20, 22, .82); }
.pslb-bar { display: flex; flex-wrap: wrap; gap: .5rem; justify-content: flex-end; padding: .6rem .75rem; border-bottom: 1px solid #dcd8cd; background: #f7f5f0; }
.pslb-btn { display: inline-flex; align-items: center; min-height: 44px; padding: 0 1rem; border: 2px solid #0d2b2e; border-radius: 4px; background: #fff; color: #0d2b2e; font: 600 1rem/1 'IBM Plex Sans', system-ui, sans-serif; text-decoration: none; cursor: pointer; }
.pslb-close { background: #0d2b2e; color: #fff; }
.pslb-btn:focus-visible { outline: 3px solid #3f2766; outline-offset: 3px; }
.pslb-scroll { overflow: auto; flex: 1 1 auto; min-height: 0; padding: .75rem; background: #fff; }
.pslb-scroll img { display: block; max-width: 100%; max-height: calc(96vh - 11rem); width: auto; height: auto; margin: 0 auto; }
dialog.pslb.actual .pslb-scroll img { max-width: none; max-height: none; margin: 0; }
.pslb-cap { margin: 0; padding: .6rem .9rem; font-size: .95rem; border-top: 1px solid #dcd8cd; }
.ps figure.doc-figure a[data-zoom] { cursor: zoom-in; }
@media print { dialog.pslb { display: none !important; } }

/* generic product pages: the real screenshot takes the hero's place */
.ps .hero-shot { max-width: 40rem; min-width: 0; }
.ps .hero-shot figure.doc-figure a { display: block; border: 2px solid #fff; box-shadow: 12px 12px 0 var(--thistle, #5b3a8c); background: #fff; }
.ps .hero-shot figure.doc-figure img { display: block; width: 100%; height: auto; }
.ps .hero-shot figcaption { color: #b9cac7; margin-top: 1.1rem; }
.ps .wide-list { max-width: 56rem; }
@media (prefers-reduced-motion: no-preference) { .ps .hero-shot { animation: rise .9s .2s cubic-bezier(.16, 1, .3, 1) both; } }
.ps .sec.dark a.btn-light, .ps .cta-band a.btn-light { color: var(--ink, #0d2b2e); }
.ps .cta-band a.btn-light { color: var(--thistle-deep, #3f2766); }
.ps .sec.dark a.btn-outline-light, .ps .cta-band a.btn-outline-light { color: var(--paper, #f7f5f0); }
.ps .fits { grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); }

.ps .hero-links { display: flex; flex-wrap: wrap; align-items: center; gap: .15rem 1.25rem; margin: 0 0 1.1rem; font-size: 1rem; }
.ps .hero-links span { color: #b9cac7; }
.ps .hero-links a { color: #fff; font-weight: 600; text-decoration: underline; text-underline-offset: 4px; padding: .5rem 0; min-height: 24px; display: inline-block; }
