@font-face{font-family:'DM Sans';src:url('assets/fonts/DM-Sans.ttf') format('truetype');font-weight:100 1000;font-display:swap}
:root{--paper:#fafafc;--ink:#181922;--muted:#5c6070;--accent:#4338ca;--accent-hover:#30279b;--tint:#eaf0ff;--sky:#e3f0ff;--apricot:#ffe7d5;--lilac:#f0e9ff;--line:#cbd0de;--white:#ffffff;--serif:Georgia,serif;--sans:'DM Sans',Arial,sans-serif;--mono:ui-monospace,SFMono-Regular,Consolas,monospace;--title:clamp(2rem,4vw,3.25rem);--body:1rem;--figure:clamp(3rem,6vw,5rem)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:2rem}body{margin:0;background:var(--paper);color:var(--ink);font:400 var(--body)/1.6 var(--sans)}body.modal-open{overflow:hidden}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}a:hover{text-decoration:underline;text-underline-offset:5px}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:5px}h1,h2,h3,p,dl,dd{margin:0}h1,h2,h3{font:400 var(--title)/1.12 var(--serif);letter-spacing:-.025em}img{display:block;max-width:100%}b,strong{font-weight:600}.wrap{width:min(100%,1240px);margin:auto;padding-inline:3rem}.nav{display:flex;justify-content:space-between;align-items:center;padding-block:1.5rem;border-bottom:1px solid var(--line);gap:1.5rem}.wordmark{font-weight:600}.nav nav{display:flex;gap:2rem}.skip{position:absolute;top:-100px;left:1rem;background:var(--ink);color:var(--white);padding:1rem;z-index:100}.skip:focus{top:1rem}.work{padding-block:3rem 5rem}.work>h1{margin-bottom:3rem}.feature-heading{display:flex;justify-content:space-between;align-items:center;gap:2rem;margin-bottom:1.5rem}.feature-heading h2{font:600 var(--body)/1.5 var(--sans);letter-spacing:0}.button{display:inline-flex;align-items:center;justify-content:center;gap:1.5rem;background:var(--accent);color:var(--white);border:1px solid var(--accent);border-radius:4px;padding:.75rem 1.25rem;min-height:48px}.button:hover{background:var(--accent-hover);border-color:var(--accent-hover);text-decoration:none}.feature-surface{display:grid;grid-template-columns:1fr 1fr;min-height:440px;background:var(--tint);border-radius:6px;overflow:hidden}.recovery{padding:3rem;display:flex;align-items:center;background:var(--accent);color:var(--white)}.recovery dl{display:grid;gap:.25rem}.recovery dt{font-size:var(--body)}.recovery dd{font:400 var(--figure)/1.3 var(--mono);letter-spacing:-.05em}.recovery dt:not(:first-child){margin-top:1.5rem}.closing-flow{padding:2rem;display:flex;flex-direction:column;align-items:center;justify-content:center}.flow-inputs{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap}.flow-inputs span,.flow-stage{background:var(--white);border:1px solid var(--line);border-radius:4px;padding:.65rem .85rem;text-align:center}.flow-stage{min-width:65%}.flow-stage.review{border:2px solid var(--accent);background:var(--apricot);color:var(--ink)}.flow-stage.output{background:var(--accent);color:var(--white);border-color:var(--accent)}.flow-arrow{font-size:1.5rem;line-height:1.5;color:var(--accent)}.gallery-heading{display:flex;justify-content:space-between;align-items:center;gap:2rem;margin:5rem 0 2rem}.gallery{display:grid;grid-template-columns:1fr 1fr;gap:3rem 2rem}.card{padding:0;border:0;text-align:left;background:none;display:flex;flex-direction:column;gap:1rem;min-width:0}.card:hover .card-title{text-decoration:underline;text-underline-offset:5px}.card-visual{width:100%;background:var(--tint);border-radius:4px;overflow:hidden;aspect-ratio:16/10;display:flex;align-items:center;justify-content:center;position:relative}.card-visual:has(img){aspect-ratio:16/9}.card-visual img{width:100%;height:100%;object-fit:contain}.card[data-project="bookings"] .card-visual{background:var(--sky)}.card[data-project="messages"] .card-visual{background:var(--lilac)}.card[data-project="zogo"] .card-visual{background:var(--apricot)}.card-title{font-weight:600;display:flex;justify-content:space-between;width:100%;gap:1rem}.demo-visual{padding:1.5rem;width:100%;font-size:var(--body)}.sample-heading{margin-bottom:1rem;color:var(--muted)}.home-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;padding:.75rem 0;border-top:1px solid var(--line)}.home-row span:last-child{text-align:right;font-weight:600}.message-bubble{background:var(--white);padding:.75rem 1rem;border-radius:4px;margin-bottom:.5rem}.message-result{padding:.75rem 0 0;font-weight:600}.support-steps{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.5rem;margin-top:1.5rem}.support-steps span{border:1px solid var(--line);background:var(--white);padding:.5rem;border-radius:4px}.support-steps i{font-style:normal}.about{border-top:1px solid var(--line);padding-block:3rem;display:grid;grid-template-columns:1fr 2fr;gap:3rem}.profile{display:grid;gap:1.5rem}.profile>div{display:grid;grid-template-columns:1fr 2fr;gap:2rem}.profile dt,.tool-list dt{font-weight:600}.tools-section{padding-bottom:3rem}.tools-section details{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}summary{cursor:pointer;padding:1rem 0;min-height:48px;font-weight:600}summary:hover{text-decoration:underline;text-underline-offset:5px}.tool-list{display:grid;grid-template-columns:1fr 1fr;gap:2rem;padding-bottom:1.5rem}.contact{display:flex;justify-content:space-between;align-items:center;gap:2rem;padding-block:2rem 3rem}footer{display:flex;gap:2rem;padding-block:1.5rem;border-top:1px solid var(--line)}dialog{width:min(940px,calc(100% - 2rem));max-height:92dvh;border:1px solid var(--line);border-radius:6px;padding:0;background:var(--paper);color:var(--ink)}dialog::backdrop{background:rgb(24 25 34 / .65)}.dialog-top{position:sticky;top:0;z-index:3;background:var(--paper);display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;border-bottom:1px solid var(--line);gap:1rem}.dialog-top button{background:transparent;border:1px solid var(--line);border-radius:4px;padding:.5rem 1rem;min-height:44px}.case-header{padding:2rem}.case-body{padding:0 2rem 2rem}.case-image{width:100%;height:auto;border-radius:4px}.visit-link{display:inline-block;margin-block:1rem;text-decoration:underline;text-underline-offset:5px}.case-facts{display:flex;flex-wrap:wrap;gap:1rem 3rem;margin-block:2rem}.case-facts>div{flex:1;min-width:12rem}.case-facts dt{color:var(--muted)}.case-facts dd{font-weight:600}.case-facts .metric{font-family:var(--mono);font-size:2rem;line-height:1.4;font-weight:400;overflow-wrap:anywhere}.case-details{border-top:1px solid var(--line)}.case-details:last-child{border-bottom:1px solid var(--line)}.case-details>p,.case-details>dl{padding-bottom:1.5rem;max-width:68ch}.story{display:grid;gap:1.5rem}.story dt{font-weight:600}.story dd{margin-top:.25rem}.walkthrough{border:1px solid var(--line);border-radius:4px;background:var(--white);overflow:hidden}.walkthrough-label{padding:1rem 1.5rem;border-bottom:1px solid var(--line)}.step-tabs{display:grid;grid-template-columns:repeat(4,1fr);padding:1rem;gap:.5rem}.step-tabs button{padding:.75rem .25rem;min-height:48px;background:transparent;border:1px solid var(--line);border-radius:4px}.step-tabs button.active{background:var(--ink);color:var(--white);border-color:var(--ink)}.step-scene{padding:1.5rem;min-height:260px;display:flex;align-items:center;justify-content:center}.sample-records{display:grid;grid-template-columns:1fr 1fr;gap:1rem;width:100%}.sample-records div{padding:1.5rem;background:var(--paper);border:1px solid var(--line);border-radius:4px}.sample-records b{display:block;font:400 2rem/1.4 var(--mono);margin-top:.5rem}.ledger{width:100%;border-collapse:collapse}.ledger th,.ledger td{text-align:left;padding:.75rem .5rem;border-bottom:1px solid var(--line);font-weight:400}.ledger td{white-space:nowrap;text-align:right;font:400 2rem/1.4 var(--mono)}.ledger .total th,.ledger .total td{border-top:2px solid var(--ink);border-bottom:0}.review-record{width:100%}.review-record .review-status{display:flex;justify-content:space-between;gap:1rem;margin-top:1.5rem;padding:1rem;background:var(--tint);color:var(--accent);font-weight:600}.walk-controls{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-top:1px solid var(--line);gap:1rem}.walk-controls button{min-height:44px;padding:.5rem 1rem;border:1px solid var(--ink);border-radius:4px;background:var(--ink);color:var(--white)}.walk-controls button:disabled{background:transparent;color:var(--muted);border-color:var(--line);cursor:default}
@media(max-width:750px){.wrap{padding-inline:1.25rem}.nav{flex-wrap:wrap;gap:1rem}.nav nav{gap:1.5rem}.work{padding-block:2rem 3rem}.work>h1{margin-bottom:2rem}.feature-heading{align-items:flex-start;flex-direction:column;gap:1rem}.feature-surface{grid-template-columns:1fr}.recovery{padding:2rem}.recovery dl{grid-template-columns:1fr 1fr;width:100%;column-gap:1.5rem}.recovery dt:first-child{grid-column:1;grid-row:1}.recovery dd:nth-child(2){grid-column:1;grid-row:2}.recovery dt:nth-child(3){grid-column:2;grid-row:1;margin:0}.recovery dd:nth-child(4){grid-column:2;grid-row:2}.recovery dd{font-size:2.5rem}.closing-flow{padding:1.5rem 1rem}.gallery-heading{flex-direction:column;align-items:flex-start;margin-top:3rem;gap:1.5rem}.gallery{grid-template-columns:1fr;gap:2.5rem}.card-visual{aspect-ratio:auto;min-height:260px}.card-visual:has(img){min-height:0}.demo-visual{padding:1.25rem}.about{grid-template-columns:1fr;gap:2rem}.profile>div{grid-template-columns:1fr;gap:.25rem}.tool-list{grid-template-columns:1fr;gap:1.5rem}.contact{flex-direction:column;align-items:flex-start}.dialog-top{padding:1rem}.case-header{padding:1.5rem 1rem}.case-body{padding:0 1rem 1.5rem}.case-facts{flex-direction:column;gap:1rem}.step-tabs{gap:.25rem;padding:.5rem}.step-tabs button{padding:.5rem .125rem}.step-scene{padding:1rem;min-height:250px}.sample-records{grid-template-columns:1fr;gap:.5rem}.sample-records div{padding:1rem;display:flex;justify-content:space-between;align-items:center;gap:1rem}.sample-records b{font-size:1.5rem;margin:0}.ledger td{font-size:1.5rem}.walk-controls{padding:1rem;gap:.5rem}.walk-controls button{padding:.5rem .75rem}.walkthrough-label{padding:1rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}
@media print{.nav,.contact,footer,dialog,.tools-section{display:none!important}.wrap{padding:0}.feature,.card{break-inside:avoid}.gallery{display:block}.card{margin-block:2rem}body{background:white}}

.case-body .card-visual:has(.it-visual){aspect-ratio:auto;min-height:0}.case-body .it-visual{padding:2rem}.it-visual .home-row:first-child{border-top:0}
/* Workflow artwork carries the explanation; the original site palette stays. */
.feature-surface{display:block;min-height:0;background:var(--sky)}
.workflow-diagram{width:100%;max-height:620px;object-fit:contain}
.card-visual.diagram-surface{aspect-ratio:3/2;background:var(--sky)}
.project-purpose{font:400 1.125rem/1.5 var(--sans);max-width:64ch}
.feature>.project-purpose,.case-body>.project-purpose{margin-top:1.25rem}
.about{grid-template-columns:minmax(180px,280px) 1fr;align-items:center;gap:4rem}
.portrait{width:100%;height:360px;object-fit:cover;object-position:center 35%;border-radius:6px}
.about-copy h2{margin-bottom:2rem}
@media(max-width:750px){.about{grid-template-columns:1fr;gap:2rem}.portrait{width:220px;height:290px}.project-purpose{font-size:1rem}.card-visual.diagram-surface{min-height:0}.workflow-diagram{max-height:none}.profile>div{grid-template-columns:1fr}}

.project-group+.project-group{margin-top:5rem}.group-title{margin-bottom:2rem}.project-group:first-child .group-title{font:600 1rem/1.5 var(--sans);letter-spacing:0;color:var(--muted)}.card-visual.diagram-surface{aspect-ratio:8/5}.feature-surface .workflow-diagram{max-height:510px}.card-title{font-weight:400}.feature-heading h2{font-weight:400}

.card-visual picture,.case-workflow picture,.feature-surface picture{display:block;width:100%}.case-workflow img{width:100%}.card-visual picture{height:100%}@media(max-width:1000px){.gallery{grid-template-columns:1fr}}@media(max-width:600px){.card-visual.diagram-surface{aspect-ratio:4/5}.feature-surface .workflow-diagram{max-height:none}.gallery-heading{gap:1.5rem}.group-title{margin-bottom:1.5rem}}

.case-story{max-width:65ch}.case-section{padding-block:1.5rem;border-top:1px solid var(--line)}.case-section h3{font:600 1rem/1.5 var(--sans);letter-spacing:0;margin-bottom:.65rem}.case-section p{font:400 1rem/1.65 var(--sans)}.case-section:last-child{padding-bottom:.5rem}

/* Navigation keeps supporting links together without competing with the work. */
html{scroll-padding-top:8rem}
.nav{position:sticky;top:0;z-index:5;background:var(--paper);display:grid;grid-template-columns:auto 1fr auto;gap:2rem;padding-block:1rem}
.nav nav{justify-content:flex-end;gap:1.5rem;align-items:center}
.nav a{white-space:nowrap}.nav-contact{padding:.6rem 1rem}
.nav-toggle,.term-toggle{border:0;background:none;padding:0;min-height:44px;text-align:left}
.nav-toggle{display:flex;align-items:center;gap:.5rem}
.nav-toggle svg{transition:transform 160ms ease}
.nav-dropdown,.expertise-term{position:relative}
.nav-links{position:absolute;top:100%;right:0;min-width:190px;padding:.5rem;background:var(--white);border:1px solid var(--line);border-radius:8px;box-shadow:0 12px 30px rgb(24 25 34 / .1);opacity:0;visibility:hidden;transform:translateY(-5px) scale(.98);transform-origin:top right;transition:opacity 160ms ease,transform 160ms ease,visibility 160ms}
.nav-links a{display:flex;justify-content:space-between;gap:2rem;padding:.6rem .75rem;min-height:44px;border-radius:4px;transition:background 140ms ease,color 140ms ease}
.nav-links a:hover,.nav-links a:focus-visible{background:var(--tint);color:var(--accent);text-decoration:none}
.nav-dropdown.is-open .nav-links{opacity:1;visibility:visible;transform:translateY(0) scale(1)}
.nav-dropdown.is-open .nav-toggle svg{transform:rotate(180deg)}
.expertise-list{list-style:none;margin:0;padding:0;display:grid;gap:.25rem}.expertise-list li{white-space:nowrap;width:fit-content}
.term-toggle{text-decoration:underline;text-decoration-style:dotted;text-decoration-color:var(--line);text-underline-offset:5px;transition:color 160ms ease,text-decoration-color 160ms ease}
.expertise-term.is-open .term-toggle{color:var(--accent);text-decoration-color:var(--accent)}
.term-meaning{position:absolute;bottom:100%;left:0;z-index:6;padding:.65rem .85rem;background:var(--ink);color:var(--white);border-radius:6px;font-size:.875rem;line-height:1.5;white-space:normal;width:max-content;max-width:min(340px,calc(100vw - 2.5rem));box-shadow:0 6px 20px rgb(24 25 34 / .1);visibility:hidden;opacity:0;transform:translateY(5px);transition:opacity 160ms ease,transform 160ms ease,visibility 160ms}
.expertise-term.is-open .term-meaning{visibility:visible;opacity:1;transform:translateY(0)}
.tools-section{border-top:1px solid var(--line);padding-block:3rem 4rem}.tools-section h2{margin-bottom:2rem}.tool-list{padding:0}.tool-list dt{margin-bottom:.5rem}.tool-list dd{max-width:40ch}
.contact{padding-block:3rem 4rem}
@media(max-width:750px){.nav{grid-template-columns:1fr auto;gap:.5rem 1rem}.nav .wordmark{grid-column:1;grid-row:1}.nav-contact{grid-column:2;grid-row:1}.nav nav{grid-column:1/-1;grid-row:2;justify-content:flex-start;gap:1.5rem}.nav-links{right:auto;left:0;transform-origin:top left}html{scroll-padding-top:10rem}}
@media(max-width:600px){.nav nav{font-size:.875rem}.nav nav>a{display:flex;align-items:center;min-height:44px}.nav-contact{min-height:44px;padding:.4rem .75rem}.tools-section{padding-bottom:3rem}}
