/* Case studies and project archive: companion to the new portfolio. */
body:has(.page--doc){background:#0b0e0b;color:#dce2d4}
.page--doc{--blue:#b8c7aa;--ink:#e5e9df;--ink-soft:#d6decd;--ink-strong:#f0f3eb;--body:#bcc5b2;--body-2:#acb89f;--meta:#96a68a;--rule:#ffffff26;--rule-hair:#ffffff1b;--rule-strong:#ffffff33;--serif:'IBM Plex Sans',sans-serif;--mono:'IBM Plex Sans',sans-serif;padding-top:0;background:#0b0e0b;font-family:'IBM Plex Sans',sans-serif;min-height:100vh}
.page--doc .shell{max-width:1380px;width:88%;padding-inline:0;margin-inline:auto}
.page--doc .doc__top{padding-top:30px;padding-bottom:75px}
.page--doc .doc__nav{padding-bottom:70px;grid-column:1/-1}
.page--doc .doc__back{font-size:13px;letter-spacing:0;text-transform:none}
.page--doc .langswitch{border-color:#ffffff35}
.page--doc .langswitch__btn{color:#bcc6b2;font-size:11px;min-width:36px}
.page--doc .langswitch__btn[aria-current=true]{background:#dce0d5;color:#273222}
.page--doc .doc__title{font-size:clamp(52px,6.4vw,96px);line-height:1.05;font-weight:400;letter-spacing:-.06em;max-width:12ch}
.page--doc .doc__lede{font-size:19px;line-height:1.75;color:#b7c1ab;max-width:57ch;margin-top:28px}
.page--doc .doc__top:has(.case-cover){display:grid;grid-template-columns:1fr 1.2fr;column-gap:7%;align-items:center}
.page--doc .doc__top:has(.case-cover) .doc__title{grid-column:1;grid-row:2;align-self:end}
.page--doc .doc__top:has(.case-cover) .doc__lede{grid-column:1;grid-row:3;font-size:17px;align-self:start}
.page--doc .case-cover{grid-column:2;grid-row:2/4;position:relative;width:100%;height:auto;aspect-ratio:1.35;margin:0;padding:9%;border:1px solid #ffffff0e;border-radius:10px;background:#28352e;display:flex;align-items:center;overflow:hidden}
.page--doc .case-cover img{display:block;width:100%;height:auto;max-height:100%;object-fit:contain;filter:none;border-radius:5px;box-shadow:0 24px 40px #0005}
.page--doc .doc__meta{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,1fr);gap:25px;margin-top:55px;padding:26px 0;border-top:1px solid #ffffff29;border-bottom:1px solid #ffffff29}
.page--doc .doc__meta dt{text-transform:none;letter-spacing:0;font-size:11px;color:#8f9e83;margin-bottom:8px}
.page--doc .doc__meta dd{font-size:13px;color:#d0d9c6;line-height:1.6}
.page--doc .section{padding-block:55px;border-top:0}
.page--doc .head{display:block;padding:0;margin:0 0 28px}
.page--doc .head__folio{display:none}
.page--doc .head__title{font-size:clamp(28px,3vw,42px);font-weight:400;line-height:1.16;letter-spacing:-.045em;max-width:18ch;padding:0}
.page--doc .head__note{font-size:14px;line-height:1.75;color:#9eae91;max-width:50ch;margin:18px 0 0}
.page--doc:has(.case-cover) main>.section.shell{display:grid;grid-template-columns:1fr 1.65fr;column-gap:9%;align-items:start}
.page--doc:has(.case-cover) main>.section.shell>.head{grid-column:1;position:sticky;top:30px}
.page--doc:has(.case-cover) main>.section.shell>:not(.head){grid-column:2;min-width:0}
.page--doc .doc__body{font-size:16px;line-height:1.85;max-width:72ch;gap:24px}
.page--doc .doc__body p{font-size:16px;line-height:1.85;color:#b7c2ab}
.page--doc .doc__body h3{font-size:23px;line-height:1.4;letter-spacing:-.025em;margin-top:12px}
.page--doc .doc__body a{color:#d4e0c5;text-decoration-color:#768968;text-underline-offset:5px}
.page--doc .doc__caveat{background:#171e14;border-left:2px solid #8d9f7d;padding:20px 24px;border-radius:0 7px 7px 0}
.page--doc code{font-family:'IBM Plex Mono',monospace;font-size:.8em;background:#1d2519;border-radius:3px;padding:2px 5px}
.page--doc pre{max-width:100%;overflow:auto;padding:24px;background:#151d13;border:1px solid #ffffff17;border-radius:8px}
.page--doc table{font-size:13px;line-height:1.65;width:100%;display:block;overflow-x:auto}
.page--doc .decision{background:#192216;padding:45px 0;margin-block:30px;border:0}
.page--doc .decision .shell{max-width:1100px}
.page--doc .decision__title{font-weight:400;letter-spacing:-.035em;font-size:36px}
.page--doc .decision__body{font-size:16px;line-height:1.8}
.page--doc .doc__end{max-width:none;width:100%;padding:65px 6%;margin-top:65px;background:#dce0d5;color:#283321;border:0}
.page--doc .doc__endrule{display:none}
.page--doc .doc__related{color:#4c5d40;max-width:60ch;font-size:14px;line-height:1.8}
.page--doc .doc__related a{color:#334529}
.page--doc .doc__endnote{font-size:clamp(28px,3vw,44px);line-height:1.2;font-weight:400;letter-spacing:-.04em;color:#263321;max-width:25ch;margin:25px 0}
.page--doc .doc__endcta{display:flex;gap:15px;flex-wrap:wrap}
.page--doc .btn{font-family:inherit;text-transform:none;letter-spacing:0;font-size:13px;min-height:48px;border-radius:4px;padding:13px 22px}
.page--doc .doc__end .btn--solid{background:#263521;color:#edf1e6;border-color:#263521}
.page--doc .doc__end .btn--ghost{color:#35492b;border-color:#859577}
.page--doc .doc__date{font-size:11px;color:#4e6142;margin-top:30px}
.page--doc #estudos .index{display:grid;grid-template-columns:repeat(3,1fr);gap:32px;margin-top:40px;list-style:none;counter-reset:none}
.page--doc #estudos .index__row{display:flex;flex-direction:column;align-items:stretch;gap:15px;border:0;padding:0}
.page--doc #estudos .index__row:before{content:'';display:block;width:100%;aspect-ratio:1.3;border-radius:8px;background:#26382c url('/uploads/didata.webp') center/86% auto no-repeat;margin-bottom:7px}
.page--doc #estudos .index__row:nth-child(2):before{background-color:#263339;background-image:url('/uploads/kyber-crm.webp')}
.page--doc #estudos .index__row:nth-child(3):before{background-color:#292f3d;background-image:url('/uploads/brava-dashboard.webp')}
.page--doc .index__kind{font-size:11px;text-transform:none;letter-spacing:0;color:#91a282}
.page--doc .index__name{font-size:34px;font-weight:400;letter-spacing:-.045em;line-height:1.2;margin-top:10px}
.page--doc .index__desc{font-size:14px;line-height:1.8;color:#afbca3}
.page--doc .index__tech{font-size:11px;color:#8f9f80}
.page--doc .link-out{font-size:12px;margin-top:auto;width:max-content;text-transform:none;letter-spacing:0;padding:10px 0;border-bottom:1px solid #ffffff30}
.page--doc .roster{gap:40px;margin-top:40px}
.page--doc .roster__standard{border-radius:8px;background:#192215;border:1px solid #ffffff1c;padding:35px}
.page--doc .roster__title{font-weight:400;font-size:26px;letter-spacing:-.03em}
.page--doc .roster__intro,.page--doc .roster__spec{font-size:14px;line-height:1.8}
.page--doc .log{max-width:850px;margin-left:auto}
.page--doc .log__entry{padding-block:45px;gap:20px}
.page--doc .log__title{font-size:clamp(26px,3vw,40px);line-height:1.2;letter-spacing:-.035em;font-weight:400}
.page--doc .log__body p{font-size:16px;line-height:1.85;color:#b6c2aa}
.page--doc .log__meta{font-size:11px;letter-spacing:0;text-transform:none;color:#8e9f80}
.page--doc .log__link{font-size:12px}
.page--doc a:focus-visible{outline:2px solid currentColor;outline-offset:5px}
@media(max-width:850px){.page--doc .doc__top:has(.case-cover){grid-template-columns:1fr;gap:0}.page--doc .doc__top:has(.case-cover) .doc__title{grid-row:2}.page--doc .doc__top:has(.case-cover) .doc__lede{grid-row:3;font-size:17px}.page--doc .case-cover{grid-column:1;grid-row:4;aspect-ratio:1.65;margin-top:35px;padding:6%}.page--doc .doc__meta{grid-template-columns:1fr 1fr;gap:25px;margin-top:30px}.page--doc:has(.case-cover) main>.section.shell{display:block}.page--doc:has(.case-cover) main>.section.shell>.head{position:static}.page--doc .doc__nav{padding-bottom:45px}.page--doc #estudos .index{grid-template-columns:1fr;gap:40px}.page--doc #estudos .index__row:before{aspect-ratio:1.65;background-size:80% auto}.page--doc .head__title{max-width:none}.page--doc .log{margin-left:0;max-width:100%}}
@media(max-width:500px){.page--doc .shell{width:calc(100% - 44px)}.page--doc .doc__title{font-size:54px}.page--doc .doc__lede{font-size:16px}.page--doc .doc__top{padding-top:23px;padding-bottom:30px}.page--doc .doc__nav{padding-bottom:37px}.page--doc .doc__meta{gap:23px 18px}.page--doc .doc__meta dd{font-size:12px}.page--doc .section{padding-block:35px}.page--doc .head__title{font-size:29px}.page--doc .doc__body p{font-size:15px;line-height:1.8}.page--doc .doc__caveat{padding:17px}.page--doc .doc__end{padding:45px 22px;margin-top:35px}.page--doc .doc__endnote{font-size:32px}.page--doc .roster__standard{padding:24px}.page--doc .doc__back{font-size:12px}.page--doc pre{padding:15px}.page--doc .case-cover{border-radius:6px}}
body:has(.page--doc){overflow-x:clip}
.page--doc{overflow:clip}
.page--doc .doc__end .btn--ghost:hover{background:#c6cebd;color:#35492b}
.page--doc .doc__end .btn--solid:hover{background:#34492b;color:#edf1e6}
