:root{--content-width:78ch}body{flex-direction:column;display:flex}.container{flex-direction:column;flex:1;align-items:center;padding:56px 20px 32px;font-size:15.5px;display:flex}.containerchild{width:100%;max-width:var(--content-width)}@media (width<=768px){.container{padding-top:24px}}.site-footer{width:100%;padding:0 20px 24px;font-size:15.5px}.footer-inner{max-width:var(--content-width);flex-wrap:wrap;gap:0 20px;margin:0 auto;padding-top:8px;display:flex}.footer-inner a{min-height:var(--control-height);color:var(--text-secondary);align-items:center;font-size:.85rem;font-weight:500;display:inline-flex}.footer-inner a:hover{color:var(--text-main);text-underline-offset:3px;text-decoration:underline}h3{color:var(--text-main);margin:12px 0 0;font-size:.98rem;font-weight:500}p{color:var(--text-secondary);text-wrap:pretty;margin:12px 0 0;font-size:.96rem;font-weight:400}ul{margin:0;padding:0;list-style:none}.portfolio-hero{grid-template-columns:1.2fr .8fr;align-items:center;gap:42px;width:100%;margin:48px 0 64px;display:grid}.hero-text-side{flex-direction:column;gap:16px;display:flex}.hero-main-title{letter-spacing:-.03em;color:var(--text-main);margin:0;font-size:clamp(2.55rem,7vw,2.95rem);font-weight:600;line-height:1.05}.hero-desc{color:var(--text-secondary);margin:0;font-size:clamp(1.02rem,2vw,1.12rem);line-height:1.6}.hero-contact{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.hero-visual-side{justify-content:flex-end;align-items:center;display:flex}.hero-portrait{aspect-ratio:1;object-fit:cover;border-radius:var(--radius);width:100%;max-width:230px}@media (width<=768px){.portfolio-hero{grid-template-columns:1fr;gap:20px;margin:16px 0 48px}.hero-text-side{text-align:center;align-items:center}.hero-main-title{font-size:2.05rem}.hero-desc{font-size:.98rem}.hero-contact{justify-content:center;width:100%}.hero-visual-side{order:-1;justify-content:center}.hero-portrait{max-width:118px}}.page-section{margin-top:48px;scroll-margin-top:24px}.section-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 16px;margin-bottom:14px;display:flex}.section-heading h2{font-size:1.45rem;font-weight:700}.filter-bar{gap:8px;margin-bottom:4px;display:flex}.filter-bar input{flex:1;min-width:0}.filter-bar .select{flex:0 auto;max-width:45%}.list-empty{margin:0;padding:14px 0;font-size:.92rem}.text-button{color:var(--accent-color);text-underline-offset:3px;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.list-empty .text-button{margin-left:6px}.text-button:hover{color:var(--text-secondary)}.project-card,.post-card{padding:16px 0}.project-card h3,.post-card h3{margin:0;font-size:1rem;font-weight:600;line-height:1.35}.project-card h3 a{vertical-align:top;align-items:center;gap:6px;max-width:100%;display:inline-flex}.project-card h3 a span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.project-card h3 a .icon{width:14px;height:14px;color:var(--text-secondary)}.project-card h3 a:hover,.post-card h3 a:hover{color:var(--text-main)}.project-card h3 a:hover span,.post-card h3 a:hover{text-underline-offset:3px;text-decoration:underline}.project-description{margin:2px 0 0;font-size:.9rem;line-height:1.5}.project-meta{flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:8px;display:flex}.project-link{min-width:0;max-width:100%;min-height:var(--control-height-sm);color:var(--text-secondary);align-items:center;gap:5px;font-size:.82rem;display:inline-flex}.project-link span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.project-link:hover{color:var(--text-main)}.project-link:hover span{text-underline-offset:3px;text-decoration:underline}.project-link .icon{width:13px;height:13px}.tech-tags{flex-wrap:wrap;gap:5px;display:flex}.post-card h3{overflow-wrap:anywhere}.post-card time{color:var(--text-secondary);white-space:nowrap;align-items:center;gap:5px;margin-top:4px;font-size:.8rem;display:flex}.post-card time .icon{width:13px;height:13px}.post-card p{margin:2px 0 0;font-size:.9rem;line-height:1.5}.back-link{margin-top:16px;margin-bottom:20px}.post{max-width:40rem}.post-header{margin-bottom:28px}.post-header time{color:var(--text-secondary);margin-top:8px;font-size:.85rem;display:block}.not-found{margin-top:48px}
