:root{font-family:Arial,Helvetica,sans-serif;font-synthesis:none}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;min-height:100dvh;background:var(--bg);color:var(--fg);transition:background-color .3s ease,color .3s ease}
body.research{--bg:#fff;--fg:#000;--line:#d1d1d1;--muted:#6b6b6b;--hover:#f5f5f5}
body.studio{--bg:#000;--fg:#fff;--line:#3a3a3a;--muted:#aaa;--hover:#171717}
a{color:inherit;text-decoration:none}
button,a{font:inherit}
a:focus-visible,button:focus-visible{outline:2px solid var(--fg);outline-offset:5px}
img{display:block;max-width:100%}
.skip-link{position:absolute;left:16px;top:-60px;z-index:20;padding:10px 15px;background:var(--fg);color:var(--bg)}
.skip-link:focus{top:12px}
.site-header{position:sticky;top:0;z-index:10;height:76px;padding:0 clamp(20px,4vw,70px);display:flex;align-items:center;justify-content:space-between;gap:22px;border-bottom:1px solid var(--line);background:var(--bg);transition:background-color .3s ease,color .3s ease}
.home-page .site-header{border-bottom:0}
.home-page .header-brand,.home-page .header-menus{display:grid;align-items:center}
.home-page .header-brand>*,.home-page .header-menus>*{grid-area:1/1;transition:opacity .325s linear}
.home-page .header-menus nav{justify-self:end}
.home-page.research .mode-studio,.home-page.studio .mode-research{opacity:0;pointer-events:none}
.site-name{font-size:18px;font-weight:400;letter-spacing:-.04em;white-space:nowrap}

.site-header nav{display:flex;align-items:center;justify-content:flex-end;gap:clamp(19px,3vw,50px);font-size:15px}
.site-header nav a{position:relative;display:inline-block;white-space:nowrap;transition:transform .35s cubic-bezier(.16,1.65,.28,1)}
.site-header nav a:after{content:"";height:1px;background:currentColor;position:absolute;left:0;right:100%;bottom:-7px;transition:right .3s ease}
.site-header nav a:hover:after,.site-header nav a[aria-current="page"]:after{right:0}
.home-main{height:calc(100dvh - 76px);display:grid;place-items:center}
.switch-logo{display:block;width:clamp(64px,5.4vw,80px);padding:8px;transform:rotate(var(--logo-angle,0deg));transition:transform .3s ease}
.switch-logo img{width:100%;height:auto;transition:opacity .3s ease}

.cursor-friend{position:fixed;left:0;top:0;width:22px;height:22px;border-radius:50%;background:#fff;mix-blend-mode:difference;pointer-events:none;z-index:20;opacity:0;transform:translate3d(-60px,-60px,0);transition:opacity .2s}
.cursor-friend.visible{opacity:1}
.content{max-width:1430px;margin:auto;padding:76px clamp(20px,4vw,70px) 130px}
.page-title{font-size:clamp(32px,3vw,42px);line-height:1;letter-spacing:-.06em;margin:0 0 42px;font-weight:400;text-align:left}
.research .page-title{text-transform:uppercase}
.studio .page-title{text-transform:lowercase}
.section-label{font-size:12px;color:var(--muted);margin:0 0 15px}
.research-projects{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}
.research-project{display:flex;flex-direction:column;padding:24px;border:1px solid var(--line);transition:background .3s}
.research-project:hover{background:var(--hover)}
.project-kind{font-size:13px;display:flex;justify-content:space-between;gap:12px}
.project-kind span{font-weight:400}
.research-project time{display:block;font-size:12px;color:var(--muted);margin-top:7px}
.research-project h2{font-size:clamp(22px,2vw,28px);line-height:1.12;letter-spacing:-.045em;margin:16px 0 12px;font-weight:400;max-width:850px}
.research-project .korean-title{font-size:15px;line-height:1.5;color:var(--muted);margin:0;word-break:keep-all}
.project-tags,.work-tags{display:flex;flex-wrap:wrap;gap:7px}
.project-tags{margin-top:auto;padding-top:16px}
.project-tags span,.work-tags span{border:1px solid var(--line);border-radius:9px;padding:6px 9px;font-size:13px;letter-spacing:.02em;color:var(--muted)}
.back-link{display:inline-block;font-size:13px;margin-bottom:38px}
.project-article{max-width:1050px}
.project-eyebrow{font-size:13px;color:var(--muted);margin:0 0 15px}
.project-article-meta{display:flex;justify-content:space-between;gap:20px;align-items:baseline}
.project-article-meta time{font-size:13px;color:var(--muted);white-space:nowrap}
.project-article .page-title{line-height:1.06;margin-bottom:14px}
.article-ko{font-size:17px;color:var(--muted);margin:0 0 60px;word-break:keep-all}
.article-index{display:flex;flex-wrap:wrap;gap:8px 25px;padding:20px 0;font-size:13px}
.article-index a:hover,.article-link:hover{text-decoration:underline;text-underline-offset:4px}
.article-section{display:grid;grid-template-columns:185px 1fr;gap:0 45px;padding:44px 0;scroll-margin-top:90px}
.article-section h2{grid-row:span 3;font-size:18px;font-weight:400;margin:0}
.article-section p,.article-section li{font-size:15px;line-height:1.6;margin:0 0 18px}
.article-section p[lang=ko],.article-section li span{color:var(--muted);word-break:keep-all}
.article-section ul{padding-left:20px;margin:0}
.article-section li span{display:block;font-size:13px}
.article-link{display:block;font-size:14px;margin-bottom:13px}
.publication-year{margin:0 0 52px}
.publication-year>h2{font-size:28px;font-weight:400;letter-spacing:-.05em;margin:0 0 15px}
.publication-list{border-top:1px solid var(--fg)}
.publication{display:grid;grid-template-columns:90px minmax(0,1fr) 165px;gap:18px;align-items:start}
.publication{padding:22px 16px;border-bottom:1px solid var(--line);transition:background .3s}
.publication:hover{background:var(--hover)}
.publication time{font-size:12px;color:var(--muted);padding-top:5px}
.paper-main{min-width:0}
.publication h3{font-size:19px;line-height:1.17;letter-spacing:-.04em;margin:0 0 6px;font-weight:400}
.publication p{font-size:12px;color:var(--muted);margin:0;line-height:1.4}
.publication .author-me{font-weight:400;color:var(--fg)}
.publication .venue{font-size:12px;color:var(--muted);padding-top:5px}
.cv-toolbar{display:flex;justify-content:space-between;gap:20px;align-items:center;border-bottom:1px solid var(--fg);padding-bottom:25px;margin-bottom:10px}
.cv-toolbar .page-title{margin:0}
.pdf-link{font-size:13px;border:1px solid var(--fg);padding:12px 16px;white-space:nowrap;transition:background .2s,color .2s}
.pdf-link:hover{background:var(--fg);color:var(--bg)}
.cv-layout{display:grid;grid-template-columns:minmax(220px,26%) minmax(0,1fr);gap:clamp(34px,5vw,80px)}
.cv-portrait{width:100%;max-width:300px;height:auto;aspect-ratio:3/4;object-fit:cover;object-position:top}
.cv-sidebar section,.cv-main section{padding:28px 0;border-bottom:1px solid var(--line)}
.cv-sidebar h2,.cv-main h2{font-size:15px;font-weight:400;margin:0 0 18px}
.cv-sidebar p,.cv-main>section>p{font-size:14px;line-height:1.6;margin:0}
.cv-sidebar p{color:var(--muted)}
.cv-item{display:grid;grid-template-columns:minmax(0,1fr) 125px;gap:20px;margin-bottom:25px}
.cv-item:last-child{margin-bottom:0}
.cv-item h3{font-size:18px;font-weight:400;line-height:1.25;letter-spacing:-.03em;margin:0 0 5px}
.cv-item p{font-size:14px;line-height:1.5;margin:0;color:var(--muted)}
.cv-item time{font-size:12px;text-align:right;color:var(--muted)}
.cv-detail{margin-top:15px}
.cv-detail strong,.skill-group h3{font-size:13px;font-weight:400}
.cv-detail p{margin-top:4px}
.skill-group{margin-top:16px}
.skill-group h3{margin:0 0 3px}
.skill-group p{font-size:13px;line-height:1.5;margin:0;color:var(--muted)}
.cv-layout a{text-decoration:underline;text-underline-offset:3px}
.work-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:75px 26px}
.work-tile{display:block}
.work-tile .tile-image{display:block;width:100%;aspect-ratio:1.45;object-fit:cover;background:#222;overflow:hidden;transition:filter .3s}
.work-tile:hover .tile-image{filter:brightness(.82)}
.work-tile img.tile-image{display:block}
.tile-title{display:flex;justify-content:space-between;gap:18px;align-items:baseline;margin-top:12px}
.tile-title strong{font-size:19px;font-weight:400;letter-spacing:-.05em}
.tile-title time,.service-state{font-size:12px;color:var(--muted);text-align:right;white-space:nowrap}
.tile-title small{font-size:inherit;font-weight:400;color:var(--muted);margin-left:8px;letter-spacing:inherit}
.work-tags{margin-top:11px}
.service-tile{position:relative}
.github-reveal{position:absolute;right:14px;top:14px;z-index:2;border:1px solid #fff;background:#000;color:#fff;padding:9px 13px;font-size:12px;opacity:0;transform:translateY(6px);transition:opacity .25s,transform .25s}
.service-tile:hover .github-reveal,.service-tile:focus-within .github-reveal{opacity:1;transform:none}
.tile-image.matmulim{object-position:center 60%}
.tile-image.liqua{object-position:center}
.tile-image.cards{object-position:center}
.tile-image.dagi{display:grid;place-items:center;background:#eee6d9}
.tile-image.dagi img{width:34%;max-width:170px}
.tile-image.mocozi{display:grid;place-items:center;background:#f1f0ed}
.tile-image.mocozi img{width:72%;height:auto}
.tile-image.light{position:relative;background:#17191f;color:#fff}
.tile-image.light:before{content:"";position:absolute;left:12%;top:54%;width:76%;height:2px;background:#fff7a6;transform:rotate(-14deg);box-shadow:0 0 18px #f7e88c}
.tile-image.light:after{content:"";position:absolute;left:36%;top:31%;width:28%;aspect-ratio:1;border:2px solid #8cc4f3;transform:rotate(20deg);box-shadow:20px 20px 0 -2px #17191f,20px 20px 0 0 #8cc4f3}
.blog-entry{display:grid;grid-template-columns:140px 1fr 20px;gap:20px;border-top:1px solid var(--fg);border-bottom:1px solid var(--line);padding:23px 0;align-items:start}
.blog-entry time{font-size:12px;color:var(--muted)}
.blog-entry strong{display:block;font-size:20px;font-weight:400}
.blog-entry small{display:block;font-size:13px;color:var(--muted);margin-top:7px}
.blog-article{max-width:890px}
.blog-article time{display:block;font-size:12px;color:var(--muted);margin-bottom:18px}
.blog-article p{font-size:16px;line-height:1.7;max-width:690px}
.blog-article h2{font-size:23px;font-weight:400;margin-top:65px}
.gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.gallery img{width:100%;height:auto}.gallery img:first-child{grid-column:span 2}
@media(max-width:800px){.content{padding-top:56px}.research-projects{grid-template-columns:1fr}.publication{grid-template-columns:62px 1fr}.publication .venue{display:none}.cv-layout{grid-template-columns:1fr;gap:15px}.cv-sidebar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 30px}.cv-portrait{grid-column:1/-1;max-width:210px}.work-grid{gap:50px 18px}}
@media(max-width:600px){.site-header{height:64px;padding:0 17px;gap:10px}.home-main{height:calc(100dvh - 64px)}.site-name{font-size:15px}.site-header nav{gap:10px;font-size:12px}.content{padding-left:20px;padding-right:20px;padding-bottom:90px}.page-title{font-size:clamp(32px,8vw,38px);margin-bottom:36px}.research-project{padding:22px 18px 30px}.article-section{grid-template-columns:1fr;gap:15px}.article-section h2{grid-row:auto}.publication{gap:10px}.publication h3{font-size:15px}.publication p{font-size:11px}.cv-toolbar{align-items:start}.cv-toolbar .page-title{font-size:clamp(32px,8vw,38px)}.cv-sidebar{grid-template-columns:1fr}.cv-item{grid-template-columns:1fr;gap:5px}.cv-item time{text-align:left}.work-grid{grid-template-columns:1fr;gap:46px}.blog-entry{grid-template-columns:1fr 20px}.blog-entry time{grid-column:1/-1}.gallery{grid-template-columns:1fr}.gallery img:first-child{grid-column:auto}}
@media(pointer:fine) and (prefers-reduced-motion:no-preference){html,body,a,button{cursor:none}}
@media(pointer:coarse),(prefers-reduced-motion:reduce){.cursor-friend{display:none}body,.site-header,.home-page .header-brand>*,.home-page .header-menus>*,.switch-logo,.switch-logo img,.site-header nav a,.research-project,.publication{transition:none}.github-reveal{opacity:1;transform:none}}
/* Shared navigation and section switching */
.home-page .header-brand>*,.home-page .header-menus>*{transition:opacity .3s ease}
.blog-menus{display:grid;align-items:center}
.blog-menus nav{grid-area:1/1;justify-self:end;transition:opacity .3s ease}
.research .blog-menus nav[aria-label="Studio navigation"],.studio .blog-menus nav[aria-label="Research navigation"]{opacity:0;pointer-events:none}


.tag-filters{display:flex;flex-wrap:wrap;gap:9px;margin:-8px 0 30px}
.tag-filters button{border:1px solid var(--line);border-radius:9px;padding:8px 12px;background:transparent;color:var(--muted);font-size:14px;letter-spacing:.02em;transition:background .2s,color .2s,border-color .2s}
.tag-filters button:hover,.tag-filters button[aria-pressed="true"]{background:var(--fg);color:var(--bg);border-color:var(--fg)}
.work-tile[hidden],.service-tile[hidden]{display:none}
.work-tags{justify-content:flex-end}
.tile-title{justify-content:flex-start;gap:8px}
.tile-title time{margin-left:3px}
.cv-toolbar{border-bottom:0;margin-bottom:0}
.cv-sidebar strong{font-weight:600;color:var(--fg)}
.resume-content .cv-main>section>p{max-width:760px}
@media(max-width:600px){
  .site-header{justify-content:center;height:62px}
  .site-header nav,.home-page .header-menus nav,.blog-menus nav{position:fixed;top:auto;bottom:0;left:0;right:0;width:100%;height:calc(60px + env(safe-area-inset-bottom));padding:0 13px env(safe-area-inset-bottom);display:flex;justify-content:space-around;gap:5px;background:var(--bg);border-top:1px solid var(--line);font-size:12px;transition:background-color .3s,color .3s,opacity .3s;z-index:11}
  .site-header nav a{padding:13px 2px}
  .site-header nav a:after{bottom:8px}
  .home-page .header-brand{justify-items:center}
  .home-page .header-menus{position:static}
  .home-main{height:calc(100dvh - 122px)}
  .content{padding-bottom:calc(100px + env(safe-area-inset-bottom))}
  .cv-layout{display:flex;flex-direction:column;gap:0}
  .cv-sidebar,.cv-main{display:contents}
  .cv-portrait{order:-1;width:100%;max-width:none;height:auto;aspect-ratio:auto;margin-top:12px}
  .pdf-link{padding:8px 11px;font-size:11px}
  .cv-item time{line-height:1.55}
}

/* Identity, typography, and fast page changes */
.site-name,.page-title,.research-project h2,.publication-year>h2,.publication h3,.cv-item h3,.tile-title strong{letter-spacing:normal}
.research .cv-sidebar h2,.research .cv-main h2{text-transform:uppercase}
.switch-logo{display:grid;place-items:center}
.switch-logo img{grid-area:1/1;width:100%;height:auto;transition:opacity .3s ease}
.home-page.research .switch-logo .mode-studio,.home-page.studio .switch-logo .mode-research{opacity:0}
.tile-title time{display:block;text-align:left;margin:5px 0 0}
.tile-title{display:block}
.tile-title strong{display:block;line-height:1.25}
.resume-content .cv-main>section>p{max-width:760px}
.resume-content .skill-group{margin-top:20px}
.cv-bullets{padding-left:18px;margin:9px 0 0;color:var(--muted);font-size:13px;line-height:1.55}
.cv-bullets li+li{margin-top:4px}
.contact-icons{display:flex;align-items:center;justify-content:space-between;width:100%;max-width:300px}
.contact-icons a{display:grid;place-items:center;width:23px;height:23px;transition:opacity .2s}
.contact-icons a:hover{opacity:.55}
.contact-icons svg{display:block;width:19px;height:19px;fill:currentColor}

@media(max-width:600px){.work-tags span{padding:5px 7px;font-size:12px}}
.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:30px}
.page-heading .page-title{margin:0}
.filter-toggle{border:1px solid var(--line);border-radius:9px;background:transparent;color:var(--fg);width:74px;padding:9px 0;font-size:13px;display:flex;justify-content:center;align-items:center;flex:none;transition:width .25s ease,background .2s}
.filter-toggle:hover,.filter-toggle[aria-expanded="true"]{background:var(--hover)}
.filter-current{color:var(--fg);font-size:16px;line-height:12px}
.filter-toggle[aria-expanded="false"] .filter-current{display:none}
.filter-toggle[aria-expanded="true"]{width:34px}
.filter-toggle[aria-expanded="true"] .filter-label{display:none}
.filter-controls{display:flex;align-items:center;justify-content:flex-end;gap:12px;min-width:0;flex:1}
.tag-filters{justify-content:flex-end;flex-wrap:nowrap;min-width:0;overflow-x:auto;scrollbar-width:none;margin:0}
.tag-filters::-webkit-scrollbar{display:none}
.tag-filters[hidden]{display:none}
.tag-filters button{flex:none;animation:tag-arrive .32s both;animation-delay:calc(var(--order) * 45ms)}
@keyframes tag-arrive{from{opacity:0;transform:translateX(22px)}to{opacity:1;transform:none}}
/* Identity motion */
.home-page,.home-page .site-header{transition-duration:.65s}
.home-page .header-brand>*,.home-page .header-menus>*,.home-page .switch-logo,.home-page .switch-logo img{transition-duration:.65s}
.switch-logo .mode-studio{transform:rotate(180deg)}
.quick-theme body,.quick-theme .site-header,.quick-theme .blog-menus nav{transition:none!important}
.cursor-friend{left:-60px;top:-60px;transform:translate(-50%,-50%);display:grid;place-items:center;transition:opacity .2s}
/* Project details inside the thumbnail */
.work-tile{display:block;position:relative}
.tile-media{position:relative;display:block;overflow:hidden}
.tile-media:after{content:"";position:absolute;inset:52% 0 0;background:linear-gradient(transparent,rgba(0,0,0,.72));opacity:0;pointer-events:none;transition:opacity .25s}
.work-tile:hover .tile-media:after,.work-tile:focus-visible .tile-media:after{opacity:1}
.work-tile:hover .tile-image,.work-tile:focus-visible .tile-image{filter:brightness(.88)}
.tile-media .work-tags{position:absolute;z-index:1;left:13px;right:13px;bottom:13px;display:flex;justify-content:center;margin:0;opacity:0;transform:translateY(5px);transition:opacity .25s,transform .25s}
.work-tile:hover .work-tags,.work-tile:focus-visible .work-tags{opacity:1;transform:none}
.tile-media .work-tags span{color:#fff;border-color:rgba(255,255,255,.75);background:rgba(0,0,0,.2)}
.tile-title{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-top:12px}
.tile-title time{margin:0;text-align:right}
/* CV and resume */
.experience-section .cv-item{margin-bottom:38px}
.experience-section .cv-detail{margin-top:24px}
.cv-item h3 small{font-size:12px;font-weight:400;color:var(--muted);margin-left:8px;letter-spacing:normal}
.cv-item:has(a){padding:10px 12px;margin-left:-12px;margin-right:-12px;border-radius:5px;transition:background-color .2s}
.cv-item:has(a):hover,.cv-item:has(a):focus-within{background:var(--hover)}
.cv-item h3 a{text-decoration:none}
.service-list{border-top:1px solid var(--line)}
.service-row{display:grid;grid-template-columns:90px minmax(0,1fr) minmax(240px,36%);gap:18px;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line)}
.service-row{position:relative;min-height:116px;transition:background-color .2s}
.service-primary{position:absolute;inset:0;z-index:1}
.service-primary:focus-visible{outline-offset:-3px}
.service-row:hover{background:var(--hover)}
.service-row[hidden]{display:none}
.service-logo .tile-image{display:block;width:76px;aspect-ratio:1;overflow:hidden}
.service-logo .tile-image.dagi{display:grid;place-items:center}
.service-logo .tile-image.dagi img{width:84%}
.service-name{font-size:19px}
.service-name small{font-size:inherit;color:var(--muted);margin-left:7px}
.service-github:hover{color:var(--muted)}
.service-description{font-size:13px;line-height:1.5;color:var(--muted)}
.service-description .work-tags{justify-content:flex-start;max-height:0;opacity:0;overflow:hidden;margin:0;transition:max-height .25s,opacity .25s,margin .25s}
.service-row:hover .work-tags,.service-row:focus-within .work-tags{max-height:40px;opacity:1;margin-top:9px}
.service-description .work-tags span{padding:4px 7px}
.service-github{position:relative;z-index:2;display:block;width:max-content;margin-top:8px;color:var(--fg)}
@media(max-width:800px){.service-row{grid-template-columns:70px minmax(0,1fr);gap:8px 15px}.service-description{grid-column:2}.service-logo .tile-image{width:64px}}
@media(max-width:600px){.tile-media .work-tags{left:10px;right:10px;bottom:10px}.page-heading{gap:8px}.filter-controls{gap:5px}.tag-filters{justify-content:flex-start}}
@media(prefers-reduced-motion:reduce){.home-page,.home-page .site-header,.home-page .header-brand>*,.home-page .header-menus>*,.home-page .switch-logo,.home-page .switch-logo img{transition:none}}
/* CV and resume columns */
.cv-layout{grid-template-columns:minmax(0,1fr) minmax(230px,270px);gap:clamp(35px,5vw,80px)}
.cv-main{grid-column:1;grid-row:1;min-width:0}
.cv-sidebar{grid-column:2;grid-row:1;min-width:0;position:sticky;top:174px;align-self:start}
.cv-item{grid-template-columns:90px minmax(0,1fr);gap:18px}
.cv-item>div:first-child{grid-column:2;grid-row:1}
.cv-item time{grid-column:1;grid-row:1;text-align:left}
.cv-toolbar{margin-bottom:32px}
.cv-portrait{display:block;width:100%;max-width:270px}
.cv-sidebar section,.cv-main section{border:0;padding:0}
.cv-profile p{color:var(--fg)}
.cv-main>section+section{margin-top:55px}
.cv-main>section:nth-child(2){border:0;padding:0}
.cv-main>section>h2{border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:22px}
.cv-photo{position:relative;width:100%;max-width:270px}
.cv-photo .resume-contact{position:absolute;left:0;right:0;bottom:0;padding:26px 12px 14px!important;background:linear-gradient(transparent,rgba(0,0,0,.76));color:#fff;opacity:0;pointer-events:none;transition:opacity .25s}
.cv-photo:hover .resume-contact,.cv-photo:focus-within .resume-contact{opacity:1;pointer-events:auto}
.cv-photo .contact-icons{max-width:none;justify-content:center;gap:18px;flex-wrap:nowrap}
.cv-bio{margin-top:22px}
.cv-bio .cv-profile{margin-top:16px}
.cv-bio .cv-profile p{font-size:14px;line-height:1.6;margin:0}
.identity-label{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px 14px}
.cv-bio .identity-label h2{font-size:21px;font-weight:400;line-height:1.2;margin:0;text-transform:none}
.identity-label span{font-size:13px;color:var(--muted)}
.cv-sidebar .contact-icons{width:100%}
.skill-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:26px 24px}
.skill-grid .skill-group{margin:0}
.skill-grid .skill-group h3{margin-bottom:9px}
.skill-tool{display:flex;align-items:baseline;justify-content:flex-start;gap:7px;padding:3px 0;color:var(--muted);font-size:12px;line-height:1.4;white-space:nowrap}
.skill-level{color:var(--fg);font-size:8px;letter-spacing:1px}
.cv-layout .cv-bullets{list-style:none;padding-left:0}
.resume-content .cv-detail .cv-bullets{margin-top:8px}
.resume-content .cv-detail .cv-bullets li+li{margin-top:5px}
.resume-content .experience-section .cv-item p,.resume-content .experience-section .cv-item h3 small{font-size:13px;line-height:1.55}
@media(max-width:800px){
  .cv-layout{display:flex;flex-direction:column;gap:0}
  .cv-sidebar,.cv-main{display:contents;position:static}
  .cv-photo{order:-4;max-width:270px}
  .cv-bio{order:-3;margin:18px 0 44px}
  .cv-main>section{order:-1}
  .cv-main>section+section{margin-top:0;margin-bottom:54px}
}
@media(max-width:600px){.cv-photo{max-width:300px;margin-inline:auto}.cv-portrait{max-width:300px;margin:0}.cv-item{grid-template-columns:80px minmax(0,1fr);gap:12px}}
@media(pointer:coarse){.cv-photo .resume-contact{opacity:1;pointer-events:auto}}
/* Inner-page identity and theme switch */
.blog-brand{display:grid;align-items:center}
.blog-brand .site-name{grid-area:1/1}
.research .blog-brand .mode-studio,.studio .blog-brand .mode-research{opacity:0;pointer-events:none}
.cursor-logo{width:28px;height:28px;border-radius:0;mask:center/contain no-repeat;transform:translate(-50%,-50%) rotate(var(--cursor-angle,0deg));transition:opacity .2s,transform .25s}
.research .cursor-logo{mask-image:url('/assets/logo_b.svg')}
.studio .cursor-logo{mask-image:url('/assets/logo_w.svg')}
.studio:has(.blog-brand) .cursor-logo{mask-image:url('/assets/logo_b.svg')}
.cursor-logo.holding{transform:translate(-50%,-50%) rotate(var(--next-angle,180deg));transition:opacity .2s,transform .8s ease-in}
.cursor-logo.hold-ready{animation:cursor-ready-blink .2s steps(1,end) infinite alternate}
@keyframes cursor-ready-blink{to{opacity:.35}}
:is(.content:not(.article-page)>.page-title,.content>.page-heading,.content>.cv-toolbar,.content>.article-toolbar){position:sticky;top:76px;z-index:9;background:var(--bg);padding-top:14px;padding-bottom:14px}
:is(.content:not(.article-page)>.page-title,.content>.page-heading,.content>.cv-toolbar,.content>.article-toolbar):after{content:"";position:absolute;top:100%;left:0;right:0;height:32px;background:linear-gradient(var(--bg),transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);mask-image:linear-gradient(#000 25%,transparent);pointer-events:none}
.blog-list-title{transition:background-color .3s ease,color .3s ease}
.content:not(.article-page)>.blog-list-title:after{background:var(--bg);transition:background-color .3s ease}
@media(prefers-reduced-motion:reduce){.blog-list-title,.content:not(.article-page)>.blog-list-title:after{transition:none}}
.article-page .page-title{text-transform:none}
.article-toolbar{display:flex;align-items:center;gap:18px;min-height:44px;margin-bottom:36px}
.article-toolbar .back-link{flex:none;margin:0}
.article-toolbar-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;opacity:0;transform:translateY(7px) scale(1.04);transform-origin:left center;transition:opacity .25s ease,transform .25s ease}
.article-toolbar.show-title .article-toolbar-title{opacity:1;transform:none}
@media(max-width:600px){:is(.content:not(.article-page)>.page-title,.content>.page-heading,.content>.cv-toolbar,.content>.article-toolbar){top:62px}.article-section{scroll-margin-top:170px}.article-toolbar{gap:10px}.article-toolbar-title{font-size:12px}}
@media(min-width:1101px){
  .research .cv-main{display:grid;grid-template-columns:minmax(180px,1fr) minmax(0,2fr);column-gap:32px}
  .research .cv-main>section{grid-column:1/-1}
  .research .cv-main>section:nth-last-child(2){grid-column:1}
  .research .cv-main>section:last-child{grid-column:2}
}
