:root{--category-accent:#ff3d16}
html{scroll-behavior:smooth}
body.category-page{background:var(--paper);color:var(--ink);overflow-x:hidden}
body.category-page main{opacity:0;transform:translateY(10px);transition:opacity .55s ease,transform .7s cubic-bezier(.16,1,.3,1)}
body.category-page.category-ready main{opacity:1;transform:none}
.category-page .site-head{position:fixed;z-index:120;background:rgba(239,238,233,.96);border-bottom:1px solid rgba(23,24,22,.12)}
.category-page .site-head.is-compact{height:76px;background:#efeee9}
.category-page .identity-copy{white-space:nowrap}
.category-page .header-contact{text-decoration:none;color:inherit;text-transform:uppercase;font:500 12px/1 DM Mono,monospace;letter-spacing:.05em}
.category-page .index-panel{z-index:110}
.category-page .index-panel nav [aria-current="page"] b:after{background:var(--signal)}
.category-page .page-transition{z-index:300}

.architecture-practice{position:relative;min-height:100vh;padding-top:160px;padding-bottom:110px;background:var(--paper);color:var(--ink)}
.architecture-practice:before{content:"";position:absolute;left:0;top:100px;width:100%;height:4px;background:var(--category-accent)}
.architecture-practice .practice-route{margin:0 0 clamp(70px,9vw,130px);font:500 10px/1.6 DM Mono,monospace;text-transform:uppercase}
.architecture-practice>.section-head h2{font-size:clamp(42px,6.2vw,92px);font-weight:400;line-height:.9}
.architecture-practice .project:first-of-type{border-top:0}
.architecture-practice .practice-next{width:max-content;margin:54px 0 0 auto;display:flex;align-items:center;gap:15px;color:inherit;text-decoration:none;font:10px/1 DM Mono,monospace;text-transform:uppercase}
.architecture-practice .practice-next i{width:46px;height:46px;border:1px solid var(--ink);border-radius:50%;display:grid;place-items:center;font:15px/1 sans-serif;transition:transform .3s,background .3s,color .3s}
.architecture-practice .practice-next:hover i{transform:translateY(5px);background:var(--category-accent);color:var(--paper)}

.category-hero{min-height:100vh;padding:150px var(--pad) 56px;position:relative;display:grid;grid-template-columns:1fr 1.2fr .8fr;grid-template-rows:auto 1fr auto;gap:30px;overflow:hidden;border-bottom:1px solid var(--ink)}
.category-grid{position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(rgba(23,24,22,.13) 1px,transparent 1px),linear-gradient(90deg,rgba(23,24,22,.13) 1px,transparent 1px);background-size:8.333vw 112px;mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.category-kicker{position:relative;z-index:1;margin:20px 0 0;font:500 10px/1.6 DM Mono,monospace;text-transform:uppercase}
.category-hero h1{position:relative;z-index:2;grid-column:1/-1;align-self:center;width:100%;margin:4vh 0 2vh;font-size:clamp(56px,8vw,128px);font-weight:400;line-height:.86;letter-spacing:-.075em}
.category-hero h1 span{display:block;width:100%;white-space:nowrap}
.category-hero h1 .line-2{margin-left:10vw}
.category-hero h1 .line-3{margin-left:27vw}
.category-hero h1 i{position:absolute;right:1.5vw;bottom:-.05em;color:var(--category-accent);font-style:normal}
.category-intro{position:relative;z-index:2;align-self:end;margin:0;max-width:540px;font-size:clamp(18px,1.55vw,25px);line-height:1.45;letter-spacing:-.025em}
.category-lenses{position:relative;z-index:2;align-self:end;display:grid;border-top:1px solid var(--ink)}
.category-lenses span{display:flex;gap:16px;padding:11px 0;border-bottom:1px solid var(--line);font:400 11px/1.3 DM Mono,monospace;text-transform:uppercase}
.category-lenses i{min-width:24px;color:var(--category-accent);font-style:normal}
.category-scroll{position:relative;z-index:2;align-self:end;justify-self:end;display:flex;flex-direction:column;align-items:center;gap:12px;color:inherit;text-decoration:none;font:10px/1 DM Mono,monospace;text-transform:uppercase}
.category-scroll i{width:54px;height:54px;border:1px solid var(--ink);border-radius:50%;display:grid;place-items:center;font:16px/1 sans-serif;transition:background .3s,color .3s,transform .3s}
.category-scroll:hover i{background:var(--category-accent);color:var(--paper);transform:translateY(5px)}

.category-figure{position:absolute;right:8vw;top:16vh;width:clamp(180px,21vw,360px);aspect-ratio:1;z-index:1;color:var(--category-accent);opacity:.82;transform:rotate(-4deg)}
.category-figure span{position:absolute;display:block}
.figure-architecture{border:1px solid currentColor;background:linear-gradient(135deg,transparent 49.7%,currentColor 50%,transparent 50.3%)}
.figure-architecture span:nth-child(1){left:13%;right:13%;bottom:12%;height:1px;background:currentColor}
.figure-architecture span:nth-child(2){left:22%;bottom:12%;width:1px;height:58%;background:currentColor;transform:skewX(-16deg);transform-origin:bottom}
.figure-architecture span:nth-child(3){right:22%;bottom:12%;width:1px;height:58%;background:currentColor;transform:skewX(16deg);transform-origin:bottom}
.figure-architecture span:nth-child(4){left:31%;right:31%;top:24%;height:38%;border:1px solid currentColor;border-bottom:0;border-radius:50% 50% 0 0}
.figure-architecture span:nth-child(5){inset:8%;border:1px dashed currentColor;border-radius:50%;animation:category-spin 18s linear infinite}
.figure-pm{border:1px solid currentColor;border-radius:50%}
.figure-pm span{width:20%;aspect-ratio:1;border:1px solid currentColor;background:var(--paper);border-radius:50%}
.figure-pm span:nth-child(1){left:4%;top:42%}.figure-pm span:nth-child(2){left:40%;top:4%}.figure-pm span:nth-child(3){right:4%;top:42%}.figure-pm span:nth-child(4){left:40%;bottom:4%}.figure-pm span:nth-child(5){left:40%;top:40%;background:currentColor;box-shadow:0 0 0 18px color-mix(in srgb,currentColor 15%,transparent)}
.figure-pm:before,.figure-pm:after{content:"";position:absolute;inset:18%;border:1px dashed currentColor;transform:rotate(45deg)}.figure-pm:after{transform:rotate(-45deg)}
.figure-hci{border:1px solid currentColor;box-shadow:14px 14px 0 color-mix(in srgb,currentColor 13%,transparent)}
.figure-hci span:nth-child(1){inset:10% 10% auto;height:1px;background:currentColor;box-shadow:0 14px currentColor}
.figure-hci span:nth-child(2){left:12%;top:35%;width:46%;height:34%;border:1px solid currentColor}
.figure-hci span:nth-child(3){right:10%;top:35%;width:23%;height:23%;border:1px solid currentColor;border-radius:50%}
.figure-hci span:nth-child(4){right:14%;bottom:15%;width:44%;height:1px;background:currentColor;transform:rotate(-28deg);transform-origin:right}
.figure-hci span:nth-child(5){right:8%;bottom:12%;width:14px;height:14px;background:currentColor;border-radius:50%;animation:hci-pulse 1.8s ease-in-out infinite}
@keyframes category-spin{to{transform:rotate(360deg)}}
@keyframes hci-pulse{50%{transform:scale(1.7);box-shadow:0 0 0 12px color-mix(in srgb,currentColor 12%,transparent)}}

.category-evidence{padding:clamp(90px,11vw,170px) var(--pad);background:var(--ink);color:var(--paper)}
.category-section-head{display:grid;grid-template-columns:1fr auto;gap:30px;align-items:end;margin-bottom:clamp(55px,8vw,110px)}
.category-section-head>div{display:grid;grid-template-columns:64px 1fr;align-items:start}
.category-section-head span,.category-section-head>p{font:10px/1.5 DM Mono,monospace;text-transform:uppercase}
.category-section-head h2{max-width:1060px;margin:0;font-size:clamp(48px,7.2vw,112px);font-weight:400;line-height:.9;letter-spacing:-.065em}
.category-section-head>p{margin:0;text-align:right;opacity:.58}
.case-list{border-top:1px solid rgba(239,238,233,.35)}
.case-sheet{padding:42px 0 50px;border-bottom:1px solid rgba(239,238,233,.35)}
.case-sheet header{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:20px;align-items:start}
.case-sheet header>span,.case-sheet time,.case-sheet header p{font:10px/1.5 DM Mono,monospace;text-transform:uppercase}
.case-sheet header>span{color:var(--category-accent)}
.case-sheet h3{margin:0 0 8px;font-size:clamp(28px,3.3vw,52px);font-weight:400;line-height:1;letter-spacing:-.05em}
.case-sheet header p{margin:0;opacity:.55}
.case-sheet time{white-space:nowrap;opacity:.7}
.case-content{display:grid;grid-template-columns:minmax(280px,.75fr) 1.25fr;gap:clamp(45px,10vw,170px);margin:44px 0 34px;padding-left:64px}
.case-summary{margin:0;font-size:clamp(18px,1.65vw,25px);line-height:1.45;letter-spacing:-.025em}
.case-content ul{margin:0;padding:0;list-style:none;counter-reset:evidence}
.case-content li{position:relative;padding:0 0 13px 34px;margin-bottom:13px;border-bottom:1px solid rgba(239,238,233,.14);font-size:14px;line-height:1.5;counter-increment:evidence}
.case-content li:before{content:"0" counter(evidence);position:absolute;left:0;top:3px;color:var(--category-accent);font:9px/1 DM Mono,monospace}
.case-photo-placeholder{position:relative;min-height:clamp(220px,24vw,360px);margin:0;overflow:hidden;border:1px solid rgba(239,238,233,.3);background-color:#1d1e1b;background-image:linear-gradient(rgba(239,238,233,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(239,238,233,.07) 1px,transparent 1px);background-size:44px 44px}
.case-photo-placeholder:before{content:"";position:absolute;inset:13px;border:1px solid var(--category-accent);pointer-events:none}
.photo-frame{position:absolute;inset:14px;overflow:hidden;background:linear-gradient(150deg,transparent 0 48%,rgba(239,238,233,.035) 48% 100%)}
.photo-frame:before,.photo-frame:after{content:"";position:absolute;left:50%;top:50%;background:rgba(239,238,233,.24);transform:translate(-50%,-50%)}
.photo-frame:before{width:1px;height:150%}.photo-frame:after{width:150%;height:1px}
.photo-sun{position:absolute;right:13%;top:15%;width:clamp(20px,2.2vw,34px);aspect-ratio:1;border:1px solid var(--category-accent);border-radius:50%}
.photo-ridge{position:absolute;bottom:17%;height:1px;background:rgba(239,238,233,.62);transform-origin:left}
.ridge-one{left:8%;width:58%;transform:rotate(-19deg)}.ridge-two{left:47%;width:47%;transform:rotate(24deg)}
.case-photo-placeholder figcaption{position:absolute;left:14px;right:14px;bottom:14px;display:flex;justify-content:space-between;gap:20px;padding:12px 14px;background:rgba(23,24,22,.88);border-top:1px solid rgba(239,238,233,.25);font:9px/1 DM Mono,monospace;letter-spacing:.06em}
.case-photo-placeholder figcaption span{color:var(--category-accent)}.case-photo-placeholder figcaption b{font-weight:400;color:var(--paper)}
.case-sheet footer{display:flex;flex-wrap:wrap;gap:8px;padding-left:64px}
.case-sheet footer span{border:1px solid rgba(239,238,233,.35);border-radius:99px;padding:7px 12px;font:9px/1 DM Mono,monospace;text-transform:uppercase}

/* Architecture reads as a quiet image index: one image and three facts. */
.category-evidence-architecture{background:var(--paper);color:var(--ink)}
.category-architecture-experience{scroll-margin-top:74px;border-top:1px solid rgba(23,24,22,.18)}
.category-skills-archive{scroll-margin-top:74px;border-top:1px solid rgba(23,24,22,.18)}
.category-evidence-architecture .case-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(64px,8vw,128px) clamp(26px,4.5vw,72px);border-top:0}
.category-evidence-architecture .arch-project-card{min-width:0}
.arch-project-image{position:relative;width:100%;aspect-ratio:1;margin:0 0 20px;overflow:hidden;background:#d8d7d1;transition:transform .5s cubic-bezier(.16,1,.3,1),box-shadow .5s cubic-bezier(.16,1,.3,1)}
.arch-project-image.placeholder-2{background:#c9c8c2}.arch-project-image.placeholder-3{background:#e0ded8}.arch-project-image.placeholder-4{background:#bbb9b3}
.arch-project-image>span{position:absolute;left:18px;top:17px;color:rgba(23,24,22,.48);font:500 9px/1 DM Mono,monospace}.arch-project-image figcaption{position:absolute;right:18px;bottom:17px;color:rgba(23,24,22,.48);font:500 8px/1 DM Mono,monospace;letter-spacing:.08em}
.arch-project-image:after{content:"";position:absolute;left:18px;bottom:18px;width:38px;height:3px;background:var(--category-accent)}
.arch-project-meta{display:flex;justify-content:space-between;align-items:flex-start;gap:24px}.arch-project-meta h3{margin:0 0 8px;font-size:clamp(23px,2.1vw,34px);font-weight:400;line-height:1.08;letter-spacing:-.045em;transition:color .3s ease}.arch-project-meta p,.arch-project-meta time{margin:0;font:500 9px/1.4 DM Mono,monospace;text-transform:uppercase}.arch-project-meta p{color:var(--category-accent)}.arch-project-meta time{white-space:nowrap;color:rgba(23,24,22,.55)}
@media(hover:hover){.arch-project-card:hover .arch-project-image{transform:translateY(-6px);box-shadow:0 16px 0 rgba(23,24,22,.07)}.arch-project-card:hover .arch-project-meta h3{color:var(--category-accent)}}
@media(max-width:700px){.category-evidence-architecture .case-list{grid-template-columns:1fr;gap:62px}.arch-project-image{margin-bottom:17px}.arch-project-meta h3{font-size:29px}}

.category-method{padding:clamp(90px,11vw,170px) var(--pad);background:var(--category-accent);color:var(--paper)}
[data-category="pm"] .category-method{color:var(--paper)}
.method-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid currentColor;border-bottom:1px solid currentColor}
.method-card{min-height:320px;padding:24px 28px 34px;border-right:1px solid currentColor;display:flex;flex-direction:column}
.method-card:last-child{border-right:0}
.method-card>span{font:10px/1 DM Mono,monospace}
.method-card h3{margin:auto 0 22px;font-size:clamp(29px,3vw,48px);font-weight:400;line-height:.98;letter-spacing:-.05em}
.method-card p{max-width:340px;margin:0;font-size:14px;line-height:1.55}

.category-capabilities{padding:clamp(90px,11vw,170px) var(--pad);display:grid;grid-template-columns:.75fr 1.25fr;gap:clamp(50px,10vw,160px);position:relative}
.capability-title>span{font:10px/1 DM Mono,monospace}
.capability-title h2{margin:24px 0 0;font-size:clamp(42px,5.8vw,88px);font-weight:400;line-height:.9;letter-spacing:-.06em}
.capability-cloud{display:flex;align-content:flex-start;flex-wrap:wrap;gap:10px}
.capability-cloud span{padding:14px 18px;border:1px solid var(--ink);font:10px/1 DM Mono,monospace;text-transform:uppercase;transition:background .25s,color .25s,transform .25s}
.capability-cloud span:hover{background:var(--category-accent);color:var(--paper);transform:translateY(-4px)}
.education-note{grid-column:2;margin:50px 0 0;padding-top:22px;border-top:1px solid var(--line);font:10px/1.7 DM Mono,monospace;text-transform:uppercase}

.category-contact{min-height:92vh;padding:70px var(--pad) 28px;background:#d5ff36;display:flex;flex-direction:column}
.category-contact>p{margin:0;font:10px/1 DM Mono,monospace}
.category-contact h2{margin:auto 0;font-size:clamp(72px,12.6vw,188px);font-weight:400;line-height:.76;letter-spacing:-.075em;text-transform:uppercase;text-align:center}
.category-contact h2 em{font-family:Georgia,serif;font-weight:400;text-transform:none}
.category-contact>a{align-self:center;color:inherit;text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:5px;font:500 clamp(14px,1.5vw,22px)/1 DM Mono,monospace}
.category-contact footer{display:grid;grid-template-columns:1fr auto 1fr;gap:25px;align-items:end;margin-top:70px;padding-top:18px;border-top:1px solid var(--ink);font:10px/1.5 DM Mono,monospace;text-transform:uppercase}
.category-contact footer>a{color:inherit}.category-contact footer>span{text-align:center}.category-contact footer>div{justify-self:end;display:flex;gap:18px}.category-contact footer>div a{color:inherit;text-decoration:none}

/* Category endings reuse the homepage's full QR contact archive. */
.category-qr-contact{scroll-margin-top:76px}
.category-qr-contact .contact-practice a{position:relative;color:inherit;text-decoration:none;padding:0 0 3px;font:10px/1.5 DM Mono,monospace;text-transform:uppercase}
.category-qr-contact .contact-practice a:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .3s ease}
.category-qr-contact .contact-practice a:hover:after,.category-qr-contact .contact-practice a:focus-visible:after{transform:scaleX(1)}
.category-qr-contact .contact-icons a{color:inherit;text-decoration:none}

.reveal{opacity:0;transform:translateY(34px);transition:opacity .75s ease,transform .85s cubic-bezier(.16,1,.3,1)}
.reveal.in-view{opacity:1;transform:none}

/* Category chapters also reset after leaving, so revisiting them feels alive. */
.category-hero>.category-kicker,.category-hero>h1,.category-hero>.category-intro,.category-hero>.category-lenses,.category-hero>.category-scroll,.category-hero>.category-figure,.category-contact>p,.category-contact>h2,.category-contact>a,.category-contact>footer{transition:opacity .48s ease,transform .62s cubic-bezier(.16,1,.3,1)}
.category-hero.is-out>.category-kicker,.category-hero.is-out>h1,.category-hero.is-out>.category-intro,.category-hero.is-out>.category-lenses,.category-hero.is-out>.category-scroll{opacity:0;transform:translateY(28px)}
.category-hero.is-out>.category-figure{opacity:0;transform:translateY(34px) rotate(-4deg)}
.category-contact.is-out>p,.category-contact.is-out>h2,.category-contact.is-out>a,.category-contact.is-out>footer{opacity:0;transform:translateY(28px)}
.architecture-practice.is-out .practice-route,.architecture-practice.is-out .section-head,.architecture-practice.is-out .project,.architecture-practice.is-out .practice-next{animation:none!important;opacity:0!important;transform:translateY(28px)!important;transition:opacity .38s ease,transform .52s cubic-bezier(.16,1,.3,1)}

@media(max-width:900px){
  .category-page .site-head{height:72px}.category-page .coordinates{display:none}.category-page .site-head{grid-template-columns:1fr auto}.category-page .header-actions{grid-column:2}
  .category-hero{padding-top:112px;grid-template-columns:1fr 1fr;grid-template-rows:auto 1fr auto auto;min-height:900px}
  .category-hero h1{font-size:clamp(54px,12vw,100px)}.category-hero h1 .line-2{margin-left:5vw}.category-hero h1 .line-3{margin-left:12vw}
  .category-figure{right:6vw;top:18vh;width:30vw;opacity:.45}.category-intro{grid-column:1/-1;max-width:600px}.category-lenses{grid-column:1}.category-scroll{grid-column:2;grid-row:4}
  .category-section-head>div{grid-template-columns:42px 1fr}.case-content{grid-template-columns:1fr;gap:28px;padding-left:42px}.case-sheet footer{padding-left:42px}
  .method-grid{grid-template-columns:1fr}.method-card{min-height:230px;border-right:0;border-bottom:1px solid currentColor}.method-card:last-child{border-bottom:0}
  .category-capabilities{grid-template-columns:1fr}.education-note{grid-column:1}
}

@media(max-width:560px){
  body.category-page{cursor:auto}.category-page .cursor{display:none}.category-page .identity-copy{display:none}.category-page .header-actions{gap:16px}
  .architecture-practice{padding:120px 20px 70px}.architecture-practice:before{top:72px}.architecture-practice .practice-route{margin-bottom:60px}.architecture-practice>.section-head{grid-template-columns:1fr;gap:12px}.architecture-practice>.section-head>p{text-align:left}.architecture-practice .project-trigger{grid-template-columns:42px 1fr 24px}.architecture-practice .project-result{display:none}.architecture-practice .project-detail{grid-template-columns:1fr}.architecture-practice .visual{min-height:270px;height:75vw}.architecture-practice .practice-next{margin-top:40px}
  .category-hero{min-height:820px;padding:110px 20px 35px;display:flex;flex-direction:column;gap:24px}.category-grid{background-size:25vw 88px}.category-kicker{margin-top:8px}
  .category-hero h1{margin:auto 0;width:100%;font-size:13.2vw;line-height:.9}.category-hero h1 span{width:100%;white-space:normal}.category-hero h1 .line-2,.category-hero h1 .line-3{margin-left:0}.category-hero h1 i{right:0;bottom:-.55em}
  .category-figure{top:130px;right:20px;width:38vw}.category-intro{font-size:18px}.category-lenses{width:100%}.category-scroll{align-self:flex-end}
  .category-evidence,.category-method,.category-capabilities{padding-left:20px;padding-right:20px}.category-section-head{grid-template-columns:1fr}.category-section-head>p{text-align:left}.category-section-head h2{font-size:13vw}
  .case-sheet header{grid-template-columns:34px 1fr}.case-sheet time{grid-column:2}.case-content{padding-left:0}.case-sheet footer{padding-left:0}.case-summary{font-size:18px}
  .method-card{padding:22px 0}.category-contact{padding:45px 20px 20px;min-height:760px}.category-contact h2{font-size:18vw}.category-contact footer{grid-template-columns:1fr}.category-contact footer>span{text-align:left}.category-contact footer>div{justify-self:start}
  .category-qr-contact .contact-practice a{font-size:10px}
}

@media(prefers-reduced-motion:reduce){.category-figure span,.reveal,body.category-page main{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}
