@import "https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,300;1,9..144,300&family=JetBrains+Mono:wght@400;500;700&family=Noto+Sans+KR:wght@300;400;500;600&display=swap";:root{color:#24211d;font-synthesis:none;text-rendering:optimizelegibility;--heading:#181612;--muted:#716d65;--surface:#fffdf9;--input:#fff;--border:#ddd8ce;--accent:#2f6b4f;--tag:#eeece5;--notice:#e7f1eb;background:#f5f3ee;font-family:Inter,Pretendard,Noto Sans KR,system-ui,sans-serif}html{scroll-behavior:smooth}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}.admin-login-shell{background:#f4f1ec;place-items:center;min-height:100vh;padding:24px;display:grid}.admin-login{background:#ffffff8c;border:1px solid #d9d3cb;gap:20px;width:min(460px,100%);padding:40px;display:grid}.admin-login>span{color:#007a5e;letter-spacing:.12em;font:10px JetBrains Mono,monospace}.admin-login h1{margin:0;font-size:42px}.admin-login p{color:#716d65;margin:0}.admin-login label{color:#716d65;gap:8px;font-size:12px;display:grid}.admin-login input{background:#fff;border:1px solid #d9d3cb;padding:13px;font:14px inherit}.admin-login input:focus{outline:1px solid #007a5e}.admin-login button{color:#fff;background:#007a5e;border:1px solid #007a5e;padding:14px;font-weight:700}.admin-login button:disabled{opacity:.6}.login-notice{color:#79372d;background:#a24c3d14;border-left:2px solid #a24c3d;padding:12px;font-size:13px}h1,h2,h3,p{margin-top:0}h1{color:var(--heading);letter-spacing:-.055em;font-size:clamp(36px,6vw,62px);line-height:1}h2{color:var(--heading);letter-spacing:-.025em;font-size:24px}p{line-height:1.65}@media (prefers-color-scheme:dark){:root{color:#ddd8ce;--heading:#f4f1e9;--muted:#aaa69d;--surface:#20231e;--input:#191c18;--border:#3a3e36;--accent:#70b58d;--tag:#30342d;--notice:#263b2e;background:#171915}}.portfolio-shell .hero{padding-top:90px}.admin-logout-button{z-index:30;color:#a24c3d;letter-spacing:.06em;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#f4f1eceb;border:1px solid #a24c3d;padding:9px 12px;font:10px JetBrains Mono,monospace;position:fixed;bottom:20px;right:20px}.admin-logout-button:hover{color:#fff;background:#a24c3d}:root{--green:#007a5e;--ink:#1c1917;--copy:#554f49;--muted:#948c84;--line:#d9d3cb;--paper:#f4f1ec}.portfolio-shell{min-height:100vh;color:var(--ink);background:var(--paper);font-family:Noto Sans KR,sans-serif;font-weight:300;overflow:hidden}.topbar{z-index:20;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#f4f1ece0;border-bottom:1px solid #d9d3cbbf;justify-content:space-between;align-items:center;height:70px;padding:0 clamp(24px,5vw,72px);display:flex;position:fixed;inset:0 0 auto}.brand,.topbar nav,.section-number,.terminal,.filters,.project-index,.project-heading small,.project-footer time,label,.editor-title,.submit,.more,footer{font-family:JetBrains Mono,monospace}.brand{color:var(--green);letter-spacing:.1em;font-size:12px;font-weight:700}.topbar nav{color:var(--muted);letter-spacing:.12em;text-transform:uppercase;gap:28px;font-size:10px;display:flex}.topbar a:hover{color:var(--green)}.hero{align-items:flex-end;min-height:100vh;padding:140px clamp(24px,7vw,100px) 90px;display:flex;position:relative}.grid-bg{background-image:linear-gradient(#007a5e0e 1px,#0000 1px),linear-gradient(90deg,#007a5e0e 1px,#0000 1px);background-size:60px 60px}.hero-glow{background:radial-gradient(70% 70% at 20% 65%,#007a5e14,#0000 70%);position:absolute;inset:0}.hero-content{max-width:920px;position:relative}.section-number{color:#007a5e94;letter-spacing:.12em;margin-bottom:26px;font-size:10px;display:block}.portfolio-shell h1,.portfolio-shell h2,.portfolio-shell h3{font-family:Fraunces,serif;font-weight:300}.portfolio-shell h1{letter-spacing:-.035em;margin:0 0 24px;font-size:clamp(3.6rem,9vw,7.6rem);line-height:.98}.portfolio-shell h1 em,.portfolio-shell h2 em{color:#1c19175c;font-weight:300}.terminal{margin-bottom:36px;font-size:13px}.terminal b,.terminal span{color:var(--green)}.terminal span{animation:1s step-end infinite blink}@keyframes blink{50%{opacity:0}}.hero-copy{max-width:640px;color:var(--copy);font-size:16px;line-height:1.9}.hero-actions{flex-wrap:wrap;gap:12px;margin-top:40px;display:flex}.button{letter-spacing:.12em;text-transform:uppercase;border:1px solid var(--line);padding:14px 22px;font:700 10px JetBrains Mono,monospace}.button.primary{background:var(--green);color:#fff;border-color:var(--green)}.button.ghost:hover{border-color:var(--green);color:var(--green)}.vertical-note{writing-mode:vertical-rl;color:#c8c1b9;letter-spacing:.18em;font:9px JetBrains Mono,monospace;position:absolute;bottom:32px;right:clamp(20px,4vw,60px)}.content-section{border-top:1px solid var(--line);max-width:1120px;margin:auto;padding:120px 40px}.section-grid{grid-template-columns:1.05fr 1fr;align-items:start;gap:clamp(40px,9vw,110px);display:grid}.portfolio-shell h2{letter-spacing:-.025em;margin:0;font-size:clamp(2.2rem,4.5vw,3.8rem);line-height:1.15}.section-grid p{color:var(--copy);line-height:1.9}.stats{border:1px solid var(--line);background:var(--line);grid-template-columns:repeat(3,1fr);gap:1px;margin-top:35px;display:grid}.stats span{background:var(--paper);color:var(--muted);text-transform:uppercase;padding:18px;font:10px JetBrains Mono,monospace}.stats b{color:var(--green);margin-bottom:8px;font-size:16px;display:block}.section-title{justify-content:space-between;align-items:end;gap:20px;margin-bottom:35px;display:flex}.section-title h2{font-size:clamp(2rem,4vw,3.2rem)}.section-title small{color:var(--muted);letter-spacing:.12em;font:9px JetBrains Mono,monospace}.filters{flex-wrap:wrap;gap:8px;margin-bottom:26px;display:flex}.filters button,.tags button{border:1px solid var(--line);color:var(--muted);letter-spacing:.08em;background:0 0;padding:7px 10px;font-size:9px}.filters button.active,.filters button:hover,.tags button:hover{color:var(--green);border-color:var(--green);background:#007a5e0d}.notice{border-left:2px solid var(--green);color:var(--copy);background:#007a5e12;margin-bottom:20px;padding:12px 15px;font-size:13px}.project-list{border-top:1px solid var(--line)}.project-card{border-bottom:1px solid var(--line);grid-template-columns:55px 1fr;gap:20px;padding:34px 16px;transition:background .25s;display:grid}.project-card:hover{background:#ffffffa6}.project-index{color:#007a5e73;padding-top:8px;font-size:10px}.project-heading{justify-content:space-between;align-items:baseline;gap:20px;display:flex}.project-heading h3{margin:0 0 14px;font-size:26px}.project-heading small{color:var(--muted);letter-spacing:.1em;font-size:9px}.project-card p{max-width:740px;color:var(--copy);line-height:1.8}.work-list{border-left:2px solid #007a5e40;gap:8px;margin:22px 0;padding-left:14px;display:grid}.work-list div{gap:3px;display:grid}.work-list strong{font-size:13px;font-weight:500}.work-list span{color:var(--muted);white-space:pre-wrap;font-size:12px;line-height:1.6}.project-footer{justify-content:space-between;align-items:end;gap:20px;margin-top:24px;display:flex}.tags{flex-wrap:wrap;gap:7px;display:flex}.tags button{color:var(--green);border-color:#007a5e47;padding:4px 8px}.project-footer time{color:var(--muted);white-space:nowrap;font-size:9px}.empty{text-align:center;color:var(--muted);padding:55px 20px;font:11px JetBrains Mono,monospace}.more{color:var(--green);border:1px solid var(--line);letter-spacing:.1em;background:0 0;margin:30px auto 0;padding:12px 20px;font-size:9px;display:block}.manage-heading{margin-bottom:55px}.create-form{border:1px solid var(--line);background:#ffffff73;grid-template-columns:repeat(2,1fr);gap:24px;padding:34px;display:grid}.wide{grid-column:1/-1}.create-form label{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;gap:9px;font-size:9px;display:grid}.create-form input,.create-form select,.create-form textarea{border:1px solid var(--line);width:100%;color:var(--ink);background:#ffffffbf;border-radius:0;outline:0;padding:13px 14px;font:13px Noto Sans KR,sans-serif}.create-form input:focus,.create-form select:focus,.create-form textarea:focus{border-color:var(--green)}.create-form textarea{resize:vertical}.editor-title{color:var(--muted);letter-spacing:.1em;justify-content:space-between;font-size:9px;display:flex}.editor-title button,.remove{color:var(--green);background:0 0;border:0;font-size:11px}.work-editor{gap:12px;display:grid}.work-row{grid-template-columns:1fr 2fr auto;gap:10px;display:grid}.remove{color:#a24c3d}.submit{border:1px solid var(--green);background:var(--green);color:#fff;letter-spacing:.12em;padding:15px;font-size:10px;font-weight:700}.submit:disabled{opacity:.55;cursor:wait}.portfolio-shell footer{border-top:1px solid var(--line);max-width:1120px;color:var(--muted);letter-spacing:.1em;justify-content:space-between;gap:20px;margin:auto;padding:35px 40px;font-size:9px;display:flex}.portfolio-shell footer span:first-child{color:var(--green)}@media (width<=720px){.topbar{height:62px}.topbar nav{gap:13px}.hero{min-height:820px;padding-left:24px;padding-right:24px}.content-section{padding:85px 24px}.section-grid{grid-template-columns:1fr;gap:32px}.stats{grid-template-columns:1fr}.project-card{grid-template-columns:28px 1fr;padding-left:0;padding-right:0}.project-heading,.project-footer{flex-direction:column;align-items:flex-start}.create-form{grid-template-columns:1fr;padding:22px}.wide{grid-column:auto}.work-row{border-bottom:1px solid var(--line);grid-template-columns:1fr;padding-bottom:12px}.portfolio-shell footer{flex-direction:column;padding:28px 24px}.vertical-note{display:none}}@media (width<=450px){.topbar nav a:first-child{display:none}.portfolio-shell h1{font-size:3.25rem}.hero-copy{font-size:14px}.section-title{flex-direction:column;align-items:flex-start}}.portfolio-shell a{text-decoration:none}.portfolio-shell{font-size:17px}.portfolio-shell .brand{font-size:14px}.portfolio-shell .topbar nav,.portfolio-shell .section-number,.portfolio-shell .button{font-size:12px}.portfolio-shell .section-title small{font-size:11px}.portfolio-shell .stats span{font-size:12px}.portfolio-shell .stats b{font-size:18px}.portfolio-shell .filters button,.portfolio-shell .tags button{font-size:11px}.portfolio-shell .project-index{font-size:17px}.portfolio-shell .project-heading small{font-size:11px}.portfolio-shell .project-footer time,.portfolio-shell .empty{font-size:13px}.portfolio-shell .more{font-size:11px}.portfolio-shell .create-form input,.portfolio-shell .create-form select,.portfolio-shell .create-form textarea{font-size:15px}.portfolio-shell .tech-picker small{font-size:14px}.portfolio-shell .submit{font-size:12px}.portfolio-shell footer{font-size:11px}.portfolio-shell .hero-glow{background:radial-gradient(48% 52% at 18% 68%,#007a5e12,#0000 72%)}.about-content{white-space:pre-wrap}.work-list strong{align-items:center;gap:9px;font-size:17px;font-weight:500;display:flex}.hero-name{white-space:nowrap;font-size:clamp(2rem,6.8vw,5.3rem);display:inline-block}.contact-links{color:#948c84;letter-spacing:.1em;flex-wrap:wrap;gap:20px;margin-top:24px;font:10px JetBrains Mono,monospace;display:flex}.hero-actions .button.ghost{color:#1c1917;background:#fff;border-color:#c8c1b9;font-size:11px;font-weight:400}.hero-actions .button.ghost:hover{color:#007a5e;background:#fff;border-color:#007a5e}.hero-actions .button.primary{transition:background .2s,border-color .2s,transform .2s,box-shadow .2s}.hero-actions .button.primary:hover{background:#005f49;border-color:#005f49;transform:translateY(-2px);box-shadow:0 7px 18px #007a5e33}.scroll-indicator{color:#948c84;letter-spacing:.15em;justify-items:center;gap:7px;font:9px JetBrains Mono,monospace;display:grid;position:absolute;bottom:30px;left:50%;transform:translate(-50%)}.scroll-indicator b{color:#007a5e;font-size:18px;animation:1.5s ease-in-out infinite scroll-down}@keyframes scroll-down{0%,to{opacity:.45;transform:translateY(0)}50%{opacity:1;transform:translateY(8px)}}.work-list strong:before{content:"";background:#007a5e;border-radius:50%;flex:0 0 7px;width:7px;height:7px;box-shadow:0 0 0 3px #007a5e1f}.work-list span{color:#625c56;margin-left:16px;font-size:16px;line-height:1.7}.tech-picker{gap:12px;display:grid}.tech-picker>span{color:#948c84;letter-spacing:.1em;text-transform:uppercase;font:11px JetBrains Mono,monospace}.create-form label,.create-form .editor-title{font-size:11px}.tech-picker>div{flex-wrap:wrap;gap:8px;display:flex}.tech-search{grid-template-columns:auto 1fr auto;gap:8px;display:grid!important}.tech-search input{min-width:0}.tech-search select{min-width:170px}.tech-options{display:grid!important}.tech-option-group{gap:7px;display:grid}.tech-option-group>strong{color:#948c84;letter-spacing:.08em;text-transform:uppercase;font:9px JetBrains Mono,monospace}.tech-option-group>div{flex-wrap:wrap;gap:8px;display:flex}.tech-search button{color:#007a5e;border-color:#007a5e;min-width:72px}.tech-search button:disabled{cursor:default;opacity:.4}.tech-picker small{color:#948c84;font-size:12px}.tech-picker small.tech-error{color:#a24c3d}.tech-picker button{color:#777069;letter-spacing:.05em;background:0 0;border:1px solid #d9d3cb;padding:8px 12px;font:10px JetBrains Mono,monospace}.tech-picker button:hover,.tech-picker button.selected{color:#007a5e;background:#007a5e14;border-color:#007a5e}.tech-option{display:inline-flex}.tech-option>button:first-child{border-right:0}.tech-option .tech-delete{color:#a24c3d;min-width:30px;padding:8px}.tech-option .tech-delete:hover{color:#a24c3d;background:#a24c3d14;border-color:#a24c3d}.project-card{grid-template-columns:145px 1fr;position:relative}.project-card:last-of-type{border-bottom:0}.project-index{font-size:15px}.project-heading small{color:#007a5e;width:125px;font-size:12px;line-height:1.5;position:absolute;top:66px;left:16px}.project-footer time{white-space:normal;width:125px;font-size:11px;line-height:1.6;position:absolute;top:92px;left:16px}.project-footer .tags button{padding:6px 10px;font-size:12px;line-height:1.35}.project-card-tools{align-items:center;gap:12px;display:flex}.project-actions{gap:7px;display:flex}.project-actions button{color:#007a5e;background:0 0;border:1px solid #d9d3cb;padding:6px 10px;font:10px JetBrains Mono,monospace}.project-actions button:last-child{color:#a24c3d}@media (width<=720px){.project-card{grid-template-columns:105px 1fr}.project-heading small,.project-footer time{width:95px;left:0}.project-heading small{top:64px}.project-footer time{top:90px}}.portfolio-shell main{flex-direction:column;display:flex}.portfolio-shell .content-section{border-top:0;width:100%;position:relative}.portfolio-shell .content-section:before{border-top:1px solid var(--line);content:"";width:100vw;position:absolute;top:0;left:50%;transform:translate(-50%)}.portfolio-shell #about:before{display:none}.portfolio-shell .hero{order:1}.portfolio-shell #about{order:2}.portfolio-shell .career-display{order:3}.portfolio-shell #projects{order:4}.portfolio-shell .tech-stack-section{order:5}.portfolio-shell .education-display{order:6}.portfolio-shell .certification-display{order:7}.portfolio-shell #manage{order:8}.portfolio-shell .career-manage{order:9}.portfolio-shell .education-manage{order:10}.portfolio-shell .certification-manage{order:11}.stack-showcase{border-top:1px solid var(--line);display:grid}.stack-showcase article{border-bottom:1px solid var(--line);grid-template-columns:190px 1fr;align-items:start;gap:32px;min-height:118px;padding:32px 24px;display:grid}.stack-showcase h3{color:var(--ink);letter-spacing:0;text-align:right;text-transform:none;margin:3px 0 0;font:500 15px JetBrains Mono,monospace}.stack-showcase article>div{flex-wrap:wrap;gap:9px;display:flex}.stack-showcase article span{color:var(--ink);background:#ffffff94;border:1px solid #007a5e3d;border-radius:999px;padding:7px 11px;font:13px JetBrains Mono,monospace}.portfolio-shell:not(.admin-mode) #manage,.portfolio-shell:not(.admin-mode) .topbar a[href=\#manage],.portfolio-shell:not(.admin-mode) .hero-actions a[href=\#manage]{display:none}.career-list{border-top:1px solid var(--line)}.modal-description{color:var(--copy);margin:-12px 0 24px;line-height:1.7}.career-card{border-bottom:1px solid var(--line);grid-template-columns:260px 1fr;gap:42px;padding:34px 16px;display:grid}.career-card:last-of-type{border-bottom:0}.career-company h3{margin:0 0 10px;font-size:27px}.career-company time{color:var(--green);font:13px JetBrains Mono,monospace}.career-actions{gap:7px;margin-top:16px;display:flex}.career-actions button,.career-cancel{border:1px solid var(--line);color:var(--green);background:0 0;padding:6px 10px;font:10px JetBrains Mono,monospace}.career-actions button:last-child{color:#a24c3d}.career-form .career-cancel{width:100%}.career-roles{gap:28px;display:grid}.career-role h4{margin:0 0 12px;font-size:19px;font-weight:500}.career-role ul{gap:8px;margin:0;padding:0;list-style:none;display:grid}.career-role li{color:var(--copy);padding-left:17px;font-size:16px;line-height:1.7;position:relative}.career-role li:before{color:var(--green);content:"—";position:absolute;top:0;left:0}.career-role-editor{gap:12px;display:grid}.career-editor-heading,.career-role-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.career-editor-heading{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;font:11px JetBrains Mono,monospace}.career-editor-heading button,.career-add-activity,.career-remove{color:var(--green);background:0 0;border:0;font-size:11px}.career-role-editor fieldset{border:1px solid var(--line);gap:12px;margin:0;padding:16px;display:grid}.career-role-heading input{flex:1;font-weight:500}.career-activity-editor{gap:8px;padding-left:18px;display:grid}.career-activity-editor>div{grid-template-columns:1fr auto;gap:6px;display:grid}.career-form .career-remove{color:#a24c3d;white-space:nowrap;width:auto;padding:6px}.career-add-activity{justify-self:start}@media (width<=720px){.stack-showcase article{grid-template-columns:1fr;gap:16px;padding:26px 0}.stack-showcase h3{text-align:left}.career-card{grid-template-columns:1fr;gap:24px}.career-activity-editor{padding-left:0}}.modal-open{overflow:hidden}.project-github{color:var(--green);letter-spacing:.05em;border-bottom:1px solid #007a5e59;margin-top:4px;font:11px JetBrains Mono,monospace;display:inline-block}.project-github:hover{border-color:var(--green)}.project-footer time{white-space:nowrap;flex-shrink:0}.edit-modal{z-index:100;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#1c19177a;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.edit-modal-panel{border:1px solid var(--line);background:var(--paper);width:min(960px,100%);max-height:calc(100vh - 48px);padding:34px;overflow-y:auto;box-shadow:0 24px 80px #1c191738}.edit-modal-header{justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:30px;display:flex}.edit-modal-header .section-number{margin-bottom:12px}.edit-modal-header h2{font-size:clamp(2rem,4vw,3.2rem)}.edit-modal-close{border:1px solid var(--line);width:38px;height:38px;color:var(--ink);background:0 0;font-size:22px}.manager-list{border-top:1px solid var(--line);margin-bottom:28px;display:grid}.manager-list>div{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:20px;padding:18px 12px;display:flex}.manager-list strong{font-size:15px;font-weight:500}.manager-list span{gap:7px;display:flex}.manager-list button,.manager-cancel{border:1px solid var(--line);color:var(--green);background:0 0;padding:7px 10px;font:10px JetBrains Mono,monospace}.manager-list button:last-child{color:#a24c3d}.manager-form{margin-top:28px}.manager-form .manager-cancel{width:100%}@media (width<=720px){.edit-modal{padding:0}.edit-modal-panel{border:0;min-height:100vh;max-height:100vh;padding:24px}}.portfolio-shell .profile-editor{order:12}.profile-editor .create-form{width:min(100%,520px);margin-left:auto}@media (width<=720px){.profile-editor .create-form{width:100%}}.side-navigation{z-index:18;width:128px;display:grid;position:fixed;top:50%;right:22px;transform:translateY(-50%)}.side-navigation a{color:var(--muted);letter-spacing:.08em;text-align:center;border:1px solid #0000;border-radius:5px;padding:9px 12px;font:12px JetBrains Mono,monospace;transition:border-color .2s,color .2s,background .2s}.side-navigation a:hover,.side-navigation a.active{border-color:var(--green);color:var(--green);background:#ffffffb8}@media (width<=1380px){.side-navigation{display:none}}@media (width<=720px){.education-list article{grid-template-columns:1fr;gap:20px}}@media (width<=720px){.section-title-actions{justify-content:space-between;width:100%}.add-entry{padding:9px 11px}}.education-list,.certification-list{border-top:1px solid var(--line)}.education-list article{border-bottom:1px solid var(--line);grid-template-columns:260px 1fr;gap:42px;padding:34px 16px;display:grid}.education-list h3,.certification-list h3{margin:8px 0 10px;font-size:25px}.education-list small,.education-list time,.certification-list time{color:var(--green);font:12px JetBrains Mono,monospace}.education-list h4{margin:0 0 9px;font-size:18px}.education-list strong{color:var(--green);font-size:13px}.education-list p{white-space:pre-wrap;line-height:1.8}.entry-actions{gap:7px;margin-top:15px;display:flex}.entry-actions button{border:1px solid var(--line);color:var(--green);background:0 0;padding:6px 10px}.entry-actions button:last-child{color:#a24c3d}@media (width<=720px){.education-list article{grid-template-columns:1fr;gap:20px}}.section-title-actions{align-items:center;gap:16px;display:flex}.add-entry{border:1px solid var(--green);background:var(--green);color:#fff;letter-spacing:.06em;padding:10px 14px;font:700 10px JetBrains Mono,monospace}.add-entry:hover{color:var(--green);background:0 0}@media (width<=720px){.section-title-actions{justify-content:space-between;width:100%}.add-entry{padding:9px 11px}}.certification-list article{border-bottom:1px solid var(--line);grid-template-columns:180px 1fr;gap:42px;padding:28px 16px;display:grid}.certification-list h3{margin:0 0 8px}.certification-list p{color:var(--copy);margin:0}.certification-list a{color:var(--green);margin-top:10px;font-size:13px;display:inline-block}@media (width<=720px){.certification-list article{grid-template-columns:1fr;gap:10px}}
