*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#f3f0e6;background-image:linear-gradient(#e7e2d1 1px,transparent 1px),linear-gradient(90deg,#e7e2d1 1px,transparent 1px);background-size:24px 24px;overflow-x:hidden;font-family:"Source Serif 4",serif;color:#3a3730;-webkit-font-smoothing:antialiased}a{color:#2f6f66;transition:color .18s ease,text-underline-offset .18s ease,opacity .18s ease}a:hover{color:#1c2b3a!important}a[style*=underline]:hover{text-underline-offset:6px!important}::selection{background:#2f6f66;color:#f3f0e6}.k{background:#f3f0e6;-webkit-box-decoration-break:clone;box-decoration-break:clone;box-shadow:0 0 0 4px #f3f0e6}.chip{background:#f3f0e6}.page-wrap{max-width:1120px;margin:0 auto;padding:0 40px;position:relative}@keyframes mascotWalk{0%{transform:translateY(0) rotate(-9deg) scale(1)}12%{transform:translateY(-11px) rotate(-3deg) scale(.94,1.08)}25%{transform:translateY(0) rotate(3deg) scale(1.06,.92)}37%{transform:translateY(-11px) rotate(9deg) scale(.94,1.08)}50%{transform:translateY(0) rotate(-9deg) scale(1)}62%{transform:translateY(-11px) rotate(-3deg) scale(.94,1.08)}75%{transform:translateY(0) rotate(3deg) scale(1.06,.92)}87%{transform:translateY(-11px) rotate(9deg) scale(.94,1.08)}to{transform:translateY(0) rotate(-9deg) scale(1)}}@keyframes riseIn{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes projSwap{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes projSwapB{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.cat{transition:background .18s ease,color .18s ease,border-color .18s ease}.cat:hover{background:#1c2b3a!important;color:#f3f0e6!important;border-color:#1c2b3a!important}.navlink{background-image:linear-gradient(#1c2b3a,#1c2b3a);background-size:0% 1.5px;background-position:0 100%;background-repeat:no-repeat;padding-bottom:3px;transition:background-size .25s ease,color .18s ease}.navlink:hover{background-size:100% 1.5px}.exp-row,.proj-row{position:relative}.exp-row:before,.exp-row:after,.proj-row:before,.proj-row:after{content:"";position:absolute;width:11px;height:11px;border:1.5px solid #2f6f66;opacity:0;transition:opacity .22s ease;pointer-events:none;z-index:2}.exp-row:before,.proj-row:before{top:10px;left:-10px;border-right:0;border-bottom:0}.exp-row:after,.proj-row:after{bottom:10px;right:-10px;border-left:0;border-top:0}.exp-row:hover:before,.exp-row:hover:after,.proj-row:hover:before,.proj-row:hover:after{opacity:1}.proj-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px 28px}.proj-card{border:1.5px solid #8fada7;padding:16px 16px 18px}.proj-thumb img{transition:transform .35s cubic-bezier(.2,.7,.2,1)}.proj-thumb:hover img{transform:scale(1.02)}.proj-thumb:hover .proj-play{background:#0a0e12bf!important;transform:translate(-50%,-50%) scale(1.06)!important}.proj-play{transition:transform .2s ease,background .2s ease}.exp-tl-row{position:relative;display:grid;grid-template-columns:26px 1fr;gap:14px;padding:0}.exp-tl-row:after{content:"";position:absolute;left:13px;top:0;bottom:0;width:1.5px;transform:translate(-50%);background:#2f6f66}.exp-first.exp-tl-row:after{top:20px}.exp-last.exp-tl-row:after{bottom:calc(100% - 20px)}.exp-last.exp-tl-row:before{content:"";position:absolute;left:13px;top:20px;bottom:0;width:0;transform:translate(-50%);border-left:1.5px dashed #8fada7}.exp-rail{position:relative}.exp-dot{position:absolute;top:13px;left:50%;transform:translate(-50%);width:14px;height:14px;border-radius:50%;background:#2f6f66;border:1.5px solid #2f6f66;z-index:1;transition:background .3s ease}.exp-dot.open{background:#f3f0e6}.exp-main{display:grid;grid-template-columns:170px 1px 1fr;column-gap:20px;row-gap:0;align-items:start;border-top:1px solid #8fada7;padding:12px 0}.exp-first .exp-main{border-top:0}.exp-div{width:1px;align-self:stretch;background:#3e5163;opacity:.4}.exp-chead{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;cursor:pointer}.exp-toggle{flex:none;width:30px;height:30px;border-radius:50%;border:1.5px solid #2f6f66;color:#2f6f66;background:transparent;display:flex;align-items:center;justify-content:center;font:500 16px/1 IBM Plex Mono,monospace;transition:background .2s ease,color .2s ease,border-color .2s ease}.exp-chead:hover .exp-toggle{background:#1c2b3a;border-color:#1c2b3a;color:#f3f0e6}.exp-toggle .exp-glyph{display:inline-block;animation:expPop .25s ease}@keyframes expPop{0%{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}.exp-body{display:grid;grid-column:1 / -1;grid-template-rows:0fr;visibility:hidden;transition:grid-template-rows .45s cubic-bezier(.2,.7,.2,1),visibility 0s linear .45s}.exp-body.open{grid-template-rows:1fr;visibility:visible;transition:grid-template-rows .45s cubic-bezier(.2,.7,.2,1),visibility 0s}.exp-body>div{overflow:hidden;min-height:0;max-height:0;transition:max-height .45s cubic-bezier(.2,.7,.2,1)}.exp-body.open>div{max-height:1000px}.exp-inner{opacity:0;transform:translateY(-8px);transition:opacity .3s ease,transform .45s cubic-bezier(.2,.7,.2,1)}.exp-body.open .exp-inner{opacity:1;transform:none;transition-delay:.06s;border-top:1px solid #8fada7;margin-top:16px;padding-top:16px}.exp-foot:after{top:0;bottom:calc(100% - 13px);width:0;background:none;border-left:1.5px dashed #8fada7}.exp-dot-dash{top:6px;background:#f3f0e6;border:1.5px dashed #8fada7}.exp-foot-main{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding:10px 0 4px}.exp-foot-note{font:400 11.5px/1.7 IBM Plex Mono,monospace;color:#8a8370}.exp-foot-end{font:400 12px IBM Plex Mono,monospace;color:#2f6f66;white-space:nowrap}@media (prefers-reduced-motion: reduce){.exp-body,.exp-body>div,.exp-inner,.exp-dot,.exp-toggle{transition:none!important}.exp-toggle .exp-glyph{animation:none}}.writing-row-link{transition:opacity .18s ease}.writing-row-link:hover{opacity:.72}.writing-row-link:hover span:last-child{color:#1c2b3a!important}.reveal-sec{position:relative;border-top:1.5px solid transparent;opacity:0;transform:translateY(16px);transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1)}.reveal-sec:before{content:"";position:absolute;top:-1.5px;left:0;width:100%;height:1.5px;background:#1c2b3a;transform:scaleX(0);transform-origin:left;transition:transform .6s ease .12s}.reveal-sec.in{opacity:1;transform:none}.reveal-sec.in:before{transform:scaleX(1)}@media (prefers-reduced-motion: no-preference){nav{animation:fadeIn .6s ease both}#hero>div{opacity:0;animation:riseIn .7s cubic-bezier(.2,.7,.2,1) forwards}#hero>div:nth-child(1){animation-delay:.06s}#hero>div:nth-child(2){animation-delay:.18s}#hero>div:nth-child(3){animation-delay:.3s}#hero>div:nth-child(4){animation-delay:.42s}}@media (prefers-reduced-motion: reduce){.reveal-sec{opacity:1;transform:none;border-top-color:#1c2b3a}.reveal-sec:before{display:none}}@media (max-width: 820px){.proj-grid{grid-template-columns:1fr}}@media (max-width: 640px){.page-wrap{padding:0 20px}.exp-row,.proj-row{grid-template-columns:1fr!important;gap:8px!important}.proj-card{padding:12px 12px 14px}.exp-main{grid-template-columns:1fr;gap:10px}.exp-div{display:none}.exp-tl-row{grid-template-columns:1fr;gap:0}.exp-rail,.exp-tl-row:after,.exp-last.exp-tl-row:before{display:none}.nav-wrap{gap:14px!important}.nav-brand{display:none!important}}
