/* The open-source shelf: an engineering workshop with three distinct tools. */
[data-page="open-source"]{--craft-accent:#565280;--craft-soft:#e3dff3;--craft-pop:#dbd0f5;--craft-dark:#30384d;--craft-rule:#c5c1d7}
.os-page .os-hero h1{font-size:clamp(50px,5.8vw,84px)}
.os-page .os-hero>.os-two{align-items:center;gap:65px}
.craft-repo-art{height:440px;margin:0 5px 15px}
.craft-repo-tab{position:absolute;inset:12px 25px 35px;background:#30394d;border:1px solid #535e78;border-radius:15px;transform:rotate(-5deg);padding:32px;color:#f2eff7;box-shadow:0 22px 40px -25px #26294077}
.craft-repo-tab>span:first-child{font-size:8px;letter-spacing:1.1px;color:#c7bde4}.craft-repo-tab>b{display:block;font-size:38px;letter-spacing:-1.5px;font-weight:500;line-height:1.1;margin-top:18px}.craft-repo-braces{position:absolute;top:52px;right:32px;font:55px Georgia,serif;color:#9b8ebc;letter-spacing:-10px}
.craft-repo-file{position:absolute;left:0;right:12%;top:195px;padding:21px 24px;background:#e0d1f2;border:1px solid #b59acb;transform:rotate(-2deg);border-radius:7px;box-shadow:0 10px 15px -10px #29203244;display:grid;grid-template-columns:1fr auto;gap:8px}
.craft-repo-file>span{font-size:7px;letter-spacing:.9px;grid-column:1;color:#694e7d}.craft-repo-file>b{font-size:23px;font-weight:500;letter-spacing:-.7px;color:#473354}.craft-repo-file>i{font:italic 24px Georgia,serif;grid-column:2;grid-row:1/3;align-self:center;color:#7c5998}
.craft-repo-file:nth-of-type(4){top:275px;left:5%;right:7%;background:#d9e8cc;border-color:#a8c095;transform:rotate(2deg)}.craft-repo-file:nth-of-type(4)>span,.craft-repo-file:nth-of-type(4)>b,.craft-repo-file:nth-of-type(4)>i{color:#45613c}
.craft-repo-file:nth-of-type(5){top:350px;left:10%;right:2%;background:#f3dac4;border-color:#d0b190;transform:rotate(-2deg)}.craft-repo-file:nth-of-type(5)>span,.craft-repo-file:nth-of-type(5)>b,.craft-repo-file:nth-of-type(5)>i{color:#775434}
.craft-repo-sticker{position:absolute;right:-5px;top:112px;display:flex;flex-direction:column;justify-content:center;width:110px;height:110px;border-radius:50%;background:#cafd78;transform:rotate(12deg);text-align:center;font-size:13px;line-height:1.3;color:#35482c}.craft-repo-sticker em{font-size:16px}
.os-page .os-selector{display:grid;grid-template-columns:1fr 1fr 1fr;gap:18px;border:0;background:transparent;padding:0 0 65px;box-shadow:none;transform:none}
.os-page .os-selector header{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:20px;border:0;padding:0 0 10px}.os-page .os-selector header>b{font-size:20px}.os-page .os-selector>a{padding:26px;background:#e4ddf1;border:1px solid #c7b7d9;border-radius:12px;transition:transform .2s}.os-page .os-selector>a:nth-of-type(2){background:#e2ecd7;border-color:#c3d2b1}.os-page .os-selector>a:nth-of-type(3){background:#f4dfc9;border-color:#dcc1a6}.os-page .os-selector>a:hover{transform:translateY(-5px)}.os-page .os-selector>a>strong{font-size:25px}.os-page .os-selector>a>p{font-size:13px}
.os-page .os-omniophp{background:#e9e2f4}.os-page .os-mail-migrator{background:#e5eedc}.os-page .os-aocaptcha{background:#f4e4d4}
.os-page .os-project-heading{padding-bottom:25px;border-bottom:1px solid #c7c7b7;margin-bottom:45px}
.os-page .os-project-band h2{font-size:clamp(48px,5.5vw,78px);font-weight:700;letter-spacing:-.06em}
.os-page .os-flow{border-radius:13px;transform:rotate(2deg);box-shadow:11px 13px 0 #cec3de;background:#fffcf7;position:relative}
.os-page .os-flow:before{content:"{ }";font:38px Georgia,serif;display:block;margin-bottom:22px;color:#78638f;letter-spacing:-3px}
.os-page .os-mail-migrator .os-flow{transform:rotate(-2deg);box-shadow:11px 13px 0 #c5d5b7}.os-page .os-mail-migrator .os-flow:before{content:"in → out";font-size:30px;color:#59734a}
.os-page .os-aocaptcha .os-flow{box-shadow:11px 13px 0 #e5cdb3}.os-page .os-aocaptcha .os-flow:before{content:"↘ □ ↗";color:#977047;font-size:35px}
.os-page .os-evaluate{gap:22px}.os-page .os-evaluate article{background:#f3f0e8;border:1px solid #d6cdbd;padding:30px;border-radius:13px}.os-page .os-evaluate h3{font-weight:650;font-size:28px}
.os-page .os-practical{background:#2d354a}.os-page .os-close{background:#ded6ed;border-radius:24px;margin-block:75px 85px;padding:70px 40px}.os-page .os-close h2{font-weight:700;font-size:clamp(42px,5vw,72px)}

/* OmnioPHP: ink, lilac, and the structure of code. */
[data-page="open-source/omniophp"]{--craft-accent:#66518a;--craft-soft:#e8dff5;--craft-pop:#e0d1f7;--craft-dark:#2d3148;--craft-rule:#c6b5da}
.op-page .op-hero h1{font-size:clamp(48px,5.4vw,78px)}.op-page .op-hero>.op-two{align-items:center}
.op-page .op-editor{border-radius:13px;transform:rotate(2deg);box-shadow:14px 17px 0 #d5c8e7,0 25px 45px -25px #30284666;border-color:#817391}
.op-page .op-editor:before{content:"● ● ●";display:block;padding:13px 22px;color:#b9a8d2;font-size:8px;letter-spacing:4px;background:#292d40;border-radius:12px 12px 0 0;border-bottom:1px solid #5d5670}
.op-page .op-response{border-radius:7px;background:#e8efd9;border-color:#afc594;box-shadow:7px 8px 0 #cbd8ba}
.op-page .op-facts{background:#e3d8f0;border:1px solid #c5b3d9;border-radius:12px;padding:25px;margin-top:45px}
.op-page .op-capability-band{background:#e6ddf1}.op-page .op-capabilities{gap:22px}.op-page .op-capabilities article{background:#fffbf5;border:1px solid #cbbadf;border-radius:13px;padding:28px}.op-page .op-capabilities article:nth-child(even){background:#f3eff9}
.op-page .op-capabilities h3{font-size:29px;font-weight:650}.op-page .op-trial{border-radius:16px;overflow:hidden;border:1px solid #bfc5ad;box-shadow:0 20px 35px -28px #2b3a2666}
.op-page .op-start-band{background:#2d3148}.op-page .op-fit{background:#f1e8d7;padding:30px;border:1px solid #d4c3a7;border-radius:12px}.op-page .op-close{background:#e0d3f0;border-radius:24px;padding:75px 40px;margin-bottom:85px}.op-page .op-close h2{font-size:clamp(43px,5vw,72px);font-weight:700}

/* MailMigrator: an organised correspondence desk. */
[data-page="open-source/mail-migrator"]{--craft-accent:#3f6a5a;--craft-soft:#dcebdd;--craft-pop:#cfe6b8;--craft-dark:#29473d;--craft-rule:#b3cbb8}
.mm-page .rp-hero h1{font-size:clamp(51px,5.8vw,83px)}
.mm-page .mm-ledger{transform:rotate(-3deg);border-radius:9px;background:#fffdf2;box-shadow:13px 15px 0 #c7d9bd,0 22px 40px -30px #2c483c66;position:relative}
.mm-page .mm-ledger:before{content:"";position:absolute;top:-12px;left:37%;width:95px;height:25px;background:#d0bcd699;transform:rotate(8deg)}
.mm-page .mm-message{border-radius:8px;background:#f0f5e7;margin-block:13px;padding:18px;border:1px solid #c9d8bd}
.mm-page .mm-engine-band{background:#29463d}.mm-page .mm-terminal{border-radius:12px;box-shadow:8px 12px 0 #476d55;overflow:hidden}
.mm-page .rp-soft{background:#e0ead7}.mm-page .rp-close{background:#d4e6c8}

/* AOCaptcha: playful geometry with a precise server-side story. */
[data-page="open-source/aocaptcha"]{--craft-accent:#8a4c64;--craft-soft:#f0dce5;--craft-pop:#f5cfbc;--craft-dark:#483241;--craft-rule:#d5b5c4}
.ca-page .rp-hero h1{font-size:clamp(45px,5.1vw,74px)}
.ca-page .ca-demonstration{background:#fff9ed;border:1px solid #cbb09e;border-radius:15px;transform:rotate(2deg);box-shadow:12px 14px 0 #e4c5d5,0 22px 40px -25px #4c2e3f55}
.ca-page .ca-boundary{border-radius:11px;background:#f1e4f7;border-color:#bd9cce}
.ca-page .ca-token{border-radius:8px;background:#e4edcc;border-color:#b4c68e}
.ca-page .ca-analysis-band{background:#493342}.ca-page .ca-samples{border-radius:12px;overflow:hidden;box-shadow:8px 10px 0 #715063}.ca-page .ca-integration{border-radius:13px;background:#f5e7dc;padding:30px;border:1px solid #dbc2ae}.ca-page .rp-soft{background:#ecdce6}.ca-page .rp-close{background:#f0d5df}
.rp-page .rp-close{border-radius:24px;padding:75px 40px;margin-bottom:85px}.rp-page .rp-close h2{font-size:clamp(43px,5vw,72px);font-weight:700}

/* MOAT: an archival research folio. */
[data-page="work/moat"]{--craft-accent:#3f6452;--craft-soft:#dce7d6;--craft-pop:#d8e9b5;--craft-dark:#293d32;--craft-rule:#b7c9af}
.mt-page .mt-hero h1{font-size:clamp(50px,5.7vw,82px)}
.mt-page .mt-folio{background:#fffbef;transform:rotate(3deg);border-radius:8px;box-shadow:14px 17px 0 #c5d3b9,0 28px 45px -30px #293d3255;border-color:#b6c39e;position:relative}
.mt-page .mt-folio:before{content:"RESEARCH / FIELD NOTES";display:block;padding:15px 0 20px;font-size:8px;letter-spacing:1.8px;color:#708358;border-bottom:1px solid #cfdbc0;margin-bottom:22px}
.mt-page .mt-inputs{border-radius:12px;background:#efe7d5;border-color:#cfbea2;transform:rotate(-1deg)}
.mt-page .mt-engineering{background:#dce8d0}.mt-page .mt-pipeline{gap:22px}.mt-page .mt-pipeline>article,.mt-page .mt-pipeline>li{background:#fffbf0;border:1px solid #bdcfa8;border-radius:12px;padding:27px}
.mt-page .mt-mapping{border-radius:13px;overflow:hidden;box-shadow:8px 10px 0 #e0d2bb}
.mt-page .mt-compute-band{background:#293e33;color:#f4f5e9}.mt-page .mt-compute-band .eyebrow{color:#cce2ab}.mt-page .mt-compute-band p{color:#d5e0ce}
.mt-page .mt-compute{border-radius:13px;background:#f4f1e5;color:#31432d;padding:30px}.mt-page .mt-compute p{color:#53624a}
.mt-page .mt-decisions{gap:22px}.mt-page .mt-decisions article{border:1px solid #c6cdb9;border-radius:12px;background:#eef1e5;padding:28px}
.mt-page .mt-close{background:#dce8cb;border-radius:24px;padding:75px 40px;margin-bottom:85px}.mt-page .mt-close h2{font-weight:700;font-size:clamp(43px,5vw,72px)}

@media(max-width:1100px){.os-page .os-hero>.os-two{gap:40px}.craft-repo-tab{padding:26px}.craft-repo-tab>b{font-size:33px}.craft-repo-braces{right:23px;font-size:45px}.craft-repo-file{padding:20px}.craft-repo-sticker{width:95px;height:95px;font-size:11px}.os-page .os-selector>a{padding:23px}.os-page .os-selector>a>strong{font-size:23px}}
@media(max-width:800px){.os-page .os-hero>.os-two{gap:40px}.craft-repo-art{width:min(100%,530px);justify-self:center;margin-right:12px}.os-page .os-selector{grid-template-columns:1fr;gap:13px;margin-right:auto;padding-bottom:55px}.os-page .os-selector>a{display:grid;grid-template-columns:1fr 1fr;gap:8px 20px;align-items:center}.os-page .os-selector>a>span{grid-column:1}.os-page .os-selector>a>strong{grid-column:1;margin:0}.os-page .os-selector>a>p{grid-column:2;grid-row:1/3;margin:0}.os-page .os-flow,.op-page .op-editor,.mt-page .mt-folio,.mm-page .mm-ledger,.ca-page .ca-demonstration{transform:rotate(1deg);margin-right:14px}.os-page .os-mail-migrator .os-flow{transform:rotate(-1deg)}.os-page .os-evaluate{grid-template-columns:1fr}.op-page .op-fit,.ca-page .ca-integration{padding:25px}.op-page .op-close,.rp-page .rp-close,.mt-page .mt-close,.os-page .os-close{padding:65px 35px}}
@media(max-width:560px){
 .os-page .os-hero h1,.op-page .op-hero h1,.mm-page .rp-hero h1,.ca-page .rp-hero h1,.mt-page .mt-hero h1{font-size:clamp(40px,10.5vw,58px)}.craft-repo-art{height:400px;margin-inline:3px}.craft-repo-tab{inset:10px 20px 25px;padding:25px}.craft-repo-tab>b{font-size:32px}.craft-repo-tab>span:first-child{font-size:6px}.craft-repo-braces{right:25px;top:62px;font-size:42px}.craft-repo-file{top:168px;padding:18px}.craft-repo-file>b{font-size:22px}.craft-repo-file>span{font-size:6px}.craft-repo-file>i{font-size:21px}.craft-repo-file:nth-of-type(4){top:245px}.craft-repo-file:nth-of-type(5){top:320px}.craft-repo-sticker{right:0;top:90px;width:90px;height:90px;font-size:10px}.craft-repo-sticker em{font-size:14px}.os-page .os-selector header{display:block}.os-page .os-selector header>b{display:block;font-size:22px;margin-top:10px}.os-page .os-selector>a{display:block;padding:23px}.os-page .os-selector>a>strong{margin-top:12px;font-size:26px}.os-page .os-selector>a>p{margin-top:10px}.os-page .os-project-heading{margin-bottom:30px}.os-page .os-project-band h2{font-size:47px}.os-page .os-flow{padding:25px;box-shadow:7px 9px 0 #cec3de}.os-page .os-mail-migrator .os-flow{box-shadow:7px 9px 0 #c5d5b7}.os-page .os-aocaptcha .os-flow{box-shadow:7px 9px 0 #e5cdb3}
 .op-page .op-editor,.mt-page .mt-folio,.mm-page .mm-ledger,.ca-page .ca-demonstration{box-shadow:7px 10px 0 var(--craft-rule);margin-right:10px}.op-page .op-capabilities article{padding:25px}.op-page .op-facts{padding:22px}.mm-page .mm-message{padding:15px}.mt-page .mt-compute{padding:24px}.mt-page .mt-decisions article{padding:25px}
 .op-page .op-close,.rp-page .rp-close,.mt-page .mt-close,.os-page .os-close{padding:55px 25px;border-radius:16px;margin-bottom:55px}.op-page .op-close h2,.rp-page .rp-close h2,.mt-page .mt-close h2,.os-page .os-close h2{font-size:40px}
}

.mt-page .mt-engineering{color:#294331}.mt-page .mt-engineering p{color:#465b47}.mt-page .mt-engineering .eyebrow,.mt-page .mt-engineering article>span,.mt-page .mt-engineering article>b{color:#536e40}

.os-page .os-close :is(p,.eyebrow),.op-page .op-close :is(p,.eyebrow),.rp-page .rp-close :is(p,.eyebrow){color:#4d4d50}.op-page .op-facts span{color:#5c506c}
