@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-vietnamese-wght-normal.D0rl6rjA.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-ext-wght-normal.D9tNdqV9.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-wght-normal.BhU9QXUp.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-wght-normal.D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-greek-wght-normal.Bw9x6K1M.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-vietnamese-wght-normal.Bt-aOZkq.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal.DBQx-q_a.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal.B9CIFXIH.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light dark;&[data-theme=light]{color-scheme:light}&[data-theme=dark]{color-scheme:dark}--accent:#2b4eff;--bg:light-dark(#f4f4f1,#0e1013);--ink:light-dark(#111418,#ecedef);--ink-2:light-dark(#2b3038,#c9cdd4);--muted:light-dark(#555b66,#9aa1ad);--line:light-dark(#d6d6d0,#2a2e35);--chip:light-dark(#e8e8e3,#1c2026);--btn-bg:light-dark(#111418,#ecedef);--btn-text:light-dark(#f4f4f1,#0e1013);--link:light-dark(#1f3fe0,#8fa2ff);--band:light-dark(#111418,#15181d);--band-edge:light-dark(#111418,#23272e);--panel:light-dark(#1a1e25,#1d2128);--band-ink:#ecedef;--band-muted:#a3a9b5;--band-line:#2a2f38;--band-control:#3a404b;--band-grid:#262b33;--row-active:#232831;--row-text:#d4d7dd;--num-active:#8fa2ff;--json-string:#9fdcae;--json-number:#f2c27a;--font-sans:"Space Grotesk Variable", system-ui, sans-serif;--font-mono:"JetBrains Mono Variable", ui-monospace, monospace}*,:before,:after{box-sizing:border-box}[hidden]{display:none!important}html{scroll-behavior:smooth;-webkit-text-size-adjust:none;text-size-adjust:none}body{background:var(--bg);color:var(--ink);font:17px / 1.55 var(--font-sans);-webkit-font-smoothing:antialiased;margin:0;transition:background .25s,color .25s}h1,h2,h3,p{margin:0}a{color:inherit;&:hover{opacity:.75}}::selection{background:var(--accent);color:#fff}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.mono{font-family:var(--font-mono)}.accent{color:var(--accent)}.accent-fill{fill:var(--accent)}.wrap{max-width:1200px;margin-inline:auto;padding-inline:24px}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.eyebrow{font-family:var(--font-mono);color:var(--muted);font-size:14px}@keyframes blink{0%,55%{opacity:1}56%,to{opacity:0}}.blink{animation:1.1s linear infinite blink}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.blink{animation:none}}.btn{min-height:48px;color:inherit;font:inherit;cursor:pointer;background:0 0;border:1.5px solid #0000;border-radius:999px;align-items:center;gap:.3em;padding:0 24px;font-weight:500;text-decoration:none;display:inline-flex}.btn-solid{background:var(--btn-bg);color:var(--btn-text)}.btn-outline{border-color:var(--ink)}.btn-light{background:var(--band-ink);color:#111418;padding:0 22px}.btn-ghost{border-color:var(--band-control);color:var(--band-ink)}.icon-btn{border:1.5px solid var(--band-control);width:48px;height:48px;color:var(--band-ink);cursor:pointer;background:0 0;border-radius:50%;justify-content:center;align-items:center;display:flex}.arrow-icon{background:currentColor;flex-shrink:0;width:.85em;height:.85em;display:inline-block;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%20fill='none'%20stroke='%23000'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M2.5%208h11M9%203.5%2013.5%208%209%2012.5'/%3e%3c/svg%3e") 50%/contain no-repeat;&.up{rotate:-90deg}&.down{rotate:90deg}&.left{rotate:180deg}&.up-right{rotate:-45deg}}:where(a:has(>.arrow-icon)){align-items:center;gap:.5em;display:inline-flex}.skill-icon{opacity:.75;background:currentColor;flex-shrink:0;width:1.1em;height:1.1em;display:inline-block;mask:none 50%/contain no-repeat;&.laravel{mask-image:url(/assets/laravel.Ixg35cw2.svg)}&.php{mask-image:url(/assets/php.CkHy1-W6.svg)}&.nodedotjs{mask-image:url(/assets/nodedotjs.D0D9S3yc.svg)}&.database{mask-image:url(/assets/database.DFE1E3VL.svg)}&.redis{mask-image:url(/assets/redis.bzTu8DcF.svg)}&.wordpress{mask-image:url(/assets/wordpress.xSiv72uw.svg)}&.vuedotjs{mask-image:url(/assets/vuedotjs.XE4sixmP.svg)}&.react{mask-image:url(/assets/react.D0IYJw82.svg)}&.javascript{mask-image:url(/assets/javascript.BXGEiF2E.svg)}&.typescript{mask-image:url(/assets/typescript.D4dQChg0.svg)}&.jquery{mask-image:url(/assets/jquery.DFjTWvW0.svg)}&.html5{mask-image:url(/assets/html5.DiAfjwSB.svg)}&.css{mask-image:url(/assets/css.Cpv6Fu6L.svg)}&.sass{mask-image:url(/assets/sass.QUFvjPAJ.svg)}&.tailwindcss{mask-image:url(/assets/tailwindcss.CK26rJ0J.svg)}&.cloud{mask-image:url(/assets/cloud.DvWw8n8K.svg)}&.docker{mask-image:url(/assets/docker.3D6UhXNQ.svg)}&.githubactions{mask-image:url(/assets/githubactions.B_WsIGfJ.svg)}&.vite{mask-image:url(/assets/vite.CKLjbVYz.svg)}&.git{mask-image:url(/assets/git.Dri1FJ7E.svg)}&.github{mask-image:url(/assets/github.gqQoa-bT.svg)}&.postgresql{mask-image:url(/assets/postgresql.C5gaslP_.svg)}&.pwa{mask-image:url(/assets/pwa.B8aWzIWi.svg)}&.nginx{mask-image:url(/assets/nginx.qW0wYTmY.svg)}&.apache{mask-image:url(/assets/apache.qWTty5or.svg)}&.caddy{mask-image:url(/assets/caddy.BXjtLNJS.svg)}&.phpunit{mask-image:url(/assets/phpunit.CvZQkcQ4.svg)}&.vitest{mask-image:url(/assets/vitest.BrGiZJ5z.svg)}&.playwright{mask-image:url(/assets/playwright.d9GId9-7.svg)}&.api{mask-image:url(/assets/api.CJygJomU.svg)}&.cloudflare{mask-image:url(/assets/cloudflare.B1xDgnD2.svg)}&.composer{mask-image:url(/assets/composer.CEa8E9ZG.svg)}&.npm{mask-image:url(/assets/npm.CE1Yo_YF.svg)}}.site-header{flex-wrap:wrap;align-items:center;gap:16px;padding-block:24px;display:flex}.brand{align-items:center;gap:12px;margin-inline-end:auto;text-decoration:none;display:flex}.brand-name{text-transform:lowercase;letter-spacing:-.02em;font-size:17px;font-weight:700}.site-nav{scroll-target-group:auto;flex-wrap:wrap;align-items:center;gap:4px;font-size:14px;display:flex;& a{padding:12px 14px;text-decoration:none;&:target-current{color:var(--link)}}&.no-spy{scroll-target-group:none}@media (width<=760px){flex:100%;order:1;margin-inline-start:-10px;& a{padding-inline:10px}}}.theme-toggle{border-color:var(--line);width:44px;height:44px;color:var(--ink);& .icon-sun{display:none}:root[data-theme=dark] &{& .icon-sun{display:block}& .icon-moon{display:none}}}.hero{flex-direction:column;gap:32px;padding-block:72px 88px;display:flex;& h1{text-transform:lowercase;letter-spacing:-.045em;font-size:clamp(3rem,9vw,8rem);font-weight:700;line-height:.95}}.lede{max-width:46rem;color:var(--ink-2);font-size:22px;line-height:1.45}.actions{flex-wrap:wrap;gap:12px;display:flex}.stats{border-top:1px solid var(--line);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:24px;padding-top:40px;display:grid;& p{color:var(--muted);font-size:15px}& .stat{color:var(--ink);letter-spacing:-.03em;font-size:44px;font-weight:700}}.section-title{flex-direction:column;gap:8px;display:flex;& h2{letter-spacing:-.035em;font-size:clamp(2.25rem,5vw,4rem);line-height:1}}.band{--muted:var(--band-muted);background:var(--band);color:var(--band-ink);border-block:1px solid var(--band-edge);padding-block:96px}.band-inner{flex-direction:column;gap:32px;display:flex}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;display:flex}.filters{flex-wrap:wrap;gap:8px;display:flex;& button{border:1.5px solid var(--band-control);min-height:44px;color:var(--band-ink);font:inherit;cursor:pointer;background:0 0;border-radius:999px;padding:0 18px;font-size:15px;font-weight:500;&[aria-pressed=true]{background:var(--band-ink);border-color:var(--band-ink);color:#111418}& span{opacity:.7}}}.explorer{container-type:inline-size}.project{flex-direction:column;gap:20px;display:flex;@container (width>=860px){grid-template:"stage stage""title json""meta json"1fr"actions json"/minmax(0,1fr) minmax(0,400px);gap:20px 48px;display:grid;& .stage{grid-area:stage;margin-bottom:12px}& .project-title{grid-area:title}& .json{grid-area:json;align-self:start}& .meta{grid-area:meta}& .project-actions{grid-area:actions}}}.window{border:1px solid var(--band-line);background:var(--panel);border-radius:16px;overflow:hidden;box-shadow:0 30px 60px #00000059;& .browser{box-shadow:none;border:none;border-radius:0}& .shot,& .canvas{aspect-ratio:16/9}}.explorer .stage.has-shots{@container (width>=860px){padding-bottom:8%;& .phone{width:20%}}}.tab-strip{background:var(--band);align-items:flex-end;gap:12px;padding:8px 8px 0;display:flex;& .dots{align-self:center;margin:0 4px 0 8px;@container (width<600px){display:none}}}.tabs{--fade-before:0px;--fade-after:0px;overscroll-behavior-x:contain;scrollbar-width:none;min-width:0;mask-image:linear-gradient(to right, transparent, #000 var(--fade-before), #000 calc(100% - var(--fade-after)), transparent);flex-grow:1;margin:0;padding:0;list-style:none;display:flex;position:relative;overflow-x:auto;&[data-more-before]{--fade-before:32px}&[data-more-after]{--fade-after:32px}&.dragging{cursor:grabbing;user-select:none;& button{cursor:inherit}}& li{flex:none;min-width:96px;max-width:220px}& button{width:100%;height:40px;color:var(--band-muted);font:inherit;white-space:nowrap;cursor:pointer;outline-offset:-3px;background:0 0;border:none;border-radius:10px 10px 0 0;align-items:center;gap:8px;padding:0 4px 0 14px;font-size:14px;font-weight:500;display:flex;position:relative;&:hover{background:color-mix(in srgb, var(--panel) 55%, transparent);color:var(--band-ink)}&[aria-current=true]{background:var(--panel);color:var(--band-ink);& .num{color:var(--num-active)}}&.retired:not([aria-current=true]){opacity:.6}}& li+li button:before{content:"";background:var(--band-control);width:1px;position:absolute;top:12px;bottom:12px;left:0}& li:has([aria-current=true])+li button:before,& li:has(button:hover)+li button:before,& button:is([aria-current=true],:hover):before{display:none}& .num{font-family:var(--font-mono);font-size:12px}& .favicon{border-radius:3px;flex-shrink:0}& .name{text-align:left;flex-grow:1;min-width:0;padding-right:12px;overflow:hidden;mask-image:linear-gradient(270deg,#0000,#000 16px)}}.project-panel{display:contents}.stage{position:relative;&.has-shots{padding-bottom:15%;&>:first-child{width:97%}}&:not(.has-shots){& .shot,& .phone{display:none}}&.has-shots .canvas{display:none}}.browser{border:1px solid var(--band-line);background:var(--panel);border-radius:16px;display:block;overflow:hidden;box-shadow:0 30px 60px #00000059}.phone{border:clamp(3px, 1cqi, 6px) solid var(--band-line);background:var(--panel);border-radius:min(30px,3.5cqi);width:25.5%;min-width:96px;position:absolute;bottom:0;right:0;overflow:hidden;box-shadow:0 30px 60px #00000073;& .shot{aspect-ratio:390/844}}.shot{aspect-ratio:1440/900;scrollbar-width:none;position:relative;overflow:hidden;&::-webkit-scrollbar{display:none}@media (hover:hover) and (pointer:fine){overflow-y:auto}}.shot-video{object-fit:cover;object-position:top;pointer-events:none;width:100%;height:100%;transition:opacity .3s .6s;position:absolute;inset:0;&:not([data-playing]){visibility:hidden}&[data-playing]{animation:.25s video-in}}@keyframes video-in{0%{opacity:0}}:is(.browser,.phone)[data-scrolled] .shot-video{opacity:0;transition-delay:0s}.shot-track{width:100%;height:auto;transition:opacity .3s;display:block}.shot{--skeleton:color-mix(in srgb, var(--panel), var(--band-ink) 4%);--skeleton-shine:color-mix(in srgb, var(--panel), var(--band-ink) 10%);background:var(--skeleton);&[data-loading]{background-image:linear-gradient(100deg, transparent 30%, var(--skeleton-shine) 50%, transparent 70%);background-size:250% 100%;animation:1.6s ease-in-out infinite shimmer;& .shot-track{opacity:0}}}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}@media (prefers-reduced-motion:reduce){.shot[data-loading]{background-image:none;animation:none}}.browser-bar{border-bottom:1px solid var(--band-line);align-items:center;gap:12px;padding:12px 16px;display:flex}.dots{gap:6px;display:flex;& span{background:var(--band-control);border-radius:50%;width:10px;height:10px}}.url{text-overflow:ellipsis;white-space:nowrap;background:var(--band);min-width:0;color:var(--band-muted);border-radius:8px;flex-grow:1;padding:6px 12px;font-size:13px;overflow:hidden}.canvas{aspect-ratio:1440/900;background-color:var(--panel);background-image:linear-gradient(var(--band-grid) 1px, transparent 1px), linear-gradient(90deg, var(--band-grid) 1px, transparent 1px);background-size:32px 32px;position:relative;overflow:hidden}.big-num{letter-spacing:-.06em;color:#0000;-webkit-text-stroke:1.5px var(--accent);opacity:.55;font-size:260px;font-weight:700;line-height:1;position:absolute;bottom:-40px;right:-8px}.project-title{flex-wrap:wrap;align-items:center;gap:12px 16px;display:flex}.pill{background:var(--accent);color:#fff;border-radius:999px;padding:6px 12px;font-size:13px}.pill-outline{border:1.5px solid var(--band-control);color:var(--band-muted);background:0 0;padding-block:4.5px}.project-name{letter-spacing:-.035em;font-size:clamp(1.75rem,3.5vw,2.75rem);font-weight:700;line-height:1}.json{border:1px solid var(--band-line);background:var(--panel);color:var(--band-muted);border-radius:10px;margin:0;padding:16px 18px;font-size:14px;line-height:1.6;overflow-x:auto;& .json-key{color:var(--num-active)}& .json-string{color:var(--json-string)}& .json-number{color:var(--json-number)}}.meta{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px;margin:0;font-size:15px;display:grid;& dt{color:var(--band-muted);font-size:13px}& dd{margin:0}}.project-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.project-links{flex-wrap:wrap;gap:12px;display:flex}.pager{align-items:center;gap:8px;display:flex}.position{text-align:center;min-width:56px;color:var(--band-muted);font-size:13px}:root:active-view-transition-type(project){view-transition-name:none;& .browser{view-transition-name:project-browser}& .phone{view-transition-name:project-phone}& .project-title{view-transition-name:project-title}&::view-transition-group(*){animation-duration:.35s;animation-timing-function:cubic-bezier(.2,.8,.2,1)}&::view-transition-group(project-browser){border-radius:0 0 15px 15px;overflow:clip}&::view-transition-old(project-title),&::view-transition-new(project-title){object-fit:none;object-position:left center;width:auto;height:100%}}:root:active-view-transition-type(project){--scale-out:1.08;--scale-in:.92;&::view-transition-old(project-browser),&::view-transition-old(project-phone){animation:.25s ease-in both project-out}&::view-transition-new(project-browser),&::view-transition-new(project-phone){animation:.35s cubic-bezier(.2,.8,.2,1) both project-in}&::view-transition-new(project-phone){animation-delay:60ms}}:root:active-view-transition-type(prev){--scale-out:.92;--scale-in:1.08}@keyframes project-out{to{opacity:0;scale:var(--scale-out)}}@keyframes project-in{0%{opacity:0;scale:var(--scale-in)}}.resume{flex-wrap:wrap;gap:48px;padding-block:96px;display:flex;& .section-title{flex:280px}}.resume-body{flex-direction:column;flex:999 560px;gap:24px;min-width:0;display:flex}.job-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex;& h3{letter-spacing:-.02em;font-size:28px;line-height:1.2}}.job-desc{max-width:44rem;color:var(--ink-2)}.chips{flex-wrap:wrap;gap:8px;margin:0;padding:0;font-size:13px;list-style:none;display:flex;& li{background:var(--chip);border-radius:8px;align-items:center;gap:6px;padding:8px 12px;display:inline-flex}}.skills{flex-direction:column;gap:20px;margin:0;display:flex;& dd{margin:0}& dt{margin-bottom:10px}}.site-footer{border-top:1px solid var(--line);& nav{flex-wrap:wrap;gap:4px;font-size:14px;display:flex;& a{color:var(--link);padding:12px 14px}}}.footer-main{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:24px;padding-block:48px;display:flex}.contact{flex-direction:column;align-items:flex-start;gap:20px;display:flex}.sign-off{letter-spacing:-.03em;font-size:clamp(1.75rem,4vw,2.75rem);font-weight:700}.footer-base{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:12px;padding-bottom:32px;font-size:13px;display:flex}.footer-base:first-child{padding-top:24px}.footer-links{flex-wrap:wrap;gap:16px;display:flex}.consent{inset-inline:16px;z-index:10;border:1px solid var(--line);background:var(--bg);max-width:420px;color:var(--ink);border-radius:16px;flex-direction:column;gap:16px;margin-inline-start:auto;padding:20px;display:flex;position:fixed;bottom:16px;box-shadow:0 12px 32px #0000002e;&[hidden]{display:none}& p{color:var(--ink-2);font-size:15px}& a{color:var(--link)}}.consent-title{font-weight:700}.consent-actions{gap:12px;display:flex;& .btn{flex:1;justify-content:center}}.link-btn{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.prose{flex-direction:column;gap:20px;max-width:46rem;padding-block:56px 96px;display:flex;& h1{letter-spacing:-.035em;font-size:clamp(2.25rem,5vw,4rem);line-height:1}& h2{letter-spacing:-.02em;margin-top:20px;font-size:24px}& p,& li{color:var(--ink-2)}& a{color:var(--link)}& ul{flex-direction:column;gap:12px;margin:0;padding-inline-start:1.25em;display:flex}}.table-scroll{overflow-x:auto}.prose table{border-collapse:collapse;width:100%;font-size:15px;& th,& td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:10px 12px 10px 0}& th{font-family:var(--font-mono);color:var(--muted);font-size:13px;font-weight:400}}.case-head{flex-direction:column;gap:28px;padding-block:40px 72px;display:flex;& h1{letter-spacing:-.045em;font-size:clamp(2.5rem,7vw,5.5rem);line-height:.95}}.case-back{color:var(--muted);align-self:flex-start;font-size:14px;text-decoration:none}.case-facts{border-top:1px solid var(--line);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:24px;margin:0;padding-top:32px;display:grid;& dd{margin:4px 0 0}}.case-scores{flex-direction:column;gap:20px;display:flex;& h2{font-weight:400}& .stats{border-top:0;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));padding-top:0}& .stat{font-size:36px}& abbr{text-decoration:none}}.case-stage{max-width:960px;margin-inline:auto}.case-body{padding-block:72px 24px}.case-pager{flex-wrap:wrap;justify-content:space-between;gap:16px;padding-block:56px 96px;font-size:15px;display:flex;& a{text-decoration:none}& [rel=next]{margin-inline-start:auto}}.case-note{max-width:60ch;color:var(--muted);font-size:15px;& a{color:var(--link)}}
