/* One deliberate reading rhythm, while preserving each PDF's text typography. */
body[data-page] main{padding-top:128px;padding-bottom:140px}
body[data-page] main>.section{padding:0!important;margin:0}
body[data-page] main>.section+.section{margin-top:152px}
body[data-page] .section .container{border:0;padding-bottom:0}
body[data-page=peripheric] .challenge-list{gap:136px}
body[data-page=anomaly] .anomaly-goal+.anomaly-goal{margin-top:112px}
/* Viewport-edge image positioning is intentional on both pages. */
.perspective,.unpattern-intro{overflow:clip}
.perspective-grid,.edge-grid{position:relative}
.erasure-art,.edge-art{position:absolute;right:calc((min(1140px,100vw - 100px) - 100vw)/2);width:min(38vw,550px);max-width:none;top:50%;transform:translateY(-50%)}
.erasure-art img,.edge-art img{display:block;width:100%;height:auto;object-fit:contain}
/* Anomaly uses its own violet family rather than Peripheric's greens. */
body[data-page=anomaly] .anomaly-card{background:#292438}
body[data-page=anomaly] .anomaly-card .card-detail{border-top-color:#7f7392}
body[data-page=anomaly] .anomaly-card .disclosure{color:#c7afdb}
/* Identical full-width banner geometry on every project. */
body[data-page] .site-banner{height:360px;min-height:360px;margin:0;padding:0;border-block:1px solid var(--line);background:var(--surface);position:relative;overflow:hidden;isolation:isolate}
body[data-page] .site-banner>.container{height:100%;min-height:0;margin-inline:auto;padding:55px 0;border:0;background:transparent;position:relative;overflow:visible;isolation:auto}
body[data-page=anomaly] .site-banner>.container{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(280px,.7fr);gap:55px;align-items:center}
body[data-page=anomaly] .site-banner .counter{padding-block:20px}
body[data-page] .site-banner .closing-art{right:0;width:48%;height:100%;top:0;opacity:.62;mask-image:linear-gradient(90deg,transparent,#000 30%);pointer-events:none}
body[data-page=anomaly] .site-banner .anomaly-banner-art{width:40%;right:0}
body[data-page=unpattern] .site-banner:after{background:linear-gradient(90deg,var(--surface) 34%,transparent 75%)}
@media(max-width:1000px){.erasure-art,.edge-art{right:calc((100% - 100vw)/2);width:38vw}}
@media(max-width:800px){body[data-page] main{padding-top:88px;padding-bottom:96px}body[data-page] main>.section+.section{margin-top:104px}.erasure-art,.edge-art{position:relative;top:auto;right:auto;transform:none;width:calc(100% + 32px);max-width:none;justify-self:start}.perspective-grid{grid-template-columns:1fr}.perspective-grid>div{max-width:640px}body[data-page] .site-banner{height:560px;min-height:560px}body[data-page] .site-banner>.container{padding-block:48px;display:flex;flex-direction:column;justify-content:center;align-items:start;gap:32px}body[data-page=anomaly] .site-banner>.container{display:flex;gap:28px}body[data-page=anomaly] .site-banner .counter{width:100%;padding:25px 0 0;border-left:0;border-top:1px solid var(--line)}body[data-page] .site-banner .closing-art{width:75%;opacity:.36}body[data-page=anomaly] .site-banner .anomaly-banner-art{width:70%}.closing-copy{max-width:100%}}
@media(max-width:700px){.erasure-art,.edge-art{width:calc(100% + 20px)}body[data-page=peripheric] .challenge-list{gap:88px}body[data-page=anomaly] .anomaly-goal+.anomaly-goal{margin-top:80px}}
body[data-page] .site-banner>.closing-art{position:absolute;inset:0 0 0 auto;height:100%;z-index:0}
body[data-page] .site-banner>.anomaly-banner-art{position:absolute;inset:0 0 0 auto;height:100%}
