.portfolio-page{position:relative;max-width:var(--max-width);margin:0 auto;padding:clamp(1rem,3vw,2rem) var(--section-padding-x)}.shell-bar{display:flex;align-items:center;gap:.75rem;border:var(--border-w) solid var(--color-border);background:var(--color-surface);padding:.5rem .875rem;box-shadow:var(--shadow-hard-sm);font-size:.75rem;margin-bottom:clamp(1.5rem,4vw,2.5rem)}.shell-bar-dots{display:flex;gap:.35rem}.shell-bar-dot{width:11px;height:11px;border:1.5px solid var(--color-border);border-radius:50%;background:var(--color-bg-alt)}.shell-bar-dot--live{background:var(--color-accent)}.shell-bar-path{flex:1;color:var(--color-ink-soft);font-size:.75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shell-bar-hint{display:none;color:var(--color-ink-muted);font-size:.7rem}.shell-bar-hint kbd{font-family:var(--font-mono);font-size:.7rem;background:var(--color-bg-alt);border:1px solid var(--color-border);padding:0 .3rem;border-radius:2px}@media(min-width:720px){.shell-bar-hint{display:inline-flex;gap:.35rem;align-items:center}}.section{position:relative;width:100%;padding:clamp(2rem,5vw,3.5rem) 0;scroll-margin-top:1.5rem}.section-inner{width:100%}.section-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:.6rem .9rem;margin-bottom:1.25rem;padding-bottom:.75rem;border-bottom:var(--border-w) dashed var(--color-border)}.section-prompt{color:var(--color-accent);font-weight:700;font-size:.95rem;user-select:none}.section-cmd{font-size:clamp(1.05rem,2.2vw,1.4rem);font-weight:700;color:var(--color-ink);letter-spacing:-.01em}.section-cmd-flag{color:var(--color-ink-muted);font-weight:500}.section-number{margin-left:auto;font-size:.75rem;color:var(--color-ink-muted);letter-spacing:.05em}.dot-target{color:transparent;pointer-events:none;user-select:none;position:absolute;width:0;height:0;overflow:hidden}.section-rule{display:none}.hero{min-height:calc(100svh - 4rem);display:flex;flex-direction:column;justify-content:center;position:relative;padding:clamp(2rem,6vw,4rem) 0}.hero-inner{width:100%;border:var(--border-w) solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-hard-lg);padding:clamp(1.25rem,4vw,2.5rem)}.hero-whoami{font-size:.8rem;color:var(--color-ink-muted);margin-bottom:1.5rem;display:flex;flex-wrap:wrap;gap:.35rem}.hero-whoami-prompt{color:var(--color-accent);font-weight:700}.hero-name{font-family:var(--font-mono);font-size:clamp(2.75rem,11vw,7rem);font-weight:800;line-height:.95;letter-spacing:-.04em;color:var(--color-ink);margin:0}.hero-name-line{display:block}.hero-name-letter{display:inline-block}.hero-period{color:var(--color-accent)}.hero-subtitle{font-family:var(--font-mono);font-size:clamp(.95rem,1.6vw,1.125rem);font-weight:400;color:var(--color-ink-soft);margin-top:clamp(1.25rem,2.5vw,1.75rem);max-width:52ch;line-height:1.6;min-height:3.2em}.hero-subtitle-text{display:inline}.hero-cursor{display:inline-block;width:.55ch;height:1em;vertical-align:-.12em;background:var(--color-cursor);margin-left:2px;animation:cursor-blink 1s steps(2) infinite}@keyframes cursor-blink{0%,50%{opacity:1}50.01%,to{opacity:0}}.hero-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:clamp(1.25rem,2.5vw,1.75rem)}.hero-tag{font-size:.75rem;font-weight:500;color:var(--color-ink);background:var(--color-bg-alt);border:var(--border-w) solid var(--color-border);padding:.3rem .65rem;box-shadow:var(--shadow-hard-sm)}.hero-scroll{margin-top:clamp(2rem,4vw,3rem);display:inline-flex;align-items:center;gap:.5rem;font-size:.75rem;color:var(--color-ink-muted);letter-spacing:.05em}.hero-scroll-text,.hero-scroll-arrow{display:inline}.hero-scroll-arrow{color:var(--color-accent);animation:bounce-arrow 1.6s ease-in-out infinite}.hero-scroll-line{display:none}@keyframes bounce-arrow{0%,to{transform:translateY(0)}50%{transform:translateY(3px)}}.brut-card{border:var(--border-w) solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-hard);padding:clamp(.875rem,2vw,1.25rem);transition:transform .15s ease,box-shadow .15s ease}.brut-card:hover,.brut-card:focus-visible{transform:translate(-2px,-2px);box-shadow:var(--shadow-hard-lg)}.brut-card:focus-visible{outline:none;border-color:var(--color-accent)}a.brut-card{color:inherit;display:block}.about-grid{display:flex;flex-direction:column;gap:clamp(1.25rem,3vw,1.75rem)}@media(min-width:900px){.about-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:1.5rem;align-items:start}}.about-col-left,.about-col-right{display:flex;flex-direction:column;gap:1rem}.about-name{display:inline-block;font-size:clamp(1.25rem,3vw,1.75rem);font-weight:700;letter-spacing:-.01em;color:var(--color-ink);border:var(--border-w) solid var(--color-border);background:var(--color-accent);padding:.45rem .85rem;box-shadow:var(--shadow-hard-sm);align-self:flex-start}.about-bio{font-size:.9rem;color:var(--color-ink-soft);line-height:1.7;max-width:58ch}.about-bio:before{content:"# ";color:var(--color-ink-muted)}.about-stats{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.about-stat{display:flex;flex-direction:column;gap:.2rem;border:var(--border-w) solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-hard-sm);padding:.75rem .9rem}.about-stat-number{font-family:var(--font-mono);font-size:clamp(1.75rem,4vw,2.5rem);font-weight:800;letter-spacing:-.03em;color:var(--color-accent);line-height:1}.about-stat-label{font-size:.7rem;font-weight:500;color:var(--color-ink-muted);letter-spacing:.04em}.about-stat-label:before{content:"> ";color:var(--color-accent)}.focus-list{display:flex;flex-wrap:wrap;gap:.4rem}.focus-item{font-size:.75rem;font-weight:500;color:var(--color-ink);padding:.25rem .6rem;border:var(--border-w) solid var(--color-border);background:var(--color-bg-alt);box-shadow:var(--shadow-hard-sm);transition:transform .12s ease,background .12s ease}.focus-item:before{content:"#";color:var(--color-accent);margin-right:.15rem}.focus-item:hover{background:var(--color-accent-soft);transform:translate(-1px,-1px)}.about-stack{display:flex;flex-direction:column;gap:.5rem}.about-stack-label{font-size:.7rem;font-weight:600;color:var(--color-ink-muted);letter-spacing:.08em;text-transform:lowercase}.about-stack-label:before{content:"$ ls ";color:var(--color-accent)}.about-stack-items{display:flex;flex-wrap:wrap;gap:.35rem}.about-stack-item{font-size:.72rem;font-weight:500;color:var(--color-ink);padding:.2rem .55rem;background:var(--color-surface);border:var(--border-w) solid var(--color-border);box-shadow:var(--shadow-hard-sm);transition:transform .12s ease,box-shadow .12s ease,background .12s ease}.about-stack-item:hover{background:var(--color-accent-soft);transform:translate(-1px,-1px);box-shadow:var(--shadow-hard)}.project-list{list-style:none;display:grid;grid-template-columns:1fr;gap:.75rem}@media(min-width:720px){.project-list{grid-template-columns:1fr 1fr}}.project-list.other-work-list{grid-template-columns:1fr}.project-row{border:var(--border-w) solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-hard);transition:transform .15s ease,box-shadow .15s ease,background .15s ease}.project-row:hover,.project-row:focus-within{transform:translate(-2px,-2px);box-shadow:var(--shadow-hard-lg);background:var(--color-accent-soft)}.project-link{display:flex;flex-direction:column;gap:.4rem;padding:.9rem 1rem;color:inherit;text-decoration:none;position:relative;height:100%}.project-link:hover .project-name,.project-link:focus-visible .project-name{color:var(--color-accent)}.project-link:focus-visible{outline:2px dashed var(--color-accent);outline-offset:2px}.project-link-arrow{position:absolute;top:.7rem;right:.85rem;font-size:1.15rem;font-weight:700;color:var(--color-accent);opacity:0;transform:translate(-4px);transition:opacity .15s ease,transform .15s ease}.project-link:hover .project-link-arrow,.project-link:focus-visible .project-link-arrow{opacity:1;transform:translate(0)}.project-name{font-size:.95rem;font-weight:700;color:var(--color-ink);letter-spacing:-.01em}.project-name:before{content:"./";color:var(--color-accent)}.project-tech{display:inline-flex;flex-wrap:wrap;gap:.25rem;font-size:.7rem;font-weight:500;color:var(--color-ink-soft);letter-spacing:.02em}.project-desc{font-size:.825rem;color:var(--color-ink-soft);line-height:1.55}.project-desc:before{content:"// ";color:var(--color-ink-muted)}.other-heading{font-size:.78rem;font-weight:600;color:var(--color-ink-muted);letter-spacing:.05em;margin:clamp(1.25rem,3vw,2rem) 0 .6rem}.other-heading:before{content:"$ ls ./other-work/ — ";color:var(--color-accent)}.compact-row{display:flex;flex-direction:row;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:.5rem 1rem;padding:.6rem .85rem;border:var(--border-w) solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-hard-sm);transition:transform .15s ease,box-shadow .15s ease,background .15s ease}.compact-row:hover,.compact-row:focus-within{transform:translate(-2px,-2px);box-shadow:var(--shadow-hard-lg);background:var(--color-accent-soft)}.compact-row:hover .compact-name{color:var(--color-accent)}.compact-name{font-size:.85rem;font-weight:600;color:var(--color-ink);transition:color .15s ease}.compact-name:before{content:"— ";color:var(--color-accent)}.compact-tech{font-size:.7rem;color:var(--color-ink-muted)}.compact-desc{width:100%;margin:.25rem 0 0;font-size:.78rem;line-height:1.5;color:var(--color-ink-soft)}.side-project-intro{font-size:.85rem;line-height:1.55;color:var(--color-ink-soft);margin:0 0 1.25rem;max-width:60ch}.side-project-intro strong{color:var(--color-ink);font-weight:700}.side-project-view-all{display:inline-flex;align-items:center;gap:.4rem;min-height:44px;margin-top:1.25rem;font-size:.85rem;font-weight:700;color:var(--color-ink);text-decoration:none;padding:.5rem .85rem;border:var(--border-w) solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-hard-sm);transition:transform .15s ease,box-shadow .15s ease,background .15s ease}.side-project-view-all:before{content:"$ ";color:var(--color-accent);font-weight:800}.side-project-view-all:hover,.side-project-view-all:focus-visible{transform:translate(-2px,-2px);box-shadow:var(--shadow-hard);background:var(--color-accent);outline:none}.side-project-list{list-style:none;display:grid;grid-template-columns:1fr;gap:.75rem}@media(min-width:720px){.side-project-list{grid-template-columns:1fr 1fr 1fr}}.side-project-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:1rem;border:var(--border-w) solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-hard);color:inherit;text-decoration:none;transition:transform .15s ease,box-shadow .15s ease,background .15s ease}.side-project-row:hover,.side-project-row:focus-visible{transform:translate(-2px,-2px);box-shadow:var(--shadow-hard-lg);background:var(--color-accent-soft);outline:none}.side-project-row:hover .side-project-name,.side-project-row:focus-visible .side-project-name{color:var(--color-accent)}.side-project-info{display:flex;flex-direction:column;gap:.3rem;min-width:0}.side-project-name{font-size:.95rem;font-weight:700;color:var(--color-ink);letter-spacing:-.01em;transition:color .15s ease}.side-project-name:before{content:"~/ ";color:var(--color-accent)}.side-project-desc{font-size:.78rem;color:var(--color-ink-soft);line-height:1.5}.side-project-arrow{font-size:1.15rem;color:var(--color-accent);font-weight:700;flex-shrink:0;transition:transform .15s ease}.side-project-row:hover .side-project-arrow,.side-project-row:focus-visible .side-project-arrow{transform:translate(4px)}.writing-list{list-style:none;display:flex;flex-direction:column;gap:.4rem}.writing-row{display:flex;flex-direction:row;align-items:baseline;gap:.75rem;padding:.6rem .75rem;border:var(--border-w) solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-hard-sm);text-decoration:none;color:inherit;transition:transform .15s ease,box-shadow .15s ease,background .15s ease;flex-wrap:wrap}.writing-row:hover,.writing-row:focus-visible{transform:translate(-2px,-2px);box-shadow:var(--shadow-hard);background:var(--color-accent-soft);outline:none}.writing-date{font-size:.75rem;font-weight:600;color:var(--color-accent);flex-shrink:0;min-width:12ch;font-variant-numeric:tabular-nums}.writing-date:before{content:"[";color:var(--color-ink-muted)}.writing-date:after{content:"]";color:var(--color-ink-muted)}.writing-title{font-size:.875rem;font-weight:500;color:var(--color-ink);flex:1;min-width:0;transition:color .15s ease}.writing-row:hover .writing-title,.writing-row:focus-visible .writing-title{color:var(--color-accent)}.writing-arrow{font-size:.95rem;color:var(--color-ink-muted);transition:transform .15s ease,color .15s ease;margin-left:auto;flex-shrink:0}.writing-row:hover .writing-arrow,.writing-row:focus-visible .writing-arrow{transform:translate(4px);color:var(--color-accent)}.writing-empty{font-size:.85rem;color:var(--color-ink-muted);padding:.75rem .5rem}.writing-empty:before{content:"$ cat posts/*.md → ";color:var(--color-accent)}.writing-view-all{display:inline-flex;align-items:center;gap:.4rem;margin-top:1rem;font-size:.8rem;font-weight:600;color:var(--color-ink);text-decoration:none;padding:.4rem .75rem;border:var(--border-w) solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-hard-sm);transition:transform .15s ease,box-shadow .15s ease,background .15s ease}.writing-view-all:before{content:"$ ";color:var(--color-accent)}.writing-view-all:hover,.writing-view-all:focus-visible{transform:translate(-2px,-2px);box-shadow:var(--shadow-hard);background:var(--color-accent-soft);outline:none}.contact-cta{font-family:var(--font-mono);font-size:clamp(1.75rem,5vw,3rem);font-weight:800;line-height:1.05;letter-spacing:-.02em;color:var(--color-ink);margin-bottom:1.25rem}.contact-period{color:var(--color-accent);opacity:1}.contact-links{display:flex;flex-wrap:wrap;gap:.6rem}.contact-link{font-size:.9rem;font-weight:600;color:var(--color-ink);text-decoration:none;padding:.55rem 1rem;border:var(--border-w) solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-hard);transition:transform .15s ease,box-shadow .15s ease,background .15s ease,color .15s ease}.contact-link:before{content:"> ";color:var(--color-accent)}.contact-link:hover,.contact-link:focus-visible,.contact-link.is-highlighted{transform:translate(-2px,-2px);box-shadow:var(--shadow-hard-lg);background:var(--color-accent);color:var(--color-ink);outline:none}.site-footer{padding:2rem 0 1rem;font-size:.75rem;color:var(--color-ink-muted);border-top:var(--border-w) dashed var(--color-border);margin-top:2rem;display:flex;flex-wrap:wrap;gap:.5rem;justify-content:space-between}.site-footer:before{content:"$ exit";color:var(--color-accent);font-weight:700}.scroll-dot{display:none!important}.kbd-toast{position:fixed;bottom:1.25rem;right:1.25rem;z-index:200;padding:.6rem .85rem;border:var(--border-w) solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-hard);font-size:.8rem;color:var(--color-ink);opacity:0;transform:translateY(10px);transition:opacity .18s ease,transform .18s ease;pointer-events:none}.kbd-toast--visible{opacity:1;transform:translateY(0)}.kbd-toast kbd{font-family:var(--font-mono);font-size:.75rem;background:var(--color-bg-alt);border:1px solid var(--color-border);padding:.05rem .35rem;border-radius:2px;margin-right:.2rem}.kbd-toast-hint{color:var(--color-accent);font-weight:700;margin-right:.35rem}.motion-fade,.motion-letter,.motion-stagger{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.hero-cursor{animation:none;opacity:.6}.hero-scroll-arrow{animation:none}.brut-card:hover,.brut-card:focus-visible,.project-row:hover,.project-row:focus-within,.compact-row:hover,.compact-row:focus-within,.side-project-row:hover,.side-project-row:focus-visible,.writing-row:hover,.writing-row:focus-visible,.contact-link:hover,.contact-link:focus-visible,.contact-link.is-highlighted,.side-project-view-all:hover,.side-project-view-all:focus-visible,.writing-view-all:hover,.writing-view-all:focus-visible,.focus-item:hover,.about-stack-item:hover{transform:none}.side-project-row:hover .side-project-arrow,.side-project-row:focus-visible .side-project-arrow,.writing-row:hover .writing-arrow,.writing-row:focus-visible .writing-arrow,.project-link:hover .project-link-arrow,.project-link:focus-visible .project-link-arrow{transform:none}}
