/* Web-only reading layout. Submission styles and print routes stay unchanged. */
.web-page{background:#fafbf9;color:#263832;--accent:#23544f}
.web-page main{max-width:1160px;margin:auto;padding:0 40px}
.web-page a:focus-visible,.web-page button:focus-visible{outline:3px solid #367d71;outline-offset:5px}
.web-intro{max-width:870px;padding:42px 0 36px}.web-intro h1{font-size:44px;line-height:1.4;letter-spacing:-.045em;margin:20px 0}.web-intro p{max-width:760px;font-size:19px;line-height:1.85;color:#526159;margin-bottom:24px}
.web-career{display:grid;grid-template-columns:220px 1fr;gap:36px;border-top:1px solid #ced8d1;border-bottom:1px solid #ced8d1;padding:24px 0;margin-bottom:36px}.web-career h2{font-size:23px;margin:8px 0}.web-career p{font-size:16px;line-height:1.9;margin:0}.web-career>div>span:last-child{font-size:14px;color:#63726a}
.web-cases{display:grid;grid-template-columns:1fr 1fr;column-gap:48px}.web-card{display:grid;grid-template-columns:30px 1fr;gap:14px;padding:32px 0 36px;border-top:1px solid #d8dfd9}.web-index{color:#8a978e;font-size:13px;padding-top:3px}.web-card h3{font-size:24px;line-height:1.5;letter-spacing:-.035em;margin:12px 0}.web-card p{font-size:15px;line-height:1.85;color:#526159}.web-read{display:flex;justify-content:space-between;font-size:13px;color:#23544f;margin-top:22px}.web-card:hover h3{color:#23544f;text-decoration:underline;text-underline-offset:5px}.web-home #work{scroll-margin-top:30px}
.web-detail>.back{display:inline-block;margin:35px 0}.web-case-head{max-width:860px;padding:20px 0 46px}.web-case-head h1{font-size:42px;line-height:1.4;letter-spacing:-.04em;margin:16px 0 24px}.web-case-head>p{font-size:19px;line-height:1.9;color:#526159}
.web-reading{display:grid;grid-template-columns:220px minmax(0,1fr);gap:52px;border-top:1px solid #d5ddd7;padding-top:42px}.web-toc nav{position:sticky;top:30px}.web-toc a{display:block;font-size:13px;line-height:1.65;padding:10px 0;color:#69766e;border-bottom:1px solid #e5e9e4}.web-toc [aria-current]{color:#23544f;font-weight:650}.web-body{min-width:0;background:transparent!important}.web-body h2{font-size:26px!important;line-height:1.55!important;letter-spacing:-.035em;margin:45px 0 18px!important;scroll-margin-top:24px}.web-body h2:first-child{margin-top:0!important}.web-body p{font-size:16px!important;line-height:1.95!important;margin:0 0 19px!important}.web-body figure{margin:28px 0!important}.web-body table{width:100%;font-size:14px;line-height:1.7}.web-body img{max-width:100%;height:auto}.web-body .spread-result{margin-top:30px!important}.web-body .op-context{margin:0 0 30px}.web-body .spread-lead{font-weight:400}.web-next{display:block;border-top:1px solid #cdd9d1;padding:34px 0;margin:60px 0}.web-next h2{font-size:25px;line-height:1.5;margin-top:14px}.web-image-open{padding:0;border:0;background:transparent;cursor:zoom-in;display:block;width:100%}.web-image-dialog{max-width:95vw;max-height:95vh;border:0;padding:16px;background:#fafbf9}.web-image-dialog::backdrop{background:#15231dd9}.web-image-dialog img{display:block;max-width:90vw;max-height:82vh;object-fit:contain}.web-image-dialog button{display:block;margin:0 0 12px auto;padding:8px 16px;border:1px solid #b6c5bb;background:white;cursor:pointer}
@media(max-width:800px){.web-page main{padding:0 22px}.web-intro{padding:28px 0}.web-intro h1{font-size:32px}.web-intro p,.web-case-head>p{font-size:17px}.web-career{grid-template-columns:1fr;gap:14px;margin-bottom:28px}.web-cases{grid-template-columns:1fr}.web-card h3{font-size:24px}.web-case-head h1{font-size:32px}.web-case-head{padding-bottom:25px}.web-reading{display:block;padding-top:20px}.web-toc{margin-bottom:35px}.web-toc nav{position:static}.web-body h2{font-size:24px!important}.web-body table{display:block;overflow-x:auto}.web-body figure{max-width:100%;overflow-x:auto}.web-body .op-flow-columns{grid-template-columns:1fr}.web-body .op-context{flex-wrap:wrap}.web-body p{overflow-wrap:anywhere}.web-next h2{font-size:23px}}

.web-body .case-paper{width:100%!important;height:auto!important;min-height:0!important;max-width:none!important;padding:0!important;margin:0!important;box-shadow:none!important;background:transparent!important;overflow:visible!important;border:0!important}.web-body.wt-pdf{margin:0;max-width:none}
.web-intro h1,.web-card h3,.web-case-head h1,.web-next h2{word-break:keep-all;text-wrap:pretty}.web-card>div{display:flex;flex-direction:column}.web-card .web-read{margin-top:auto;padding-top:22px}.web-card p{margin-bottom:0}

.web-intro-links{display:flex;align-items:center;gap:24px;flex-wrap:wrap}.web-primary-link{display:inline-block;padding:11px 17px;background:#23544f;color:#fff;font-size:14px;border-radius:4px}.web-primary-link:hover{background:#193e3a}.web-intro-links .text-link{font-size:14px}
@media(max-width:800px){.web-card{display:block;position:relative;padding:25px 0 28px}.web-index{position:absolute;top:25px;left:0}.web-card .eyebrow{padding-left:27px;min-height:20px}.web-card h3{margin-top:10px}.web-card p{font-size:15px;line-height:1.8;word-break:keep-all}.web-intro-links{gap:18px}.web-career p{font-size:15px;line-height:1.8}}
/* Preserve the product photo ratio; PDF max-height rules must not flatten it. */
.web-body.wt-pdf .whatting-product img{display:block;width:100%;height:auto;max-height:none;object-fit:contain}

/* Home visuals explain the product or tool; no empty visual slots on other cards. */
.web-cases{align-items:start}.home-visual{margin:4px 0 18px}.home-visual figcaption{font-size:12px;line-height:1.6;color:#647269;margin-top:8px}.home-product img{display:block;width:100%;height:190px;object-fit:cover;object-position:center 48%;border-radius:4px}.home-response-pair{display:grid;grid-template-columns:minmax(0,1fr) 18px minmax(0,1fr);align-items:center;gap:8px;background:#edf2ef;padding:14px 12px;border-radius:4px;min-height:160px}.home-response-pair>div{min-width:0}.home-response-pair>div>span{font-size:12px;font-weight:600;display:block;margin-bottom:10px}.home-response-pair svg{display:block;width:100%;height:auto;border-radius:3px}.home-response-pair code{font-size:13px;background:transparent;padding:0;color:#263832;display:block;margin-top:7px}.home-response-arrow{text-align:center;color:#536c60}.home-necto{margin-bottom:18px}
@media(max-width:800px){.home-product img{height:auto;max-height:220px;object-fit:contain}.home-response-pair{padding:12px 10px;gap:5px;min-height:145px}.home-response-pair>div>span{font-size:11px}.home-visual figcaption{font-size:12px}}

.home-response-pair .home-screen-result{font-size:13px;font-weight:400;margin:7px 0 0}

/* Modernization: preserve the PDF evidence while adapting its reading size. */
.web-overview-result{border-left:3px solid #23544f;padding-left:18px;margin-top:22px}.web-overview-result p{font-size:16px;line-height:1.85;color:#354b40;margin:0}.web-identity-mobile{display:none}
.web-body.modernization-page .md-identity figcaption strong,.web-body.modernization-page .abi-evidence figcaption strong{font-size:15px;line-height:1.6}.web-body.modernization-page .md-identity figcaption>span{font-size:12px}.web-body.modernization-page .md-abi-compare small{font-size:13px;line-height:1.5}.web-body.modernization-page .md-abi-compare code{font-size:15px}.web-body.modernization-page .md-abi-compare span,.web-body.modernization-page .md-abi-resolution span{font-size:13px;line-height:1.65}.web-body.modernization-page .md-abi-resolution strong{font-size:14px;line-height:1.6}.web-body.modernization-page .md-abi-cause{font-size:19px;margin:28px 0 13px;line-height:1.6}
@media(max-width:800px){.web-body.modernization-page .md-identity-structure>svg{display:none}.web-identity-mobile{display:grid;gap:22px}.web-body.modernization-page .web-identity-mobile svg{min-width:0;width:100%;height:auto}.web-body.modernization-page .md-identity-structure{overflow:visible}.web-body.modernization-page .md-abi-compare{grid-template-columns:1fr;padding:18px;gap:15px}.web-body.modernization-page .md-abi-mismatch{flex-direction:row;gap:10px;align-items:center}.web-overview-result p{font-size:16px}}

/* Entry case: readable collection policies and identity comparisons on the web. */
.web-body.onepass-page .op-context{gap:18px;font-size:13px;line-height:1.6}.web-body.onepass-page .op-context b{font-size:23px}
.web-body.onepass-page .op-decisions{display:table;font-size:15px;line-height:1.8;table-layout:fixed;margin:26px 0 34px}.web-body.onepass-page .op-decisions caption{font-size:15px;line-height:1.7;margin-bottom:12px}.web-body.onepass-page .op-decisions th,.web-body.onepass-page .op-decisions td{padding:13px 15px;overflow-wrap:anywhere;word-break:keep-all}.web-body.onepass-page .op-decisions thead{font-size:13px}.web-body.onepass-page .op-decisions th:first-child{width:32%}.web-body.onepass-page .op-decisions tbody th{font-weight:550}
.web-body.onepass-page .op-name-flow figcaption strong{font-size:16px;line-height:1.6}.web-body.onepass-page .op-name-flow figcaption>span{font-size:12px;line-height:1.7}.web-body.onepass-page .op-authorized{font-size:14px;padding:12px;margin:16px 0}.web-body.onepass-page .op-flow-columns{gap:24px}.web-body.onepass-page .op-flow-columns small{font-size:13px;margin-bottom:9px}.web-body.onepass-page .op-name-source{padding:14px}.web-body.onepass-page .op-name-source span,.web-body.onepass-page .op-name-result span{font-size:13px;line-height:1.65}.web-body.onepass-page .op-name-source b,.web-body.onepass-page .op-name-result strong{font-size:15px;line-height:1.65}.web-body.onepass-page .op-flow-arrow{line-height:30px}.web-body.onepass-page .op-name-result{padding:12px}.web-body.onepass-page .spread-result{padding:20px;border-left:3px solid #23544f;background:#eef3ef}.web-body.onepass-page .spread-result p{margin:9px 0 0!important}
@media(max-width:800px){.web-body.onepass-page .op-context{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;font-size:12px}.web-body.onepass-page .op-context b{font-size:19px}.web-body.onepass-page .op-decisions{display:block;overflow:visible}.web-body.onepass-page .op-decisions caption{display:block;text-align:left}.web-body.onepass-page .op-decisions thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.web-body.onepass-page .op-decisions tbody{display:block;border-top:1px solid #cdd8cf}.web-body.onepass-page .op-decisions tbody tr{display:block;padding:15px 0;border-bottom:1px solid #cdd8cf}.web-body.onepass-page .op-decisions tbody th,.web-body.onepass-page .op-decisions tbody td{display:block;width:auto;padding:0;border:0}.web-body.onepass-page .op-decisions tbody th{font-size:15px;font-weight:650;margin-bottom:7px}.web-body.onepass-page .op-decisions tbody td{font-size:14px;line-height:1.85}.web-body.onepass-page .op-flow-columns{grid-template-columns:1fr;gap:24px}.web-body.onepass-page .op-authorized b{display:inline-block}.web-body.onepass-page .op-name-flow{overflow:visible}}
@media(max-width:800px){.web-body.onepass-page .op-decisions tbody th:first-child{width:auto}}

/* Whatting: preserve real capture crops and separate product context from evidence. */
.web-body.wt-pdf .whatting-product{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:22px;align-items:center}.web-body.wt-pdf .whatting-product figcaption{font-size:14px;line-height:1.8;margin:0}.web-body.wt-pdf .product-metrics{padding:18px 0;margin-bottom:34px}.web-body.wt-pdf .product-metrics dt{font-size:13px}.web-body.wt-pdf .product-metrics dd{font-size:23px}.web-body.wt-pdf .product-metrics small{font-size:12px;line-height:1.7}
.web-body.wt-pdf .wt-sync-pair{gap:20px}.web-body.wt-pdf .wt-sync-pair h3{font-size:16px!important;line-height:1.6}.web-body.wt-pdf .wt-sync-pair h3 span{font-size:12px}.web-body.wt-pdf .wt-sync-crop{width:100%;padding:0;cursor:zoom-in;text-align:left}.web-body.wt-pdf .wt-sync-crop img{max-width:none}.web-body.wt-pdf .wt-sync-comparison figcaption{font-size:13px;line-height:1.8}.web-body.wt-pdf .wt-sync-inset{width:135px;left:10px;bottom:10px;font-size:11px}.web-body.wt-pdf .wt-sync-detail img{max-width:none}
@media(max-width:800px){.web-body.wt-pdf .whatting-product{grid-template-columns:1fr;gap:12px}.web-body.wt-pdf .whatting-product figcaption{font-size:14px}.web-body.wt-pdf .wt-sync-pair{grid-template-columns:1fr;gap:25px}.web-body.wt-pdf .wt-sync-crop{max-width:none}.web-body.wt-pdf .product-metrics-detail dl{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}}

/* Aptstory: keep trade-offs comparable and byte widths faithful on small screens. */
.web-table-label{display:none}.web-body.aptstory-page .as-options{display:table;table-layout:fixed;font-size:15px;line-height:1.8;margin:26px 0 30px}.web-body.aptstory-page .as-options caption{font-size:15px;line-height:1.6;margin-bottom:12px}.web-body.aptstory-page .as-options th,.web-body.aptstory-page .as-options td{padding:14px 12px;font-size:14px;word-break:keep-all;overflow-wrap:anywhere}.web-body.aptstory-page .as-options thead th{font-size:13px}.web-body.aptstory-page .as-options th:first-child{width:23%}.web-body.aptstory-page .as-bytes{padding:20px 0}.web-body.aptstory-page .as-bytes figcaption{font-size:15px;line-height:1.7}.web-body.aptstory-page .as-readers{gap:24px}.web-body.aptstory-page .as-readers b{font-size:14px}.web-body.aptstory-page .as-readers p{font-size:15px!important;margin:8px 0 0!important;line-height:1.8!important}.web-body.aptstory-page .spread-result{padding:20px;border-left:3px solid #23544f;background:#eef3ef}.web-body.aptstory-page .spread-result p{margin:9px 0 0!important}
@media(max-width:800px){.web-body.aptstory-page .as-options{display:block;overflow:visible}.web-body.aptstory-page .as-options caption{display:block;text-align:left}.web-body.aptstory-page .as-options thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.web-body.aptstory-page .as-options tbody{display:block}.web-body.aptstory-page .as-options tr{display:block;padding:16px;border:1px solid #d9e1d8;margin-bottom:14px}.web-body.aptstory-page .as-options tr.selected{border-left:3px solid #456c50}.web-body.aptstory-page .as-options th,.web-body.aptstory-page .as-options td{display:block;width:auto!important;border:0;padding:0;font-size:14px;line-height:1.85}.web-body.aptstory-page .as-options tbody th{font-size:16px}.web-body.aptstory-page .as-options td{margin-top:12px}.web-body.aptstory-page .web-table-label{display:block;font-size:12px;font-weight:600;color:#5a6d60;margin-bottom:4px}.web-body.aptstory-page .as-byte-row{gap:3px;font-size:14px}.web-body.aptstory-page .as-byte-row span{padding:8px 0}.web-body.aptstory-page .as-byte-brackets{column-gap:3px}.web-body.aptstory-page .as-readers{grid-template-columns:1fr;gap:16px}.web-body.aptstory-page .as-readers>div+div{border-top:1px solid #d9e1d8;padding-top:14px}}

/* Necto: readable real captures and non-overlapping labels in the sequence diagram. */
.web-body.necto-page .necto-capture>figcaption{font-size:16px;line-height:1.7;margin-bottom:16px}.web-body.necto-page .necto-crops{gap:24px;grid-template-columns:1fr 1fr}.web-body.necto-page .necto-crops b{font-size:14px;line-height:1.7;margin-bottom:10px}.web-body.necto-page .necto-crops svg{max-height:none;height:auto;aspect-ratio:auto}.web-body.necto-page .necto-crops p{font-size:14px!important;line-height:1.8!important;margin:12px 0 0!important}.web-svg-capture{cursor:zoom-in;border-radius:4px;overflow:hidden}
.web-body.necto-page .necto-timing{padding:20px 0}.web-body.necto-page .necto-timing figcaption{font-size:16px;line-height:1.7;margin-bottom:18px}.web-body.necto-page .necto-timing small{display:block;font-size:12px;margin:5px 0 0;line-height:1.7}.web-body.necto-page .timing-pair{gap:24px}.web-body.necto-page .timing-pair b{font-size:14px;line-height:1.7}.web-body.necto-page .timing-track{grid-template-columns:repeat(12,minmax(0,1fr));grid-template-rows:36px 36px;row-gap:8px;font-size:12px;line-height:36px;margin:16px 0 12px}.web-body.necto-page .alert-span{grid-column:1/8}.web-body.necto-page .exit-span{grid-column:5/13}.web-body.necto-page .timing-after .exit-span{grid-column:8/13;font-size:12px}.web-body.necto-page .timing-pair p{font-size:14px!important;line-height:1.8!important;margin:10px 0 0!important}.web-body.necto-page .necto-links{font-size:14px;line-height:1.8;flex-wrap:wrap;gap:14px 24px}.web-body.necto-page .spread-result{padding:20px;border-left:3px solid #23544f;background:#eef3ef}.web-body.necto-page .spread-result p{margin:9px 0 0!important}
@media(max-width:800px){.web-body.necto-page .necto-crops,.web-body.necto-page .timing-pair{grid-template-columns:1fr;gap:26px}.web-body.necto-page .necto-links{flex-direction:column;align-items:flex-start}}
/* Analytics: compare the definition and generated call sites at a readable size. */
.web-body.analytics-page .an-example{padding:20px 0}.web-body.analytics-page .an-example figcaption{font-size:16px;line-height:1.7;margin-bottom:18px}.web-body.analytics-page .an-example-grid{grid-template-columns:minmax(0,1fr) 25px minmax(0,1.8fr);gap:18px}.web-body.analytics-page .an-definition{padding:18px;min-width:0}.web-body.analytics-page .an-label{font-size:13px;line-height:1.6;margin-bottom:10px}.web-body.analytics-page .an-definition>code{font-size:16px}.web-body.analytics-page .an-definition dl{font-size:14px;line-height:1.7;grid-template-columns:42px minmax(0,1fr);gap:5px;margin-top:14px}.web-body.analytics-page .an-calls{min-width:0}.web-body.analytics-page .an-calls>div{margin:12px 0 0}.web-body.analytics-page .an-calls b{font-size:13px;margin-bottom:5px}.web-body.analytics-page .an-calls code{display:block;font-size:14px;line-height:1.8;padding:9px 10px;overflow-wrap:anywhere}.web-body.analytics-page .an-arrow{font-size:23px;text-align:center}.web-body.analytics-page .an-example>p{font-size:15px!important;line-height:1.8!important;margin:18px 0 7px!important}.web-body.analytics-page .an-example small{display:block;font-size:12px;line-height:1.8}.web-body.analytics-page .spread-result{padding:20px;border-left:3px solid #23544f;background:#eef3ef}.web-body.analytics-page .spread-result>span{font-size:14px;line-height:1.7}.web-body.analytics-page .spread-result p{margin:9px 0 0!important}
@media(max-width:800px){.web-body.analytics-page .an-example-grid{grid-template-columns:minmax(0,1fr);gap:14px}.web-body.analytics-page .an-arrow{display:block;transform:rotate(90deg);justify-self:center;line-height:1}.web-body.analytics-page .an-calls code{font-size:14px}}

.web-toc-disclosure{position:sticky;top:30px}.web-toc-disclosure nav{position:static}.web-toc-disclosure summary{font-size:13px;font-weight:600;color:#435c4e;cursor:pointer;line-height:1.7;padding-bottom:10px}.web-toc-disclosure summary span{font-size:12px;font-weight:400;color:#69766e;margin-left:8px}
@media(min-width:801px){.web-toc-disclosure summary{list-style:none}.web-toc-disclosure summary::-webkit-details-marker{display:none}}
@media(max-width:800px){.web-toc-disclosure{position:static;border-bottom:1px solid #d5ddd7;padding:6px 0}.web-toc{margin-bottom:28px}.web-toc-disclosure summary{font-size:14px;padding:6px 0}.web-toc-disclosure[open] summary{margin-bottom:8px}}

/* A small personal portrait accompanies the introduction, not the case cards. */
.web-intro{position:relative;max-width:none;padding-right:190px}
.web-portrait{position:absolute;right:0;top:62px;width:148px;height:148px;object-fit:cover;border-radius:10px}
@media(max-width:1100px){.web-intro{padding-right:0}.web-portrait{position:static;float:right;width:68px;height:68px;margin:0 0 12px 16px;border-radius:7px}.web-intro>.eyebrow{display:flex;align-items:center;min-height:68px}.web-intro h1{clear:both}}
