/* V3: readable, non-intrusive movement and low-noise technical typography */
.projects-grid{position:relative;scroll-behavior:smooth;scroll-margin:0;overscroll-behavior-x:contain;overscroll-behavior-y:auto;scroll-snap-type:x mandatory}
.project-card{flex:0 0 min(395px,86vw);min-height:206px;padding:25px 27px;box-shadow:none;position:relative}
.project-body{min-width:0;flex:1}
.project-card h3{font-size:21px;line-height:1.24;letter-spacing:-.035em;margin:12px 0}
.project-card .project-body>p:not(.project-category){font-size:13px;line-height:1.52}
.project-card .read-link{font-size:13px;padding-top:18px}
.project-category{font-size:10px}
.skills-grid{display:flex!important;flex-wrap:wrap;column-gap:0!important;row-gap:0!important;align-items:center;justify-content:flex-start;padding:4px 0 5px}
.skill-word{display:inline-flex;align-items:center;color:var(--text);font-size:15px;font-weight:620;line-height:1.6;padding:7px 14px 7px 0;letter-spacing:-.02em}
.skill-word:not(:last-child)::after{content:'•';color:var(--muted2);margin-left:15px;font-size:12px;opacity:.7}
.timeline-viewport{position:relative;max-height:205px;overflow-y:auto;overscroll-behavior-y:contain;scrollbar-width:thin;scrollbar-color:var(--border) transparent;mask-image:linear-gradient(to bottom,transparent 0%,#000 6%,#000 94%,transparent 100%);padding:12px 4px;scroll-snap-type:y proximity}
.timeline{padding:0!important;margin:0!important;border:0!important;display:flex!important;flex-direction:column;gap:12px}
.timeline-card{cursor:pointer;width:100%;display:block!important;text-align:left;grid-template-columns:1fr!important;margin:0!important;padding:19px 22px!important;min-height:110px!important;scroll-snap-align:center;border:1px solid var(--border);background:var(--panel);font:inherit;color:var(--text);transition:background .18s, border-color .18s, filter .18s}
.timeline-card:hover,.timeline-card:focus-visible{background:var(--panel-hover);border-color:var(--accent)}
.timeline-node{display:none!important}
.experience-head{display:flex;align-items:baseline;gap:14px;justify-content:space-between}
.company-name{font-size:20px;font-weight:770;letter-spacing:-.03em}
.company-period{font-size:12px;font-weight:700;color:var(--muted);white-space:nowrap}
.timeline-card .job-title{font-size:12px;color:var(--accent);font-weight:700;margin:3px 0}
.timeline-card .experience-description{font-size:13px;line-height:1.45;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin:4px 0!important}
.experience-more{display:inline-block;margin-top:8px;font-size:11px;color:var(--accent);font-weight:750}
.cert-card{transition:border-color .2s,background .2s}.cert-card:has(a):hover{border-color:var(--accent)}.credential-link{display:inline-block;position:relative;z-index:2;font-size:12px!important;margin-top:13px!important;color:var(--accent2)!important;text-decoration:underline;text-underline-offset:3px}
.contact-wrap{margin-top:25px;padding:0}.contact-content{padding:20px 0 24px!important}.contact-content h2{font-size:clamp(38px,5.4vw,62px)}.contact-content>p:not(.contact-note){font-size:15px!important}.contact-links .button{min-height:45px;font-size:13px}.contact-wave{bottom:-124px;opacity:.22}
.case-dialog{position:fixed!important;inset:0;z-index:9999;max-height:min(85vh,720px);overflow-y:auto;overscroll-behavior:contain}
.case-dialog[open]{display:block}.case-dialog::backdrop{z-index:9998}
@media(max-width:640px){.project-card{flex-basis:88%;min-height:235px;padding:20px}.project-card h3{font-size:21px}.project-card .project-body>p:not(.project-category){font-size:13px}.skill-word{font-size:13px;padding:6px 11px 6px 0}.skill-word:not(:last-child)::after{margin-left:10px}.timeline-viewport{max-height:169px}.timeline-card{padding:16px!important;min-height:110px!important}.company-name{font-size:18px}.company-period{font-size:11px}.timeline-card .experience-description{-webkit-line-clamp:2;font-size:12px}.contact-content{padding:19px 0 20px!important}.contact-content h2{font-size:34px}.contact-links .button{min-height:44px}.case-dialog{max-height:88dvh}}
