:root{--bg: #f9fafb;--surface: rgba(255, 255, 255, .96);--surface-strong: #ffffff;--surface-soft: #f8fbff;--line: #e5e7eb;--line-strong: #cbd5e1;--text: #111827;--muted: #6b7280;--muted-strong: #374151;--accent: #2563eb;--accent-strong: #1d4ed8;--accent-soft: #dbeafe;--success: #16a34a;--warning: #d97706;--error: #dc2626;--shadow: none;--shadow-soft: none;--radius-xl: 24px;--radius-lg: 20px;--radius-md: 18px;--radius-sm: 14px;--sans: "IBM Plex Sans KR", "IBM Plex Sans", sans-serif;--serif: "Source Serif 4", Georgia, serif;--focus: 0 0 0 3px rgba(37, 99, 235, .22)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;color:var(--text);font-family:var(--sans);font-size:16px;line-height:1.65;letter-spacing:-.01em;background:linear-gradient(180deg,rgba(37,99,235,.06),transparent 240px),linear-gradient(180deg,#f9fafb 0% 100%)}body,button,input,textarea,select{font:inherit}img{display:block;max-width:100%}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible{outline:none;box-shadow:var(--focus)}h1,h2,h3,p,ul{margin:0}ul{padding-left:1.2rem}[id]{scroll-margin-top:112px}.skip-link{position:absolute;top:-56px;left:16px;z-index:200;padding:10px 14px;border-radius:12px;background:var(--surface-strong);border:1px solid var(--line);box-shadow:var(--shadow-soft)}.skip-link:focus{top:16px}.site-header{position:sticky;top:0;z-index:120;padding:12px 16px 0}.site-header-inner{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;max-width:1120px;margin:0 auto;padding:12px 16px;border:1px solid var(--line);border-radius:var(--radius-lg);background:#ffffffeb;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:var(--shadow-soft)}.brand{display:inline-flex;align-items:center;gap:12px;min-width:0}.brand-mark{display:grid;place-items:center;width:44px;height:44px;flex:none;border-radius:14px;color:#fff;background:linear-gradient(135deg,var(--accent),#1e40af);font-family:var(--serif);font-size:18px;font-weight:700}.brand-copy{display:grid;min-width:0}.brand-copy strong{font-size:15px;font-weight:700;letter-spacing:-.01em}.brand-copy span{overflow:hidden;color:var(--muted);font-size:13px;text-overflow:ellipsis;white-space:nowrap}.site-nav{display:flex;justify-content:center;gap:8px;min-width:0;overflow-x:auto}.nav-link,.header-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 16px;border-radius:999px;color:var(--muted);font-size:14px;font-weight:600;transition:color .15s ease,background-color .15s ease,border-color .15s ease}.nav-link:hover,.header-link:hover{color:var(--text);background:#eff6ff}.nav-link.is-active{color:var(--accent-strong);background:var(--accent-soft)}.header-link{border:1px solid var(--line);color:var(--accent-strong)}.page-shell{display:grid;gap:20px;max-width:1120px;margin:0 auto;padding:20px 16px 72px}.hero-panel{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.9fr);gap:16px;padding:20px;border:1px solid var(--line);border-radius:var(--radius-xl);background:linear-gradient(180deg,#fffffffa,#f8fbfff5),linear-gradient(120deg,#2563eb0f,#2563eb05);box-shadow:var(--shadow)}.home-hero{align-items:stretch}.hero-main,.hero-side{display:grid;gap:18px}.eyebrow,.panel-kicker,.detail-card-label,.proof-meta{letter-spacing:.07em;text-transform:uppercase;font-size:12px;font-weight:700}.eyebrow,.panel-kicker,.proof-meta{color:var(--accent-strong)}.page-title,.panel-title{font-family:var(--serif);line-height:1.08;letter-spacing:-.03em}.page-title{max-width:13ch;font-size:clamp(2.4rem,5vw,4.25rem)}.panel-title{font-size:clamp(1.75rem,3.5vw,2.6rem)}.panel-title-small{font-size:1.45rem}.lead,.panel-copy,.detail-card p,.proof-card p,.doc-card span,.meta-pair span,.meta-pair strong,.bullet-list li,.timeline-body p,.skill-group p,.project-summary,.mini-block span{color:var(--muted-strong)}.lead{max-width:58ch;font-size:1.05rem;line-height:1.6}.hero-chip-row,.tag-list{display:flex;flex-wrap:wrap;gap:8px}.chip,.tag,.pill{display:inline-flex;align-items:center;min-height:34px;padding:0 14px;border:1px solid #dbe3f0;border-radius:999px;background:#ffffffe6;color:var(--text);font-size:13px;font-weight:600}.pill{background:var(--accent-soft);color:var(--accent-strong)}.hero-actions{display:grid;gap:14px;align-items:start}.button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;width:fit-content;padding:0 20px;border:1px solid var(--line-strong);border-radius:999px;background:var(--surface-strong);color:var(--text);font-weight:700;box-shadow:var(--shadow-soft)}.button.primary{border-color:transparent;background:linear-gradient(135deg,var(--accent),#1e40af);color:#fff}.button.ghost{border-color:var(--accent);background:#fff;color:var(--accent-strong)}.button:hover{transform:translateY(-1px);box-shadow:none}.text-actions{display:flex;flex-wrap:wrap;gap:14px}.text-actions a,.inline-link{color:var(--accent-strong);font-weight:700}.portrait-card,.meta-block{display:grid;gap:14px;padding:18px;border:1px solid var(--line);border-radius:var(--radius-lg);background:#fffffff0}.portrait-frame{overflow:hidden;max-width:220px;border-radius:16px;border:1px solid var(--line);background:linear-gradient(180deg,#2563eb14,#2563eb05)}.portrait{aspect-ratio:1 / 1.12;object-fit:cover}.profile-block{display:grid;gap:4px}.profile-block strong{font-size:1.15rem;letter-spacing:-.01em}.profile-block span{color:var(--muted);font-size:1rem}.meta-pairs,.stacked-list{display:grid;gap:12px}.meta-pair{display:grid;gap:4px;padding:12px 14px;border-radius:var(--radius-sm);background:var(--surface-soft);border:1px solid #e8eef7}.meta-pair span{font-size:12px;letter-spacing:.08em;text-transform:uppercase}.meta-pair strong{font-size:15px;letter-spacing:-.01em}.stat-grid{display:grid;gap:12px}.stat-card{display:grid;gap:4px;padding:16px;border:1px solid var(--line);border-radius:var(--radius-md);background:#fffffff0}.stat-card span{color:var(--muted);font-size:14px}.stat-card strong{font-size:1.25rem;letter-spacing:-.02em}.content-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;align-items:start}.main-stack,.aside-stack{display:grid;gap:16px}.panel{display:grid;gap:16px;padding:20px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-soft)}.panel-tight{gap:14px;padding:20px}.panel-header{display:grid;gap:8px}.panel-copy{max-width:65ch}.page-map,.doc-list{display:grid;gap:10px}.page-map-link,.doc-card,.proof-card,.detail-card,.flow-card,.skill-group,.project-card{border:1px solid var(--line);border-radius:var(--radius-md);background:#fffffff5;box-shadow:none}.page-map-link,.doc-card,.proof-card,.project-card,.detail-card,.skill-group,.flow-card{padding:16px}.page-map-link{display:grid;gap:4px;min-height:44px}.page-map-link strong{font-size:14px}.page-map-link span{color:var(--muted);font-size:14px}.page-map-link.is-active{border-color:var(--accent);background:#eff6ff}.doc-card,.proof-card{display:grid;gap:8px}.doc-card strong,.proof-card h3,.detail-card-title,.project-title,.flow-card h3,.skill-group h3,.timeline-body h3{color:var(--text);font-size:1.1rem;font-weight:700;line-height:1.4;letter-spacing:-.01em}.doc-card,.proof-card,.page-map-link,.project-card{transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.doc-card:hover,.proof-card:hover,.page-map-link:hover,.project-card:hover{border-color:#bfdbfe;transform:translateY(-1px);box-shadow:none}.bullet-list{display:grid;gap:12px;margin:0}.bullet-list.compact{gap:8px}.timeline{display:grid;gap:12px}.timeline-item{display:grid;grid-template-columns:150px minmax(0,1fr);gap:18px;padding:16px 18px;border:1px solid var(--line);border-radius:var(--radius-md);background:#fffffff5}.timeline-period{color:var(--accent-strong);font-size:13px;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.timeline-body{display:grid;gap:10px}.skill-grid,.proof-grid,.card-grid,.flow-grid{display:grid;gap:14px}.skill-grid,.proof-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.card-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.card-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.skill-group{display:grid;gap:12px}.project-card{display:grid;gap:16px}.project-head{display:flex;align-items:start;justify-content:space-between;gap:12px}.project-title a{color:inherit}.mini-block{display:grid;gap:4px;padding:12px 14px;border-radius:var(--radius-sm);background:var(--surface-soft)}.flow-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.flow-card{display:grid;gap:12px;min-height:100%}.flow-index{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:12px;background:var(--accent-soft);color:var(--accent-strong);font-size:14px;font-weight:700}.compact-gap{gap:10px}body[data-page=home]{--bg: #f4f0e8;--surface: rgba(255, 255, 255, .96);--surface-strong: #fffdfa;--surface-soft: #f5f2ec;--line: #dfd7cb;--line-strong: #cbbfae;--text: #18212f;--muted: #6f7682;--muted-strong: #404a58;--accent: #355f9b;--accent-strong: #1d3d6a;--accent-soft: #e7eef8}body[data-page=home]{background:linear-gradient(180deg,rgba(53,95,155,.08),transparent 240px),radial-gradient(circle at top right,rgba(177,154,120,.12),transparent 26%),linear-gradient(180deg,#f6f2ea,#f3eee6)}body[data-page=home] .site-header{padding-top:18px}body[data-page=home] .site-header-inner{max-width:1040px;border-color:#cbbfaeb8;border-radius:30px;background:#fffdfae0;box-shadow:0 10px 30px #18212f0a}body[data-page=home] .nav-link.is-active{background:#355f9b24}body[data-page=home] .header-link{border-color:#355f9b2e;background:#ffffffd6}.resume-home{display:grid;place-items:center}.resume-sheet{width:min(100%,1020px);padding:32px 38px 40px;border:1px solid rgba(203,191,174,.88);border-radius:14px;background:#fffffffa;box-shadow:0 22px 50px #18212f0f}.resume-sheet-reference{display:grid;gap:24px}.resume-hero{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(260px,.95fr) 132px;gap:26px;align-items:start}.resume-hero-identity,.resume-hero-contacts,.resume-column,.resume-side-section{display:grid;gap:12px}.resume-name{margin:0;color:var(--text);font-family:var(--serif);font-size:clamp(3.1rem,7vw,5rem);line-height:.96;letter-spacing:-.06em}.resume-role{margin:0;color:var(--muted-strong);font-size:1.1rem;font-weight:700}.resume-role.accent{color:var(--accent)}.resume-status{width:fit-content;min-height:32px;margin:2px 0 0;padding:0 12px;border:1px solid rgba(53,95,155,.18);border-radius:999px;background:#355f9b0f;color:var(--accent-strong);font-size:12px;font-weight:700;line-height:30px}.resume-hero-contacts{margin-top:8px}.resume-contact-row{display:grid;grid-template-columns:60px minmax(0,1fr);gap:10px;align-items:start}.resume-contact-row dt{color:var(--muted);font-size:13px;font-weight:700}.resume-contact-row dd{margin:0;color:var(--text);font-size:14px;font-weight:600;word-break:break-word}.resume-contact-row dd a{color:inherit}.resume-photo-frame{display:grid;justify-content:end}.resume-photo-slot{display:grid;place-items:center;width:120px;height:160px;overflow:hidden;border:1px solid rgba(24,33,47,.3);border-radius:4px;background:linear-gradient(180deg,#f6f8fb,#edf1f7);color:#18212fb8;font-size:15px;font-weight:700}.resume-photo-slot img{width:100%;height:100%;object-fit:cover}.resume-intro-strip{display:grid;grid-template-columns:5px minmax(0,1fr);gap:16px;padding:18px 0 0;border-top:1px solid rgba(53,95,155,.22)}.resume-intro-accent{border-radius:999px;background:var(--accent)}.resume-intro-copy{display:grid;gap:8px}.resume-intro-copy p,.resume-project-summary,.resume-strength-card p,.resume-background-body p,.resume-credential-item p{margin:0;color:var(--muted-strong);font-size:.99rem;line-height:1.68}.resume-main-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(320px,.95fr);gap:26px;align-items:start}.resume-section-heading{display:grid;gap:4px}.resume-section-heading p{margin:0;color:var(--accent);font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.resume-section-heading h2{margin:0;color:var(--text);font-size:clamp(1.55rem,2.4vw,2.1rem);font-weight:800;letter-spacing:-.04em}.resume-project-list,.resume-strength-list,.resume-stack-groups,.resume-background-compact,.resume-credential-list{display:grid;gap:12px}.resume-project-entry{display:grid;grid-template-columns:42px minmax(0,1fr);gap:12px;align-items:start}.resume-project-number{display:grid;place-items:center;width:42px;height:42px;border-radius:8px;background:var(--accent);color:#fff;font-size:1.45rem;font-weight:800}.resume-project-card,.resume-strength-card{display:grid;gap:12px;padding:16px 18px;border:1px solid rgba(53,95,155,.14);border-radius:10px;background:#fff}.resume-project-topline{display:flex;justify-content:space-between;gap:16px;align-items:baseline}.resume-project-topline h3,.resume-strength-card h3,.resume-stack-group h3,.resume-background-body h3,.resume-credential-item h3{margin:0;color:var(--text);font-size:1.16rem;font-weight:800;letter-spacing:-.02em}.resume-project-topline span,.resume-project-meta,.resume-background-period{margin:0;color:var(--muted);font-size:13px;font-weight:700}.resume-chip-list{display:flex;flex-wrap:wrap;gap:8px}.resume-chip{display:inline-flex;align-items:center;min-height:32px;padding:0 12px;border:1px solid rgba(53,95,155,.14);border-radius:8px;background:#f8fbff;color:var(--accent);font-size:13px;font-weight:700}.resume-bullet-list{display:grid;gap:8px;margin:0;padding-left:1.15rem;color:var(--muted-strong)}.resume-bullet-list.compact{gap:6px}.resume-project-links{display:grid;gap:4px}.resume-inline-label{color:var(--accent);font-size:13px;font-weight:800}.resume-project-links p{margin:0;color:var(--muted-strong);font-size:14px;line-height:1.55}.resume-side-section{gap:14px;padding-top:6px}.resume-side-section+.resume-side-section{padding-top:18px;border-top:1px solid rgba(53,95,155,.14)}.resume-strength-card{gap:8px}.resume-stack-group{display:grid;gap:8px}.resume-background-compact-item{display:grid;grid-template-columns:86px minmax(0,1fr);gap:12px;padding-top:12px;border-top:1px solid rgba(53,95,155,.12)}.resume-background-compact-item:first-child{padding-top:0;border-top:none}.resume-credential-item{display:grid;gap:4px}.resume-footer-actions{display:flex;flex-wrap:wrap;gap:10px;padding-top:4px}body[data-page=portfolio]{background:linear-gradient(180deg,rgba(37,99,235,.05),transparent 220px),linear-gradient(180deg,#f8f7f4,#f4f2ed)}body[data-page=portfolio] .site-header-inner{max-width:1060px;background:#ffffffe6}.portfolio-overview{display:grid;place-items:center}.portfolio-overview-sheet{display:grid;gap:26px;width:min(100%,1040px);padding:34px 36px 42px;border:1px solid rgba(203,191,174,.72);border-radius:22px;background:#fffffffa;box-shadow:0 24px 54px #18212f0d}.portfolio-overview-hero{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,.85fr);gap:22px;align-items:start}.portfolio-overview-main,.portfolio-overview-side-top,.portfolio-overview-projects,.portfolio-overview-sidebar,.portfolio-info-card{display:grid;gap:14px}.portfolio-overview-title{margin:0;color:var(--text);font-family:var(--serif);font-size:clamp(2.4rem,5vw,3.5rem);line-height:1;letter-spacing:-.05em}.portfolio-overview-role{margin:0;color:var(--accent);font-size:1.1rem;font-weight:700}.portfolio-overview-summary,.portfolio-project-summary,.portfolio-project-proof p{margin:0;color:var(--muted-strong);line-height:1.68}.portfolio-overview-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(320px,.85fr);gap:24px;align-items:start}.portfolio-project-list,.portfolio-stack-list{display:grid;gap:14px}.portfolio-project-card{display:grid;grid-template-columns:42px minmax(0,1fr);gap:12px;align-items:start}.portfolio-project-index{display:grid;place-items:center;width:42px;height:42px;border-radius:10px;background:var(--accent);color:#fff;font-size:1.35rem;font-weight:800}.portfolio-project-body,.portfolio-info-card{padding:18px 20px;border:1px solid rgba(203,191,174,.62);border-radius:16px;background:#fffffff5}.portfolio-project-headline{display:flex;justify-content:space-between;gap:16px;align-items:start}.portfolio-project-title{margin:4px 0 0;font-size:1.22rem;line-height:1.25;letter-spacing:-.02em}.portfolio-project-title a{color:var(--text)}.portfolio-project-badge{min-height:32px;padding:0 12px;border-radius:999px;background:#2563eb14;color:var(--accent-strong);font-size:12px;font-weight:700;line-height:32px;white-space:nowrap}.portfolio-project-proof-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.portfolio-project-proof{display:grid;gap:6px;padding:12px 14px;border:1px solid rgba(37,99,235,.12);border-radius:12px;background:#fbfdff}.portfolio-stack-group{display:grid;gap:8px}.portfolio-stack-group h3{margin:0;color:var(--text);font-size:1rem;font-weight:800}.li-layout{display:grid;grid-template-columns:240px minmax(0,1fr) 300px;gap:22px;align-items:start}.li-left,.li-main,.li-right{display:grid;gap:12px}.li-card{border:1px solid var(--line);border-radius:8px;background:var(--surface-strong);box-shadow:0 1px 2px #00000014}.li-mini{padding:18px 16px;text-align:center}.li-mini-photo,.li-profile-photo{overflow:hidden;border-radius:50%;background:#d7d7d7}.li-mini-photo{width:72px;height:72px;margin:0 auto 10px}.li-mini span{display:block;margin-top:4px;color:var(--muted);font-size:13px}.li-mini-stats{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}.li-mini-stats p{display:flex;justify-content:space-between;margin:8px 0 0;font-size:13px}.li-mini-stats strong{color:var(--accent)}.li-contact{display:grid;gap:8px;padding:16px}.li-contact h2,.li-title-row h2{margin:0;font-size:1.2rem}.li-contact a,.li-contact p{margin:0;color:var(--muted-strong)}.li-profile{overflow:hidden}.li-profile-banner{height:148px;background:linear-gradient(90deg,#70b5f9,#c37d16,#0a66c2)}.li-profile-photo{width:130px;height:130px;margin:-64px 0 0 24px;border:4px solid #fff;box-shadow:0 0 0 1px var(--line)}.li-profile-body{padding:14px 24px 22px}.li-profile-body h1{font-size:2rem}.li-role{margin-top:4px;font-weight:600}.li-meta{margin-top:3px;color:var(--muted)}.li-summary{margin-top:14px;color:var(--muted-strong)}.li-actions{display:flex;gap:10px;margin-top:16px;flex-wrap:wrap}.li-section{padding:20px 24px}.li-project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.li-project-card{display:grid;gap:8px;padding:14px;border:1px solid var(--line);border-radius:8px;transition:box-shadow .2s ease}.li-project-card:hover{box-shadow:var(--shadow-soft)}.li-project-card p{margin:0;color:var(--accent);font-weight:700;font-size:12px}.li-project-card h3{margin:0;font-size:16px}.li-project-card span{color:var(--muted);font-size:14px}@media(max-width:1100px){.content-grid,.hero-panel{grid-template-columns:1fr}.aside-stack,.skill-grid,.proof-grid,.card-grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}.li-layout{grid-template-columns:1fr}.li-left,.li-right{grid-template-columns:repeat(2,minmax(0,1fr))}.resume-sheet{padding:38px 34px 42px}.resume-hero,.resume-main-grid,.resume-background-compact-item{grid-template-columns:1fr}.resume-photo-frame{justify-content:start}.resume-photo-slot{width:136px;height:180px}.resume-background-period{padding-top:0}}@media(max-width:780px){.site-header{padding:12px 12px 0}.site-header-inner{grid-template-columns:1fr;border-radius:18px;padding:14px}.brand{justify-content:center}.site-nav{justify-content:flex-start;padding-bottom:2px}.header-link{width:100%}.page-shell{padding:18px 12px 48px}.hero-panel,.panel{padding:18px}.page-title{max-width:none;font-size:clamp(2rem,10vw,3rem)}.button{width:100%}.text-actions{gap:10px 14px}.timeline-item,.skill-grid,.proof-grid,.card-grid-2,.card-grid-3,.flow-grid,.aside-stack{grid-template-columns:1fr}.timeline-period{margin-bottom:-4px}.li-left,.li-right,.li-project-grid{grid-template-columns:1fr}.li-profile-photo{width:112px;height:112px;margin-top:-56px}.li-profile-body,.li-section{padding:16px}.resume-sheet{gap:24px;padding:26px 22px 30px;border-radius:26px}.resume-hero,.resume-main-grid,.resume-background-compact-item,.resume-project-entry{grid-template-columns:1fr}.resume-contact-row{grid-template-columns:1fr;gap:4px}.resume-project-topline{display:grid;gap:4px}.resume-photo-frame{justify-content:start}.resume-side-section+.resume-side-section{padding-top:16px}.resume-footer-actions .button{width:100%}}@media(max-width:560px){.brand-copy span{display:none}.nav-link,.header-link{min-height:44px;padding:0 12px;font-size:13px}.hero-chip-row,.tag-list,.text-actions{gap:8px}.chip,.tag,.pill{min-height:34px;padding:0 14px;font-size:13px}.page-map-link{min-height:48px}.resume-name{font-size:clamp(2.4rem,14vw,3.2rem)}.resume-photo-slot{width:120px;height:160px}}
