:root{--paper: #efe6d4;--paper-raised: #f7f1e4;--paper-sunk: #e5dbc4;--ink: #232838;--ink-dim: #6b6578;--ink-faint: #a99f8f;--accent: #c25a34;--accent-strong: #a5482a;--neon: #1f8f86;--line: rgba(35, 40, 56, .13);--line-strong: rgba(35, 40, 56, .26);--key-face: linear-gradient(180deg, #fbf6ec 0%, #ece1cd 100%);--key-edge: rgba(35, 40, 56, .28);--key-shadow: rgba(35, 40, 56, .18);--selection: rgba(201, 111, 74, .26);--font-pixel: "Pixelify Sans", "Silkscreen", ui-monospace, monospace;--font-sans: var(--font-pixel);--font-mono: var(--font-pixel);--font-ko: "Apple SD Gothic Neo", "Malgun Gothic", "Pixelify Sans", sans-serif;--shell: min(94vw, 84rem);--measure: 40rem;--pad-x: clamp(1.25rem, 4vw, 3rem);--section-gap: clamp(2.75rem, 5.5vw, 4.25rem);--dur: .15s;--ease: cubic-bezier(.22, .61, .36, 1);color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--paper: #12151f;--paper-raised: #1c2130;--paper-sunk: #0b0d14;--ink: #ece7dd;--ink-dim: #948fa6;--ink-faint: #565269;--accent: #d8734d;--accent-strong: #ef9366;--neon: #4ce0d2;--line: rgba(198, 196, 220, .14);--line-strong: rgba(198, 196, 220, .26);--key-face: linear-gradient(180deg, #232941 0%, #161a26 100%);--key-edge: rgba(0, 0, 0, .6);--key-shadow: rgba(0, 0, 0, .55);--selection: rgba(76, 224, 210, .24)}}:root[data-theme=dark]{color-scheme:dark;--paper: #12151f;--paper-raised: #1c2130;--paper-sunk: #0b0d14;--ink: #ece7dd;--ink-dim: #948fa6;--ink-faint: #565269;--accent: #d8734d;--accent-strong: #ef9366;--neon: #4ce0d2;--line: rgba(198, 196, 220, .14);--line-strong: rgba(198, 196, 220, .26);--key-face: linear-gradient(180deg, #232941 0%, #161a26 100%);--key-edge: rgba(0, 0, 0, .6);--key-shadow: rgba(0, 0, 0, .55);--selection: rgba(76, 224, 210, .24)}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:5.5rem}body{min-height:100dvh;background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:clamp(1rem,.96rem + .2vw,1.0625rem);line-height:1.62;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden;transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}::selection{background:var(--selection)}img,svg{display:block;max-width:100%}ul,ol{list-style:none;padding:0}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:.75rem;left:.75rem;z-index:100;padding:.6rem 1rem;background:var(--ink);color:var(--paper);border-radius:8px;font-size:.8rem;transform:translateY(-160%);transition:transform var(--dur) var(--ease)}.skip-link:focus{transform:translateY(0)}:where(a,button):focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.key{--key-drop: 3px;display:inline-flex;align-items:center;justify-content:center;gap:.4em;font-family:var(--font-pixel);font-size:.85rem;font-weight:500;letter-spacing:.01em;color:var(--ink);background:var(--key-face);border:1px solid var(--line-strong);border-radius:8px;padding:.5em .85em;box-shadow:0 var(--key-drop) 0 var(--key-edge),0 calc(var(--key-drop) + 2px) 6px var(--key-shadow);transform:translateY(0);transition:transform 90ms var(--ease),box-shadow 90ms var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease);user-select:none}.key:hover{color:var(--accent-strong);border-color:var(--accent)}.key:active,.key[data-pressed=true]{transform:translateY(var(--key-drop));box-shadow:0 0 0 var(--key-edge),0 1px 2px var(--key-shadow)}.key--icon{padding:.5em;width:2.4rem;height:2.4rem}.key--icon .ico{width:1.05rem;height:1.05rem}main{width:100%;max-width:var(--shell);margin-inline:auto;padding-inline:var(--pad-x);display:flex;flex-direction:column;position:relative}#about{order:1}#experience{order:2}#work{order:3}#contact{order:4}.section{padding-top:var(--section-gap);margin-top:var(--section-gap);border-top:1px solid var(--line)}.section__head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:clamp(1.75rem,4vw,3rem)}.section__meta{font-size:.82rem;color:var(--ink-faint);letter-spacing:.03em;white-space:nowrap}.eyebrow{font-family:var(--font-pixel);font-weight:500;font-size:clamp(1rem,.9rem + .5vw,1.2rem);letter-spacing:.02em;color:var(--ink)}.eyebrow__prompt{color:var(--neon);margin-right:.15em}.site-nav{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:1rem;width:100%;max-width:var(--shell);margin-inline:auto;padding:.75rem var(--pad-x);background:color-mix(in srgb,var(--paper) 80%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid transparent;transition:border-color var(--dur) var(--ease)}.site-nav[data-scrolled=true]{border-bottom-color:var(--line)}.brand{display:inline-flex;align-items:center;gap:.6rem;margin-right:auto;font-size:.95rem;color:var(--ink-dim)}.brand__cap{font-size:.85rem;padding:.35em .5em;color:var(--paper);background:var(--ink);border-color:transparent;box-shadow:0 3px 0 var(--key-edge)}.brand:hover .brand__name{color:var(--ink)}.brand__name{transition:color var(--dur) var(--ease)}.nav-links{display:flex;gap:.4rem}.nav-link{--key-drop: 3px}.nav-link[aria-current=true]{color:var(--accent-strong);border-color:var(--accent)}.nav-tools{display:flex;gap:.4rem}.nav-menu-btn{display:none}.ico{width:1.1rem;height:1.1rem}.ico--sound-on,.ico--moon{display:none}:root[data-theme=dark] .ico--sun,:root:not([data-theme]) .ico--sun{display:none}:root[data-theme=dark] .ico--moon,:root:not([data-theme]) .ico--moon{display:block}@media(prefers-color-scheme:light){:root:not([data-theme]) .ico--sun{display:block}:root:not([data-theme]) .ico--moon{display:none}}[data-sound-toggle][aria-pressed=true] .ico--sound-off{display:none}[data-sound-toggle][aria-pressed=true] .ico--sound-on{display:block}[data-sound-toggle][aria-pressed=true]{color:var(--accent-strong);border-color:var(--accent)}.hero{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(2rem,5vw,4rem);align-items:center;padding-top:clamp(2.5rem,7vw,5rem);padding-bottom:clamp(2rem,5vw,3rem)}@media(max-width:900px){.hero{grid-template-columns:1fr}}.hero__eyebrow{font-size:.85rem;letter-spacing:.06em;color:var(--ink-dim);margin-bottom:1rem}.hero__name{font-family:var(--font-pixel);font-weight:600;font-size:clamp(2.8rem,1.8rem + 6.5vw,5.75rem);line-height:.98;letter-spacing:.01em;color:var(--ink)}.hero__name .caret{display:inline-block;width:.09em;min-width:3px;height:.9em;margin-left:.06em;background:var(--neon);transform:translateY(.08em);animation:caret-blink 1s steps(1) infinite}@keyframes caret-blink{50%{opacity:0}}.hero__ko{font-family:var(--font-ko);font-size:clamp(1rem,.9rem + .8vw,1.4rem);color:var(--ink-faint);margin-top:.65rem}.hero__intro{font-size:clamp(1.05rem,1rem + .35vw,1.2rem);line-height:1.55;margin-top:1.6rem}.hero__status{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;font-size:.82rem;color:var(--ink-dim);margin-top:1.4rem}.hero__status .dot{color:var(--ink-faint)}.hero__links{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.9rem}.hero__term{display:flex;flex-direction:column;gap:.85rem}.term{display:flex;flex-direction:column;width:100%;height:auto;min-width:16rem;min-height:9rem;max-height:82vh;max-width:92vw;background:var(--paper-sunk);border:1px solid var(--line-strong);border-radius:12px;box-shadow:0 18px 40px -24px var(--key-shadow),inset 0 1px color-mix(in srgb,var(--ink) 6%,transparent);overflow:hidden;resize:both;will-change:transform}.term__bar{display:flex;align-items:center;gap:.6rem;padding:.6rem .85rem;background:color-mix(in srgb,var(--ink) 6%,transparent);border-bottom:1px solid var(--line);cursor:grab;user-select:none;touch-action:none}.term__bar:active{cursor:grabbing}.term__dots{display:inline-flex;gap:.4rem}.term__dots i{width:.7rem;height:.7rem;border-radius:50%;background:var(--ink-faint);opacity:.6}.term__dots i:nth-child(1){background:var(--accent);opacity:1}.term__dots i:nth-child(2){background:#ffd447}.term__dots i:nth-child(3){background:var(--neon)}.term__title{font-size:.72rem;color:var(--ink-faint);letter-spacing:.04em}.term{transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.term:focus-within{border-color:var(--accent);box-shadow:0 18px 40px -24px var(--key-shadow),0 0 0 1px var(--accent)}.term__body{font-family:var(--font-pixel);font-size:clamp(.82rem,.78rem + .2vw,.95rem);line-height:1.7;color:var(--ink);padding:1rem 1.15rem 1.25rem;margin:0;flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;white-space:pre-wrap;word-break:break-word;cursor:text;scrollbar-width:thin}.term__line{white-space:pre-wrap}.term__prompt{color:var(--neon)}.term__out{color:var(--ink-dim)}.term__accent{color:var(--accent-strong)}.term__cmdline{position:relative;display:flex;align-items:baseline;gap:.4em}.term__typed{white-space:pre-wrap;word-break:break-word}.term__input{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;background:transparent;color:transparent;caret-color:transparent;font:inherit;outline:none}.term__cursor{display:inline-block;width:.55em;height:1.05em;background:var(--accent);transform:translateY(.18em);animation:caret-blink 1s steps(1) infinite}.hero__hint{font-size:.78rem;color:var(--ink-faint);letter-spacing:.02em}.work-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1rem,2vw,1.5rem)}.card{display:flex;flex-direction:column;gap:.7rem;padding:clamp(1.25rem,2.5vw,1.75rem);background:var(--paper-raised);border:1px solid var(--line);border-bottom:3px solid var(--line-strong);border-radius:12px;transition:transform .16s var(--ease),border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.card:hover{transform:translateY(-3px);border-bottom-color:var(--accent);box-shadow:0 16px 34px -22px var(--key-shadow)}.card--feature{grid-column:1 / -1}.card__top{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.card__title{font-family:var(--font-pixel);font-weight:600;font-size:clamp(1.25rem,1.05rem + .9vw,1.7rem);line-height:1.1;letter-spacing:-.01em}.card--feature .card__title{font-size:clamp(1.5rem,1.1rem + 1.6vw,2.1rem)}.card__title a{display:inline-flex;align-items:baseline;transition:color var(--dur) var(--ease)}.card:hover .card__title a,.card__title a:focus-visible{color:var(--accent-strong)}.card__arrow{font-size:.7em;margin-left:.2em;opacity:0;transform:translate(-4px,2px);transition:opacity .16s var(--ease),transform .16s var(--ease)}.card:hover .card__arrow,.card__title a:focus-visible .card__arrow{opacity:1;transform:translate(0)}.card__year{font-size:.85rem;color:var(--ink-faint)}.card__role{font-size:.82rem;color:var(--accent-strong);letter-spacing:.01em}.card__desc{color:var(--ink-dim);line-height:1.55;max-width:42rem}.card__foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem 1rem;margin-top:auto;padding-top:.4rem}.card__links{display:flex;gap:.5rem}.card__badge{font-size:.74rem;font-weight:500;letter-spacing:.02em;color:var(--accent-strong);padding:.28em .7em;border:1px solid var(--accent);border-radius:999px;white-space:nowrap}.tags{display:flex;flex-wrap:wrap;gap:.4rem}.tag{font-size:.78rem;font-weight:500;color:var(--ink-dim);background:var(--paper-sunk);border:1px solid var(--line);border-bottom-width:2px;border-bottom-color:var(--line-strong);border-radius:6px;padding:.3em .6em}.link-key--sm{--key-drop: 2px;font-size:.78rem;padding:.4em .7em}.exp-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1rem,2vw,1.5rem)}.exp{display:grid;gap:.3rem;padding:1.25rem 1.35rem;background:var(--paper-raised);border:1px solid var(--line);border-left:3px solid var(--line-strong);border-radius:10px;transition:border-color var(--dur) var(--ease),transform .16s var(--ease)}.exp:hover{border-left-color:var(--accent);transform:translateY(-2px)}.exp__head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.35rem 1rem}.exp__role{font-family:var(--font-pixel);font-weight:600;font-size:1.1rem;letter-spacing:-.01em}.exp__range{font-size:.78rem;color:var(--ink-faint);white-space:nowrap}.exp__company{color:var(--accent-strong);font-weight:500;font-size:.95rem}.exp__summary{color:var(--ink-dim);margin-top:.25rem}.exp--edu{grid-column:1 / -1;border-left-style:dashed}.about{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(2rem,5vw,4rem);align-items:start}.about__copy p+p{margin-top:1.1rem}.about__copy p{max-width:34rem}.about__skills{display:flex;flex-direction:column;gap:1.6rem}.skill-group__label{font-family:var(--font-pixel);font-size:.9rem;color:var(--ink);margin-bottom:.85rem}.keyboard{display:flex;flex-wrap:wrap;gap:.5rem}.skill-key{--key-drop: 3px;font-size:.8rem;color:var(--ink-dim);cursor:default}.skill-key:hover{color:var(--accent-strong)}.section--contact{padding-bottom:1rem}.contact__lead{font-size:clamp(1.15rem,1rem + .8vw,1.5rem);max-width:var(--measure)}.contact__email{display:inline-block;font-family:var(--font-pixel);font-weight:500;font-size:clamp(1.5rem,1rem + 3.5vw,2.85rem);line-height:1.1;color:var(--accent-strong);margin-top:1.25rem;word-break:break-word;background-image:linear-gradient(var(--accent),var(--accent));background-repeat:no-repeat;background-position:0 100%;background-size:0 2px;transition:background-size .22s var(--ease)}.contact__email:hover,.contact__email:focus-visible{background-size:100% 2px}.contact__links{margin-top:2rem}.site-foot{max-width:var(--shell);margin:var(--section-gap) auto 0;padding:2rem var(--pad-x) 3rem;border-top:1px solid var(--line);font-size:.78rem;color:var(--ink-dim);display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem}.site-foot__dim{color:var(--ink-faint)}.chooser-page{display:flex;min-height:100dvh}.chooser{width:100%;max-width:52rem;margin:auto;padding:clamp(2rem,6vw,4rem) var(--pad-x);display:flex;flex-direction:column;gap:clamp(1.5rem,4vw,2.5rem)}.chooser__eyebrow{font-size:.9rem;letter-spacing:.06em;color:var(--ink-dim)}.chooser__title{font-family:var(--font-pixel);font-weight:600;font-size:clamp(2.5rem,1.8rem + 6vw,5rem);line-height:.98;letter-spacing:.01em;margin-top:.6rem}.chooser__sub{max-width:34rem;color:var(--ink-dim);font-size:clamp(1rem,.95rem + .3vw,1.15rem);margin-top:.5rem}.chooser__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1rem,2vw,1.5rem)}.choice{display:flex;align-items:flex-start;gap:1rem;padding:clamp(1.25rem,2.5vw,1.75rem);background:var(--paper-raised);border:1px solid var(--line);border-bottom:3px solid var(--line-strong);border-radius:14px;color:var(--ink);transition:transform .16s var(--ease),border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.choice:hover,.choice:focus-visible{transform:translateY(-3px);border-bottom-color:var(--accent);box-shadow:0 18px 38px -22px var(--key-shadow);outline:none}.choice:active{transform:translateY(0)}.choice__key{flex:none;width:2.4rem;height:2.4rem;font-size:1rem;font-weight:600}.choice__body{display:flex;flex-direction:column;gap:.5rem}.choice__name{font-family:var(--font-pixel);font-weight:600;font-size:clamp(1.35rem,1.1rem + 1vw,1.8rem);line-height:1.1;transition:color var(--dur) var(--ease)}.choice:hover .choice__name,.choice:focus-visible .choice__name{color:var(--accent-strong)}.choice__desc{color:var(--ink-dim);font-size:.92rem;line-height:1.5}.choice__meta{font-size:.72rem;color:var(--ink-faint);letter-spacing:.03em}.choice__go{margin-left:auto;align-self:center;color:var(--accent);font-size:1.3rem;opacity:0;transform:translate(-6px);transition:opacity .16s var(--ease),transform .16s var(--ease)}.choice:hover .choice__go,.choice:focus-visible .choice__go{opacity:1;transform:none}.chooser__hint{font-size:.85rem;color:var(--ink-faint)}.chooser__hint b{color:var(--ink-dim)}@media(max-width:640px){.chooser__grid{grid-template-columns:1fr}}.js [data-load],.js .reveal{opacity:0;transform:translateY(18px);transition:opacity .6s var(--ease),transform .6s var(--ease);transition-delay:calc(var(--i, 0) * 60ms)}.js [data-load]{transform:translateY(14px)}.js [data-load].in,.js .reveal.is-visible{opacity:1;transform:none}.js .keyboard .skill-key{opacity:0;transform:translateY(10px);transition:opacity .4s var(--ease),transform .4s var(--ease);transition-delay:calc(var(--i, 0) * 40ms)}.js .keyboard.is-visible .skill-key{opacity:1;transform:none}@media(max-width:900px){.about{grid-template-columns:1fr}}@media(max-width:720px){.work-grid,.exp-grid{grid-template-columns:1fr}}@media(max-width:640px){.nav-links{position:absolute;top:calc(100% + .4rem);right:var(--pad-x);flex-direction:column;gap:.4rem;padding:.5rem;background:var(--paper-raised);border:1px solid var(--line-strong);border-radius:12px;box-shadow:0 12px 30px var(--key-shadow);opacity:0;transform:translateY(-6px) scale(.98);pointer-events:none;transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease)}.nav-links[data-open=true]{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}.nav-menu-btn{display:inline-flex}.brand__name{display:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}.js [data-load],.js .reveal,.js .keyboard .skill-key{opacity:1!important;transform:none!important}.hero__name .caret,.term__cursor{display:none}}
