*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-bg: #fafafa;--color-surface: #ffffff;--color-text: #1a1a2e;--color-text-muted: #555;--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-border: #e2e8f0;--color-accent: #f0f4ff;--font-sans: "Pretendard", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--max-width: 860px;--radius: 12px}html{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);line-height:1.7;scroll-behavior:smooth}body{min-height:100vh;display:flex;flex-direction:column}a{color:var(--color-primary);text-decoration:none;transition:color .2s}a:hover{color:var(--color-primary-hover);text-decoration:underline}img{max-width:100%;height:auto;border-radius:var(--radius)}.nav{background:var(--color-surface);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:100}.nav-inner{max-width:var(--max-width);margin:0 auto;padding:.75rem 1.5rem;display:flex;align-items:center;justify-content:space-between}.nav-logo{font-weight:700;font-size:1.1rem;color:var(--color-text)}.nav-logo:hover{text-decoration:none}.nav-links{display:flex;gap:1.5rem;list-style:none}.nav-links a{font-size:.95rem;color:var(--color-text-muted);font-weight:500}.nav-links a:hover{color:var(--color-primary);text-decoration:none}.container{max-width:var(--max-width);margin:0 auto;padding:2rem 1.5rem;flex:1}.section{margin-bottom:3rem}.section-title{font-size:1.5rem;font-weight:700;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:2px solid var(--color-primary);display:inline-block}.hero{text-align:center;padding:3rem 0 2rem}.hero-image{width:100%;max-height:280px;object-fit:cover;border-radius:var(--radius);margin-bottom:1.5rem}.hero h1{font-size:2rem;margin-bottom:.75rem}.hero p{color:var(--color-text-muted);font-size:1.05rem;margin-bottom:.3rem}.hero .email{margin-top:.75rem;font-size:.95rem}.timeline{list-style:none;position:relative;padding-left:2rem}.timeline:before{content:"";position:absolute;left:5px;top:0;bottom:0;width:3px;background:var(--color-primary);transform:translate(-50%)}.timeline li{position:relative;margin-bottom:1rem;padding-left:.5rem}.timeline li:before{content:"";position:absolute;left:-2rem;top:.55rem;width:10px;height:10px;background:var(--color-primary);border-radius:50%}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.25rem}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem;transition:box-shadow .2s,transform .2s}.card:hover{box-shadow:0 4px 16px #00000014;transform:translateY(-2px)}.card h3{margin-bottom:.5rem;font-size:1.15rem}.card p{color:var(--color-text-muted);font-size:.95rem}.stat-block{background:var(--color-accent);border-radius:var(--radius);padding:1.5rem;margin-bottom:2rem}.stat-block h3{font-size:1.2rem;margin-bottom:.75rem}.stat-block .badge{display:inline-block;background:var(--color-primary);color:#fff;padding:.25rem .75rem;border-radius:20px;font-size:.85rem;font-weight:600;margin-right:.5rem;margin-bottom:.4rem}.stat-block img{margin-top:1rem}.cert-item{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.25rem;margin-bottom:1rem;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.75rem}.cert-item h4{font-size:1.05rem}.cert-item .score{font-size:1.4rem;font-weight:700;color:var(--color-primary)}.pdf-thumb-wrap{position:relative;width:200px;height:260px;border-radius:var(--radius);overflow:hidden;border:1px solid var(--color-border);flex-shrink:0}.pdf-thumb-frame{width:200px;height:260px;border:none;pointer-events:none}.pdf-thumb-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#0000;transition:background .2s;cursor:pointer;text-decoration:none}.pdf-thumb-overlay:hover{background:#00000026;text-decoration:none}.pdf-download-hint{opacity:0;background:#000000b3;color:#fff;padding:.4rem .8rem;border-radius:8px;font-size:.85rem;transition:opacity .2s}.pdf-thumb-overlay:hover .pdf-download-hint{opacity:1}.pdf-thumb-group{display:flex;gap:1rem;flex-wrap:wrap}.paper-item{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.25rem;margin-bottom:.75rem}.paper-item a{font-weight:600}.project-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem;margin-bottom:2rem}.project-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem;flex-wrap:wrap}.project-header h3{font-size:1.3rem;margin:0}.github-link{display:inline-flex;align-items:center;gap:.25rem;font-size:.85rem;font-weight:600;padding:.3rem .75rem;background:var(--color-text);color:#fff;border-radius:6px;transition:background .2s}.github-link:hover{background:var(--color-primary);color:#fff;text-decoration:none}.project-desc{color:var(--color-text-muted);font-size:.95rem;margin-bottom:1rem}.project-images{display:flex;gap:.75rem;flex-wrap:wrap;margin-bottom:1rem}.project-images img{max-width:400px;border:1px solid var(--color-border)}.project-readme-toggle{margin-top:1rem;border-top:1px solid var(--color-border);padding-top:1rem}.project-readme-toggle summary{cursor:pointer;font-weight:700;font-size:.95rem;color:var(--color-text-muted);padding:.4rem 0;user-select:none}.project-readme-toggle summary:hover{color:var(--color-primary)}.project-readme{margin-top:1rem;line-height:1.75}.project-readme h1{font-size:1.5rem;margin:2rem 0 .75rem;padding-bottom:.3rem;border-bottom:1px solid var(--color-border)}.project-readme h2{font-size:1.25rem;margin:1.75rem 0 .6rem;padding-bottom:.25rem;border-bottom:1px solid var(--color-border)}.project-readme h3{font-size:1.1rem;margin:1.25rem 0 .5rem}.project-readme p{margin:.6rem 0}.project-readme ul,.project-readme ol{margin:.5rem 0;padding-left:1.5rem}.project-readme li{margin-bottom:.3rem}.project-readme pre{background:#1e1e2e;color:#cdd6f4;border-radius:8px;padding:1rem;overflow-x:auto;font-size:.85rem;margin:.75rem 0;line-height:1.5}.project-readme code{font-family:Consolas,Fira Code,monospace;font-size:.88em}.project-readme :not(pre)>code{background:var(--color-accent);padding:.15rem .4rem;border-radius:4px;font-size:.85em}.project-readme table{width:100%;border-collapse:collapse;margin:.75rem 0;font-size:.92rem}.project-readme th,.project-readme td{border:1px solid var(--color-border);padding:.5rem .75rem;text-align:left}.project-readme th{background:var(--color-accent);font-weight:600}.project-readme blockquote{border-left:3px solid var(--color-primary);padding:.5rem 1rem;margin:.75rem 0;background:var(--color-accent);border-radius:0 8px 8px 0;color:var(--color-text-muted)}.project-readme hr{border:none;border-top:1px solid var(--color-border);margin:1.5rem 0}.project-readme strong{font-weight:700}.project-readme input[type=checkbox]{margin-right:.4rem}.footer{text-align:center;padding:1.5rem;color:var(--color-text-muted);font-size:.85rem;border-top:1px solid var(--color-border);margin-top:auto}@media (max-width: 640px){.hero h1{font-size:1.5rem}.nav-inner{flex-direction:column;gap:.5rem}.nav-links{gap:1rem}.cert-item{flex-direction:column;align-items:flex-start}}
