.portfolio-page{--paper:#fbf9f5;--ink:#242622;--muted:#65665e;--line:#dfded5;--wash:#f0eee6;--white:#fffefa;--serif:Georgia,"Times New Roman",serif}.portfolio-page *{box-sizing:border-box}.portfolio-page{background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;font-size:16px;line-height:1.6}.portfolio-page ::selection{background:#dedbcc}.portfolio-page h1,.portfolio-page h2,.portfolio-page h3,.portfolio-page h4,.portfolio-page p{margin:0}.portfolio-page h1,.portfolio-page h2,.portfolio-page h3,.portfolio-page h4{font-weight:500}.portfolio-page img{object-fit:cover;width:100%;display:block}.portfolio-page .wrap{max-width:1160px;margin:auto;padding:0 48px}.portfolio-page .eyebrow{letter-spacing:.13em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:600}.portfolio-page .masthead{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:27px 0;display:flex}.portfolio-page .wordmark{letter-spacing:-.025em;font-size:15px;font-weight:650}.portfolio-page .masthead-note{color:var(--muted);font-size:12px}.portfolio-page .profile{grid-template-columns:1fr 245px;align-items:end;gap:80px;padding:66px 0 54px;display:grid}.portfolio-page .profile h1{font-family:var(--serif);letter-spacing:-.065em;margin:13px 0 22px;font-size:76px;line-height:1.05}.portfolio-page .intro{letter-spacing:-.025em;max-width:575px;font-size:20px;line-height:1.65}.portfolio-page .profile-aside{border-left:1px solid var(--line);padding-bottom:4px;padding-left:28px}.portfolio-page .focus-list{margin:16px 0 0;padding:0;font-size:14px;list-style:none}.portfolio-page .focus-list li+li{margin-top:7px}.portfolio-page .current{background:var(--wash);border-radius:4px;grid-template-columns:220px 1fr;align-items:center;gap:35px;padding:26px 30px;display:grid}.portfolio-page .current h2{letter-spacing:-.02em;font-size:15px;line-height:1.4}.portfolio-page .current p{color:var(--muted);font-size:14px}.portfolio-page .current .draft{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-top:5px;font-size:11px;display:inline-block}.portfolio-page .work{margin-top:72px}.portfolio-page .section-heading{border-bottom:1px solid var(--ink);justify-content:space-between;align-items:baseline;gap:30px;padding-bottom:27px;display:flex}.portfolio-page .section-heading h2{font-family:var(--serif);letter-spacing:-.045em;font-size:39px;line-height:1.2}.portfolio-page .section-heading p{color:var(--muted);font-size:13px}.portfolio-page .category{border-bottom:1px solid var(--line);grid-template-columns:220px 1fr;gap:35px;padding:38px 0;display:grid}.portfolio-page .category-intro h3{letter-spacing:-.025em;font-size:17px;line-height:1.3}.portfolio-page .category-intro p{color:var(--muted);max-width:185px;margin-top:10px;font-size:13px;line-height:1.7}.portfolio-page .project{background:var(--white);border:1px solid var(--line);border-radius:8px;min-width:0;overflow:hidden}.portfolio-page .project-copy{padding:27px}.portfolio-page .project h4{letter-spacing:-.045em;font-size:26px;line-height:1.2}.portfolio-page .project p{color:var(--muted);max-width:390px;margin-top:13px;font-size:14px;line-height:1.65}.portfolio-page .project .eyebrow{margin-bottom:17px;font-size:10px}.portfolio-page .project-foot{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;align-items:center;margin-top:30px;padding-top:16px;font-size:11px;display:flex}.portfolio-page .detail-icon{color:var(--ink);font-size:22px;font-weight:300;line-height:1}.portfolio-page .valan{background:#f4f2eb;grid-template-columns:1fr 115px;display:grid}.portfolio-page .valan .project-copy{padding:30px}.portfolio-page .valan-mark{font-family:var(--serif);color:#bcbcae;-webkit-user-select:none;user-select:none;place-self:center;font-size:72px;font-style:italic;line-height:1}.portfolio-page .market-pair{grid-template-columns:1.2fr 1fr;gap:18px;display:grid}.portfolio-page .market-art{background:#f3f1e9;height:164px}.portfolio-page .market-pair .project-copy{padding:23px}.portfolio-page .trade{background:#efeee7;flex-direction:column;display:flex}.portfolio-page .trade .project-copy{flex-direction:column;flex:1;display:flex}.portfolio-page .trade .project-foot{margin-top:auto;padding-top:22px}.portfolio-page .trade p{margin-bottom:30px}.portfolio-page .flower{grid-template-columns:.9fr 1fr;display:grid}.portfolio-page .flower img{height:100%;min-height:265px}.portfolio-page .flower .project-copy{flex-direction:column;justify-content:center;padding:30px;display:flex}.portfolio-page .footer{color:var(--muted);justify-content:space-between;align-items:center;padding:35px 0 40px;font-size:12px;display:flex}.portfolio-page .footer strong{color:var(--ink);font-weight:500}.portfolio-page .brand-mark{object-fit:contain;width:55px;height:38px;display:block}.portfolio-page .welcome{letter-spacing:.015em;color:var(--muted);font-size:14px}@media (min-width:1500px){.portfolio-page .wrap{max-width:1240px}.portfolio-page .profile{padding-top:80px}.portfolio-page .profile h1{font-size:86px}}@media (max-width:850px){.portfolio-page .wrap{padding:0 30px}.portfolio-page .profile{grid-template-columns:1fr 185px;gap:35px}.portfolio-page .profile h1{font-size:64px}.portfolio-page .intro{font-size:18px}.portfolio-page .category,.portfolio-page .current{grid-template-columns:165px 1fr;gap:25px}.portfolio-page .market-pair{grid-template-columns:1fr}.portfolio-page .market-art{height:210px}.portfolio-page .trade .project-foot{margin-top:8px}.portfolio-page .flower{grid-template-columns:1fr}.portfolio-page .flower img{height:210px;min-height:0}.portfolio-page .section-heading p{max-width:190px}.portfolio-page .valan{grid-template-columns:1fr}.portfolio-page .valan-mark{display:none}}@media (max-width:600px){.portfolio-page .wrap{padding:0 22px}.portfolio-page .masthead{padding:21px 0}.portfolio-page .masthead-note{font-size:11px}.portfolio-page .profile{padding:38px 0 30px;display:block}.portfolio-page .profile h1{margin:12px 0 20px;font-size:58px}.portfolio-page .intro{font-size:17px;line-height:1.65}.portfolio-page .profile-aside{border-left:0;border-top:1px solid var(--line);margin-top:25px;padding:18px 0 0}.portfolio-page .profile-aside>.eyebrow{display:none}.portfolio-page .focus-list{flex-wrap:wrap;gap:5px 16px;margin:0;font-size:11px;display:flex}.portfolio-page .focus-list li+li{margin:0}.portfolio-page .current{padding:19px 20px;display:block}.portfolio-page .current h2{font-size:14px}.portfolio-page .current p{margin-top:9px;font-size:13px}.portfolio-page .current .draft{margin-top:3px;font-size:11px}.portfolio-page .work{margin-top:42px}.portfolio-page .section-heading{padding-bottom:22px;display:block}.portfolio-page .section-heading h2{font-size:34px}.portfolio-page .section-heading p{max-width:none;margin-top:9px;font-size:12px}.portfolio-page .category{padding:28px 0 30px;display:block}.portfolio-page .category-intro{margin-bottom:19px}.portfolio-page .category-intro h3{font-size:18px}.portfolio-page .category-intro p{max-width:300px;margin-top:6px;font-size:13px}.portfolio-page .project-copy,.portfolio-page .valan .project-copy,.portfolio-page .flower .project-copy,.portfolio-page .market-pair .project-copy{padding:23px}.portfolio-page .project h4{font-size:27px}.portfolio-page .project p{margin-top:12px;font-size:15px}.portfolio-page .project .eyebrow{margin-bottom:14px}.portfolio-page .project-foot{margin-top:24px;padding-top:14px;font-size:11px}.portfolio-page .market-pair{gap:15px}.portfolio-page .market-art{height:160px}.portfolio-page .trade .project-foot{margin-top:0}.portfolio-page .flower img{height:185px}.portfolio-page .footer{padding:27px 0 30px;font-size:11px}}@media (prefers-reduced-motion:no-preference){.portfolio-page .project{transition:border-color .2s}.portfolio-page .project:hover{border-color:#a8aa9d}}.portfolio-page button,.portfolio-page input{font:inherit}.portfolio-page button{cursor:pointer;color:inherit}.portfolio-page button:focus-visible{outline:2px solid var(--ink);outline-offset:4px}.portfolio-page .login-button{border:1px solid var(--line);background:0 0;border-radius:5px;align-items:center;gap:9px;min-height:44px;padding:0 15px;font-size:12px;display:flex}.portfolio-page .login-button:hover{background:var(--wash)}.portfolio-page .login-button svg{width:14px;height:14px}.portfolio-page .skills{margin-top:62px}.portfolio-page .skills-grid{grid-template-columns:repeat(3,1fr);column-gap:36px;padding:7px 0 0;display:grid}.portfolio-page .skill{border-bottom:1px solid var(--line);padding:25px 0 28px}.portfolio-page .skill h3{letter-spacing:-.02em;margin-bottom:10px;font-size:17px}.portfolio-page .skill p{color:var(--muted);font-size:14px;line-height:1.7}.portfolio-page .skill .skill-tools{color:var(--muted);letter-spacing:.015em;margin-top:16px;font-size:11px}.portfolio-page .project{position:relative}.portfolio-page .project-foot{text-align:left;border:0;border-top:1px solid var(--line);cursor:pointer;background:0 0;width:100%;min-height:44px;padding-bottom:0;font-family:inherit}.portfolio-page .project-foot:after{content:"";position:absolute;inset:0}.portfolio-page .project:focus-within{outline:2px solid var(--ink);outline-offset:4px}.portfolio-page .project-foot:focus-visible{outline:0}.portfolio-page dialog{border:1px solid var(--line);background:var(--paper);color:var(--ink);overscroll-behavior:contain;border-radius:12px;width:calc(100% - 48px);max-width:600px;max-height:85dvh;padding:0;overflow:auto}.portfolio-page dialog::backdrop{background:#2426227a}.portfolio-page .dialog-top{border-bottom:1px solid var(--line);background:var(--paper);z-index:1;justify-content:space-between;align-items:center;padding:15px 24px;display:flex;position:sticky;top:0}.portfolio-page .dialog-close{border:1px solid var(--line);background:0 0;border-radius:5px;min-width:70px;min-height:44px;font-size:12px}.portfolio-page .dialog-body{padding:30px}.portfolio-page .dialog-body h2{font-family:var(--serif);letter-spacing:-.04em;margin-bottom:18px;font-size:40px;line-height:1.15}.portfolio-page .dialog-description{color:var(--muted);font-size:16px;line-height:1.75}.portfolio-page .project-story p{color:var(--muted);margin-top:14px;font-size:15px;line-height:1.8}.portfolio-page .dialog-image{border-radius:6px;height:190px;margin-bottom:24px}.portfolio-page .dialog-subheading{border-top:1px solid var(--line);margin-top:27px;padding-top:20px;font-size:14px}.portfolio-page .tech-list{color:var(--muted);flex-wrap:wrap;gap:8px 20px;margin:13px 0 0;padding:0;font-size:13px;list-style:none;display:flex}.portfolio-page .mock-note{color:var(--muted);margin-top:24px;font-size:12px}.portfolio-page .login-preview label{margin-top:24px;font-size:13px;display:block}.portfolio-page .login-preview input{border:1px solid var(--line);background:var(--white);border-radius:5px;width:100%;height:48px;margin-top:8px;padding:10px;display:block}.portfolio-page .login-preview button[disabled]{background:var(--ink);width:100%;height:46px;color:var(--paper);opacity:.6;cursor:default;border:0;border-radius:5px;margin-top:18px}.portfolio-page .brand-mark{object-fit:contain;width:110px;height:55px}.portfolio-page .login-button{min-width:44px;min-height:44px;color:var(--muted);background:0 0;border:0;border-radius:0;justify-content:flex-end;padding:0;font-size:13px}.portfolio-page .login-button:hover{color:var(--ink);text-underline-offset:4px;background:0 0;text-decoration:underline}.portfolio-page .courses{margin-top:62px;margin-bottom:12px}.portfolio-page .course-intro{color:var(--muted);max-width:620px;margin:24px 0 5px;font-size:15px}.portfolio-page .course-list{margin-top:12px}.portfolio-page .course{border-bottom:1px solid var(--line);grid-template-columns:180px 1fr;gap:36px;padding:27px 0;display:grid}.portfolio-page .course-topic{text-transform:uppercase;letter-spacing:.09em;color:var(--muted);padding-top:5px;font-size:11px}.portfolio-page .course h3{letter-spacing:-.035em;font-size:22px;line-height:1.35}.portfolio-page .course p{color:var(--muted);max-width:650px;margin-top:10px;font-size:15px;line-height:1.7}.portfolio-page .course-format{letter-spacing:.025em;margin-top:14px!important;font-size:11px!important}@media (max-width:600px){.portfolio-page .courses{margin-top:42px}.portfolio-page .course-intro{margin-top:20px;font-size:15px}.portfolio-page .course{grid-template-columns:1fr;gap:9px;padding:25px 0}.portfolio-page .course h3{font-size:23px}.portfolio-page .course-topic{padding-top:0;font-size:11px}}.portfolio-page [hidden]{display:none!important}@media (max-width:850px){.portfolio-page .skills-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:600px){.portfolio-page .skills{margin-top:42px}.portfolio-page .skills-grid{grid-template-columns:1fr}.portfolio-page .skill{padding:23px 0}.portfolio-page .skill h3{font-size:18px}.portfolio-page .skill p{font-size:15px}.portfolio-page dialog{border-bottom:0;border-radius:16px 16px 0 0;width:100%;max-width:none;max-height:88dvh;margin:auto 0 0}.portfolio-page .dialog-top{padding:12px 22px}.portfolio-page .dialog-body{padding:26px 22px 32px}.portfolio-page .dialog-body h2{font-size:36px}.portfolio-page .dialog-image{height:165px}}.portfolio-page{min-height:100vh}.portfolio-page .wrap{padding-bottom:64px}.portfolio-page .project-stack{gap:20px;min-width:0;display:grid}.portfolio-page .project-highlights{color:var(--muted);margin-top:14px;padding-left:20px;font-size:14px;line-height:1.75;list-style:outside}.portfolio-page .project-highlights li+li{margin-top:8px}@media (max-width:600px){.portfolio-page .wrap{padding-bottom:44px}}.portfolio-page{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.portfolio-page .skip-link{z-index:10;background:var(--ink);color:var(--paper);border-radius:4px;padding:12px 18px;position:absolute;top:10px;left:20px;transform:translateY(-200%)}.portfolio-page .skip-link:focus{transform:translateY(0)}.portfolio-page .login-button{text-decoration:none}.portfolio-page a:focus-visible{outline:2px solid var(--ink);outline-offset:4px}.portfolio-page dialog{margin:auto}.portfolio-page .dialog-image{object-fit:cover;width:100%}@media (max-width:600px){.portfolio-page dialog{margin:auto 0 0}}.portfolio-page .stack-overview{border-bottom:1px solid var(--line);padding:24px 0 26px}.portfolio-page .stack-heading{justify-content:space-between;align-items:baseline;gap:15px;display:flex}.portfolio-page .stack-heading h3{font-size:13px;font-weight:600}.portfolio-page .stack-heading p{color:var(--muted);font-size:11px}.portfolio-page .stack-stats{grid-template-columns:repeat(5,1fr);gap:20px;margin:18px 0 0;display:grid}.portfolio-page .stack-stats>div{border-left:1px solid var(--line);flex-direction:column-reverse;gap:5px;padding-left:18px;display:flex}.portfolio-page .stack-stats>div:first-child{border-left:0;padding-left:0}.portfolio-page .stack-stats dt{color:var(--muted);font-size:11px}.portfolio-page .stack-stats dd{font-family:var(--serif);font-variant-numeric:tabular-nums;margin:0;font-size:33px;line-height:1.1}@media (max-width:600px){.portfolio-page .stack-heading{display:block}.portfolio-page .stack-heading p{margin-top:4px}.portfolio-page .stack-stats{grid-template-columns:repeat(3,1fr);gap:22px 12px}.portfolio-page .stack-stats>div{border:0;padding:0}.portfolio-page .stack-stats dd{font-size:29px}.portfolio-page .stack-stats dt{font-size:10px}}.portfolio-page .project-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:18px;min-width:0;display:grid}.portfolio-page .project{background:var(--white);flex-direction:column;display:flex}.portfolio-page .project-copy,.portfolio-page .valan .project-copy,.portfolio-page .flower .project-copy{flex-direction:column;flex:1;justify-content:flex-start;padding:20px;display:flex}.portfolio-page .project h4{letter-spacing:-.035em;font-size:23px}.portfolio-page .project p{margin-top:10px;margin-bottom:0;font-size:13px;line-height:1.65}.portfolio-page .project .eyebrow{margin:0 0 10px;font-size:11px}.portfolio-page .project .project-foot{min-height:36px;margin-top:18px;padding-top:10px}.portfolio-page .project-media{background:var(--wash);border-bottom:1px solid var(--line);margin:0}.portfolio-page .project-media img,.portfolio-page .flower .project-media img{object-fit:cover;object-position:center;width:100%;height:144px;min-height:0}.portfolio-page .project-media.media-contain img{object-fit:contain;object-position:center;padding:10px}.portfolio-page .project-media figcaption,.portfolio-page .dialog-figure figcaption{color:var(--muted);background:var(--paper);padding:7px 12px;font-size:11px;line-height:1.5}.portfolio-page .capability-list{flex-wrap:wrap;gap:6px;margin:14px 0 0;padding:0;list-style:none;display:flex}.portfolio-page .capability-list li{color:var(--muted);background:var(--wash);border-radius:3px;padding:3px 6px;font-size:11px;line-height:1.5}.portfolio-page .dialog-figure{background:var(--wash);border-radius:6px;margin:0 0 24px;overflow:hidden}.portfolio-page .dialog-figure .dialog-image{object-fit:contain;border-radius:0;height:auto;max-height:320px;margin:0}.portfolio-page .dialog-figure.media-contain .dialog-image{height:260px;padding:14px}@media (min-width:601px) and (max-width:950px){.portfolio-page .category{grid-template-columns:145px 1fr;gap:22px}.portfolio-page .project-grid{gap:12px}.portfolio-page .project-copy,.portfolio-page .valan .project-copy,.portfolio-page .flower .project-copy{padding:16px}}@media (max-width:700px){.portfolio-page .category{display:block}.portfolio-page .category-intro{margin-bottom:20px}.portfolio-page .category-intro p{max-width:none}}@media (max-width:600px){.portfolio-page .project-grid{grid-template-columns:1fr;gap:14px}.portfolio-page .project-media img,.portfolio-page .flower .project-media img{height:136px}.portfolio-page .project h4{font-size:23px}.portfolio-page .project-copy,.portfolio-page .valan .project-copy,.portfolio-page .flower .project-copy{padding:18px}.portfolio-page .project p{font-size:14px}.portfolio-page .dialog-figure.media-contain .dialog-image{height:220px}}.portfolio-page .login-button{cursor:pointer;font-family:inherit}.portfolio-page .login-button:focus-visible,.portfolio-page .login-dialog button:focus-visible,.portfolio-page .login-dialog input:focus-visible{outline:2px solid var(--ink);outline-offset:3px}@media (min-width:601px){.portfolio-page dialog.login-dialog{max-width:440px}}.portfolio-page .login-dialog .login-submit{background:var(--ink);width:100%;height:48px;color:var(--paper);cursor:pointer;border:0;border-radius:5px;margin-top:22px;font-size:14px}.portfolio-page .login-dialog .login-submit:hover{opacity:.88}.portfolio-page .login-dialog .login-notice{min-height:22px;color:var(--muted);margin-top:14px;font-size:13px}.portfolio-page .current-list{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px 14px;margin:0;padding:0;list-style:none;display:grid}.portfolio-page .current-list button{background:var(--white);text-align:left;cursor:pointer;width:100%;min-height:44px;color:var(--ink);border:1px solid #0000;border-radius:5px;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 12px;font-family:inherit;display:flex}.portfolio-page .current-list button:hover{border-color:var(--line)}.portfolio-page .current-list button:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.portfolio-page .current-name{font-size:14px;line-height:1.35}.portfolio-page .current-label{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:11px;line-height:1.4;display:-webkit-box;overflow:hidden}@media (max-width:600px){.portfolio-page .current-list{grid-template-columns:1fr 1fr;margin-top:12px}}@media (max-width:360px){.portfolio-page .current-list{grid-template-columns:1fr}}.portfolio-page .category-nav{z-index:5;scrollbar-width:none;background:var(--paper);border-bottom:1px solid #0000;flex-wrap:nowrap;gap:8px;margin:34px -4px 6px;padding:10px 4px;display:flex;position:sticky;top:0;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#0000,#000 12px calc(100% - 28px),#0000);mask-image:linear-gradient(90deg,#0000,#000 12px calc(100% - 28px),#0000)}.portfolio-page .category-nav::-webkit-scrollbar{display:none}.portfolio-page .category-nav a{flex:none}.portfolio-page .category-nav a[aria-current]{background:var(--ink);border-color:var(--ink);color:var(--paper)}.portfolio-page .category-nav a[aria-current] span{color:var(--line)}.portfolio-page .category-nav a{border:1px solid var(--line);min-height:36px;color:var(--ink);background:var(--white);border-radius:18px;align-items:center;gap:7px;padding:6px 12px;font-size:12px;text-decoration:none;display:inline-flex}.portfolio-page .category-nav a:hover{border-color:var(--muted)}.portfolio-page .category-nav a:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.portfolio-page .category-nav span{color:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.portfolio-page .category{scroll-margin-top:72px}.portfolio-page .back-to-top{right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));z-index:20;border:1px solid var(--line);background:var(--white);width:48px;height:48px;color:var(--ink);cursor:pointer;opacity:0;pointer-events:none;border-radius:50%;place-items:center;transition:opacity .2s,transform .2s;display:grid;position:fixed;transform:translateY(8px);box-shadow:0 4px 14px #2426221f}.portfolio-page .back-to-top.is-visible{opacity:1;pointer-events:auto;transform:none}.portfolio-page .back-to-top:hover{background:var(--wash)}.portfolio-page .back-to-top:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.portfolio-page .back-to-top svg{width:20px;height:20px}@media (min-width:1100px){.portfolio-page .back-to-top{bottom:32px;right:32px}}@media (prefers-reduced-motion:reduce){.portfolio-page .back-to-top{transition:none}}.portfolio-page .dialog-context{flex-direction:column;gap:2px;min-width:0;display:flex}.portfolio-page .dialog-top-name{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.portfolio-page dialog#project-dialog{background:linear-gradient(#fbf9f500,var(--paper) 70%) 0 100%/100% 56px no-repeat local,linear-gradient(#24262200,#2426221a) 0 100%/100% 22px no-repeat scroll,var(--paper)}
