:root{--color-bg-body:#fff;--color-bg-card:#fff;--color-text-primary:#111827;--color-text-secondary:#4b5563;--color-text-tertiary:#9ca3af;--color-accent:#0d9488;--color-accent-hover:#0f766e;--color-border:#e5e7eb;--spacing-xs:0.5rem;--spacing-sm:1rem;--spacing-md:1.5rem;--spacing-lg:1rem;--spacing-xl:1.5rem;--container-width:900px;--header-height:60px;--radius-sm:0;--radius-md:0;--font-heading:"Inter",system-ui,-apple-system,sans-serif;--font-body:"Noto Sans SC",system-ui,-apple-system,sans-serif}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;font-size:16px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{font-family:var(--font-body);background-color:var(--color-bg-body);color:var(--color-text-primary);line-height:1.7;-webkit-font-smoothing:antialiased;background-image:radial-gradient(#e5e7eb 1px,transparent 0);background-size:24px 24px}img,video{max-width:100%;height:auto;display:block}[hidden]{display:none!important}a{color:inherit;text-decoration:none;border-bottom:1px dotted var(--color-text-secondary);transition:all .2s ease;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}a:hover{color:var(--color-accent);border-bottom-color:var(--color-accent)}button{cursor:pointer;font-family:inherit}:where(a,button,[role=button],.dot,.btn-text):focus-visible{outline:3px solid var(--color-accent);outline-offset:3px}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}h1,h2,h3,h4{font-family:var(--font-heading);font-weight:700;line-height:1.2;color:var(--color-text-primary)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.container{width:100%;max-width:var(--container-width);margin:0 auto;padding:0 var(--spacing-sm);background-color:hsla(0,0%,100%,.95);border-left:1px dotted var(--color-border);border-right:1px dotted var(--color-border)}.section-padding{padding:var(--spacing-lg) 0;border-bottom:1px dotted var(--color-border)}@media (min-width:768px){.section-padding{padding:var(--spacing-xl) 0}.container{padding:0 var(--spacing-xl)}}.bg-light{background-color:transparent}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.6rem 1.2rem;border-radius:var(--radius-sm);font-weight:500;font-size:.95rem;transition:all .2s ease;background:transparent;text-decoration:none;border:1px dotted var(--color-accent);border-bottom:none}.btn-primary{background-color:transparent;color:var(--color-accent);border:2px dotted var(--color-accent)}.btn-primary:hover{background-color:var(--color-accent);color:#fff;transform:translateY(-2px);border-style:solid}.btn-primary:active{transform:translateY(0)}.btn-outline{background-color:transparent;border:1px dotted var(--color-text-secondary);color:var(--color-text-secondary)}.btn-outline:hover{border-color:var(--color-accent);color:var(--color-accent);border-style:solid}.btn-sm{padding:.4rem .8rem;font-size:.85rem}.btn-reset{-moz-appearance:none;appearance:none;-webkit-appearance:none}.hero-section{padding-top:var(--spacing-xl);padding-bottom:var(--spacing-xl);border-bottom:1px dotted var(--color-border);animation:fadeIn 1s ease-out}.hero-content{display:flex;flex-direction:column-reverse;gap:var(--spacing-lg);align-items:center;text-align:center}.profile-pic{width:150px;height:150px;border-radius:50%;object-fit:cover;border:1px dotted var(--color-text-primary);padding:4px}.hero-name{font-size:2.5rem;letter-spacing:-.05em}.hero-name,.hero-tagline{margin-bottom:var(--spacing-xs)}.hero-tagline{font-size:1.1rem;color:var(--color-text-secondary);font-weight:400}.hero-actions{display:flex;gap:var(--spacing-sm);justify-content:center;flex-wrap:wrap}@media (max-width:480px){.hero-actions{flex-direction:column;align-items:stretch}.hero-actions .btn{width:100%}}@media (min-width:768px){.hero-content{flex-direction:row;text-align:left;justify-content:space-between}.hero-text{flex:1 1}.hero-actions{justify-content:flex-start}.profile-pic{width:200px;height:200px}}.highlights-grid{display:grid;grid-template-columns:1fr;grid-gap:var(--spacing-lg);gap:var(--spacing-lg)}.highlight-card{background:transparent;padding:var(--spacing-sm) 0;border-radius:0;box-shadow:none;border:none;border-bottom:1px dotted var(--color-border);text-align:left;position:relative;padding-left:1rem}.highlight-card:before{content:"";position:absolute;left:0;top:.5rem;bottom:.5rem;width:1px;background-image:linear-gradient(to bottom,var(--color-accent) 50%,transparent 50%);background-size:1px 6px;background-repeat:repeat-y}.highlight-card h3{color:var(--color-text-primary);font-size:1.1rem;margin-bottom:var(--spacing-xs);color:var(--color-accent)}.highlight-card p{font-size:.9rem;color:var(--color-text-secondary)}@media (min-width:768px){.highlights-grid{grid-template-columns:1fr}.highlight-card,.highlights-grid{border-bottom:1px dotted var(--color-border)}.highlight-card{border-right:none;padding:var(--spacing-sm) 0;padding-left:1rem}.highlight-card:last-child{border-bottom:none}}.section-title{font-size:1.75rem;margin-bottom:var(--spacing-lg);position:relative;padding-bottom:var(--spacing-xs);display:inline-block}.section-title:after{content:"";position:absolute;bottom:0;left:0;width:100%;border-bottom:2px dotted var(--color-accent)}.section-title:before{display:none}.projects-grid{display:grid;grid-gap:var(--spacing-lg);gap:var(--spacing-lg)}.project-card{background:transparent;border-radius:0;padding:0;box-shadow:none;border:none;border-left:1px dotted var(--color-border);padding-left:var(--spacing-md);position:relative;transition:transform .3s ease;border-bottom:1px dotted var(--color-border);padding-bottom:var(--spacing-md);margin-bottom:var(--spacing-md)}.project-card:last-child{border-bottom:none;margin-bottom:0}.project-card:hover{box-shadow:none;border-left-color:var(--color-accent)}.project-header{display:flex;flex-direction:column;gap:var(--spacing-sm)}.header-top{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--spacing-md)}.header-main{display:flex;flex-direction:column;gap:6px}.header-main h3{font-size:1.4rem;line-height:1.3;margin:0}.header-sub{display:flex;flex-wrap:wrap;gap:var(--spacing-sm);align-items:center;font-size:.9rem;color:var(--color-text-secondary)}.header-meta{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex-shrink:0}.header-footer{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--spacing-sm);margin-top:1rem;padding-top:1rem;border-top:1px dotted var(--color-border)}.project-period{font-size:.9rem;color:var(--color-text-tertiary);font-family:var(--font-body)}.project-links{display:flex;gap:16px;flex-wrap:wrap}@media (max-width:640px){.header-top{flex-direction:column;gap:var(--spacing-sm)}.header-meta{align-items:flex-start;flex-direction:row;width:100%;justify-content:space-between;align-items:center}}.role{font-style:normal;color:var(--color-text-secondary)}.role:after{content:"/";margin-left:var(--spacing-xs);color:var(--color-border)}.tag-award{display:inline-block;color:var(--color-accent);padding:0;font-weight:500;border:none;background:transparent}.tag-award:before{content:"🏆 "}.project-summary{margin:var(--spacing-xs) 0;line-height:1.8;color:var(--color-text-secondary)}.tech-stack{display:flex;flex-wrap:wrap;gap:12px;margin:0}.tech-tag{background-color:transparent;color:var(--color-text-tertiary);padding:0;border-radius:0;font-size:.85rem;position:relative;border:none}.tech-tag:before{content:"#";color:var(--color-accent);margin-right:2px}.btn-text{background:none;border:none;color:var(--color-accent);font-weight:600;padding:0;display:flex;align-items:center;gap:4px;font-size:.9rem;font-family:inherit}.arrow{font-size:.7rem;transition:transform .3s}.btn-text[aria-expanded=true] .arrow{transform:rotate(180deg)}.project-details{margin-top:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px dotted var(--color-border);animation:slideDown .4s ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.detail-content{display:grid;grid-gap:var(--spacing-lg);gap:var(--spacing-lg)}.detail-text h4{font-size:1rem;margin-bottom:var(--spacing-sm);color:var(--color-text-primary);border-left:2px dotted var(--color-accent);padding-left:8px}.detail-text ul{list-style-position:inside;color:var(--color-text-secondary);font-size:.95rem;margin-bottom:var(--spacing-md);list-style-type:none}.detail-text li{margin-bottom:8px;position:relative;padding-left:1.2rem}.detail-text li:before{content:"·";position:absolute;left:0;color:var(--color-accent);font-weight:700}@media (min-width:768px){.detail-content{grid-template-columns:1.2fr .8fr;align-items:start}}.education-list,.experience-list{border-left:1px dotted var(--color-border);padding-left:var(--spacing-md)}.education-card,.experience-card{background:transparent;padding:0;border-radius:0;border:none;margin-bottom:var(--spacing-lg)}.edu-header,.experience-header{margin-bottom:var(--spacing-sm)}.edu-header h3,.experience-header h3{font-size:1.2rem;margin-bottom:4px}.edu-degree,.exp-role{display:block;font-size:1rem;color:var(--color-text-secondary);margin-bottom:2px}.edu-period,.exp-period{display:block;font-size:.85rem;color:var(--color-text-tertiary)}.experience-body ul{list-style:none;padding-left:0}.experience-body li{padding-left:1rem;position:relative;margin-bottom:4px;color:var(--color-text-secondary)}.experience-body li:before{content:"-";position:absolute;left:0;color:var(--color-border)}.edu-body p{margin-bottom:4px;font-size:.95rem;color:var(--color-text-secondary)}.skills-grid{display:grid;grid-template-columns:1fr;grid-gap:var(--spacing-lg);gap:var(--spacing-lg)}@media (min-width:640px){.skills-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width:900px){.skills-grid{grid-template-columns:repeat(3,1fr)}}.skill-category{border-top:1px dotted var(--color-border);padding-top:var(--spacing-sm)}.skill-category h3{font-size:1rem;margin-bottom:var(--spacing-sm);color:var(--color-text-primary)}.skill-tags{display:flex;flex-wrap:wrap;gap:12px}.skill-tags span{border:none;padding:0;border-radius:0;font-size:.9rem;color:var(--color-text-secondary);background-color:transparent;border-bottom:1px dotted var(--color-border)}.contact-methods{display:flex;flex-direction:column;gap:var(--spacing-md);align-items:center}@media (min-width:768px){.contact-methods{flex-direction:row;justify-content:center;flex-wrap:wrap}}.contact-item{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm);background:transparent;border:none;border-bottom:1px dotted var(--color-border);border-radius:0;color:var(--color-text-primary);width:100%;max-width:400px;justify-content:flex-start;transition:all .2s}.contact-item:hover{border-bottom-color:var(--color-accent);color:var(--color-accent);padding-left:var(--spacing-md)}.icon{font-size:1.2rem;color:var(--color-text-tertiary)}.contact-item:hover .icon{color:var(--color-accent)}footer{padding:var(--spacing-lg) 0;text-align:center;color:var(--color-text-tertiary);font-size:.9rem;border-top:1px dotted var(--color-border);margin-top:var(--spacing-xl)}.lightbox{position:fixed;top:0;left:0;width:100%;height:100%;background-color:hsla(0,0%,100%,.95);z-index:2000;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .3s ease}.lightbox[aria-hidden=false]{opacity:1;pointer-events:auto}.lightbox-content{position:relative;max-width:90%;max-height:90%;box-shadow:0 0 0 1px dotted var(--color-border);padding:10px;background:#fff}.lightbox-content img,.lightbox-content video{max-width:100%;max-height:80vh;border-radius:0}.lightbox-close{position:absolute;top:20px;right:20px;background:none;border:none;font-size:3rem;cursor:pointer;z-index:2010;font-weight:100;line-height:.5}.lightbox-close,.toast{color:var(--color-text-primary)}.toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%) translateY(20px);background-color:#fff;border:1px dotted var(--color-text-primary);padding:12px 24px;border-radius:0;font-size:.9rem;opacity:0;visibility:hidden;transition:all .3s ease;z-index:3000}.toast.show{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}.carousel{position:relative;width:100%;margin:0 auto;max-width:600px}.carousel-track-container{overflow:hidden;position:relative;width:100%;border-radius:0;aspect-ratio:16/9;background:transparent;border:1px dotted var(--color-border)}.carousel-track{display:flex;transition:transform .6s cubic-bezier(.25,1,.5,1);height:100%;margin:0;padding:0;list-style:none}.carousel-slide{min-width:100%;display:flex;align-items:center;justify-content:center}.carousel-slide img{width:100%;height:100%;object-fit:contain;cursor:pointer;background:#fafafa}.carousel-dots{display:flex;justify-content:center;gap:8px;padding-top:12px}.dot{width:8px;height:8px;border:1px dotted var(--color-text-tertiary);border-radius:50%;background:transparent;padding:0;cursor:pointer}.dot.current-dot{background:var(--color-accent);border-style:solid}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@supports (animation-timeline:view()){section{animation-timeline:view();animation-name:fadeInUp;animation-fill-mode:both;animation-duration:.6s;animation-range:entry 10% cover 20%}}@supports not (animation-timeline:view()){section{animation:none}}@media (prefers-reduced-motion:reduce){.hero-section,.project-details{animation:none}.btn-primary:hover{transform:none}}