:root{--bg:#fff3f8;--bg-deep:#ffd7e9;--text:#2e1f31;--muted:#6f4f69;--window-border:#481b426b;--window-shadow:#4e173c47;--shell-text:#ffeef9;--shell-accent:#ff9ad5;--sans:"Space Grotesk", "Avenir Next", "Trebuchet MS", sans-serif;--mono:"IBM Plex Mono", "SF Mono", "Cascadia Mono", monospace;font:13px/1.5 var(--sans);color:var(--text);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{background:radial-gradient(circle at 12% 14%, #ffb3d68f, transparent 42%), radial-gradient(circle at 88% 18%, #ffd6ba85, transparent 37%), radial-gradient(circle at 56% 86%, #ffa1c654, transparent 42%), linear-gradient(160deg, var(--bg) 0%, var(--bg-deep) 100%);min-height:100vh;margin:0}#root{min-height:100svh}h1,h2,p{margin:0}.portfolio-page{place-items:center;width:100%;min-height:100svh;margin:0;display:grid;position:relative;overflow:clip}.cat-easter-egg{z-index:1;pointer-events:none;opacity:0;transition:opacity .26s;position:fixed;inset:0;overflow:hidden}.cat-easter-egg.is-active{opacity:1}.cat-easter-egg-sprite{aspect-ratio:1;object-fit:contain;opacity:.98;filter:saturate(1.2)contrast(1.1)drop-shadow(0 6px 8px #0f070e42);animation:cat-party-float var(--cat-duration,8s) ease-in-out var(--cat-delay,0s) infinite alternate;position:absolute;transform:translate(-50%,-50%)}.terminal-stage{perspective:1800px;z-index:30;width:min(960px,100%);height:650px;margin-inline:auto;position:relative}@keyframes cat-party-float{0%{transform:translate(-50%, -50%) rotate(calc(var(--cat-rotate,0deg) * -1))}to{transform:translate(calc(-50% + var(--cat-drift-x,0px)), calc(-50% + var(--cat-drift-y,0px))) rotate(var(--cat-rotate,0deg))}}.terminal-stage.is-dragging{-webkit-user-select:none;user-select:none}.terminal-flipper{width:100%;height:100%;transform-style:preserve-3d;transition:transform .78s cubic-bezier(.2,.84,.22,1);position:relative}.terminal-stage.is-flipped .terminal-flipper{transform:rotateY(180deg)}.terminal-face{backface-visibility:hidden;position:absolute;inset:0}.terminal-face-front{transform:rotateY(0)}.terminal-face-back{pointer-events:none;transform:rotateY(180deg)}.terminal-card-face{box-shadow:none;background:0 0;border:none;justify-content:center;align-items:center;padding:1rem;display:flex}.mobile-contact-only{width:min(960px,100%);min-height:100svh}.terminal-stage.is-flipped .terminal-face-front{pointer-events:none}.terminal-stage.is-flipped .terminal-face-back{pointer-events:auto}.terminal-card-screen{width:min(740px,100%);min-height:100%;color:var(--shell-text);font:.9rem/1.45 var(--mono);text-align:left;flex-direction:column;justify-content:center;align-items:flex-start;gap:.8rem;margin-inline:auto;padding:0;display:flex;overflow:auto}@media (width<=700px){.terminal-stage{height:78svh}}.terminal-contact-card{transform-origin:top;width:min(700px,100%);box-shadow:none;background:linear-gradient(135deg,#ff9bcd29,#ffcce50f),#31172ce6;border:1px solid #ffb4e4b8;border-radius:12px;grid-template-columns:180px 1fr;grid-template-areas:"photo details""hint hint";gap:1rem;padding:1.05rem 1.05rem 0;animation:.65s cubic-bezier(.17,.83,.32,1.1) terminal-flip-in;display:grid}.card-photo-slot{background:linear-gradient(155deg,#ffceec2e,#ffa7d614),#251121d6;border:1px solid #ffc6e880;border-radius:10px;grid-area:photo;min-height:165px;overflow:hidden;box-shadow:inset 0 1px #ffecf729,0 10px 24px #1408124d}.card-photo{object-fit:cover;object-position:center top;background:linear-gradient(130deg,#ffa8d838,#ffd1eb0a);width:100%;height:100%;min-height:165px;display:block}.card-details{border-left:1px solid #ffb4e459;flex-direction:column;grid-area:details;justify-content:center;padding:.1rem .2rem .1rem .75rem;display:flex}.card-details h1{letter-spacing:.01em;color:#fff2fb;margin:0;font-size:1.3rem;line-height:1.1}.card-name-trigger{appearance:none;color:inherit;font:inherit;line-height:inherit;letter-spacing:inherit;cursor:pointer;text-align:left;text-shadow:0 0 #0000;background:0 0;border:0;margin:0;padding:0;transition:color .16s,text-shadow .16s}.card-name-trigger:hover,.card-name-trigger:focus-visible,.card-name-trigger.is-active{color:#ffe5f7;text-shadow:0 0 14px #ff94d394}.card-name-trigger:focus-visible{outline-offset:4px;border-radius:4px;outline:2px solid #ffb4e4f2}.card-socials{flex-wrap:wrap;gap:.48rem;margin-top:.45rem;display:flex}.card-social-link{color:#fff2fb;letter-spacing:.08em;text-transform:uppercase;background:#ffffff0f;border:1px solid #ffaedf73;border-radius:999px;place-items:center;width:2rem;height:2rem;padding:0;font-size:.72rem;font-weight:700;line-height:0;text-decoration:none;transition:color .16s,background-color .16s,border-color .16s;display:inline-grid;box-shadow:0 8px 20px #2b14232e}.card-social-icon{flex:none;width:.95rem;height:.95rem;display:block;transform:translateY(-.5px)}.card-social-link:hover{color:#fff2fa;background:#ffa8d82e;border-color:#ffc4e7b8}.card-social-link:focus-visible{outline-offset:2px;outline:2px solid #ffaadf}.card-badge{color:#ffaadf;text-transform:uppercase;letter-spacing:.09em;margin:0 0 .35rem;font-size:.68rem;font-weight:600}.card-details dl{margin:.82rem 0 0}.card-row{grid-template-columns:112px 1fr;align-items:baseline;gap:.55rem;display:grid}.card-row+.card-row{margin-top:.34rem}.card-row dt{color:#ffc4e7e0;font-size:.8rem}.card-row dd{color:#ffe6f6;word-break:break-word;margin:0}.card-link{color:inherit;text-underline-offset:.14em;text-decoration-color:#ffaedfbf}.card-link:hover{color:#fff2fa;text-decoration-color:#ffaadf}.card-hint{color:#ffecf7eb;letter-spacing:.01em;text-shadow:0 0 14px #ff79c138;text-align:center;cursor:pointer;background:0 0;border:none;border-top:1px solid #ffb4e438;grid-area:hint;width:calc(100% + 2.1rem);margin:.25rem 0 0 -1.05rem;padding:.5rem .2rem .58rem;font-family:inherit;font-size:.84rem;font-weight:600;transition:color .15s,background .15s}.card-hint:hover{color:#ffecf7;text-shadow:0 0 18px #ff79c173;background:#ffaddc14}.card-hint-static{cursor:default;color:#fff6fc;text-shadow:0 0 16px #ff79c15c;background:#ffaddc14;border-top-color:#ffc4e76b}.card-hint-static:hover{color:#fff6fc;text-shadow:0 0 16px #ff79c15c;background:#ffaddc14}@keyframes terminal-flip-in{0%{opacity:0;transform:rotateX(-84deg)translateY(-18px)}to{opacity:1;transform:rotateX(0)translateY(0)}}@media (width<=700px){.terminal-contact-card{grid-template-columns:1fr;grid-template-areas:"photo""details""hint";padding:.9rem .9rem 0}.card-photo-slot{width:min(180px,54vw);min-height:110px;margin-inline:auto}.card-photo{min-height:110px}.card-details{border-top:1px solid #ffb4e452;border-left:none;justify-content:flex-start;padding:.8rem 0 0}.card-row{grid-template-columns:1fr;gap:.15rem}.card-hint{width:calc(100% + 1.8rem);margin-left:-.9rem;padding:.46rem .15rem .52rem}}.dot{cursor:default;border-radius:50%;justify-content:center;align-items:center;width:.66rem;height:.66rem;display:inline-flex;position:relative}.dot:before{color:#1c1218b8;opacity:0;pointer-events:none;font-size:.66rem;font-weight:700;line-height:.9;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.close{background:#ff5f56}.close:before{content:"x"}.minimize{background:#ffbd2e}.minimize:before{content:"-"}.maximize{background:#27c93f}.maximize:before{content:"+"}.hint-pill{color:#fff6fc;font:inherit;cursor:pointer;background:0 0;border:1px solid #ffafdfa8;border-radius:8px;align-items:center;padding:.1rem .38rem;display:inline-flex;box-shadow:inset 0 1px #ffebf740,0 6px 18px #230e1f3d}.hint-pill-key{border-color:#ffbde3c2}.card-hint .hint-pill,.cv-dialog-hint .hint-pill{transform:translateY(-1px)}@media (width<=700px){.hint-pill{padding:.09rem .34rem;font-size:.64rem}}.terminal-window{border:1px solid var(--window-border);width:100%;height:100%;box-shadow:0 20px 64px var(--window-shadow);background:#271726;border-radius:14px;flex-direction:column;margin-inline:0;display:flex;overflow:hidden}.terminal-bar{background:#2c1a2c;border-bottom:1px solid #e791cc61;justify-content:center;align-items:center;min-height:42px;padding:.55rem .9rem;display:flex;position:relative}.terminal-drag-handle{cursor:grab;touch-action:none}.terminal-stage.is-dragging .terminal-drag-handle,.terminal-window.is-dragging .terminal-drag-handle{cursor:grabbing}.terminal-bar button.dot{cursor:pointer;border:none;padding:0}.window-controls{align-items:center;gap:.42rem;display:flex;position:absolute;left:.9rem}.terminal-bar p{color:#f2efffd6;font:500 .78rem/1.2 var(--mono);letter-spacing:.045em;margin:0}.terminal-screen{min-height:0;color:var(--shell-text);font:.9rem/1.45 var(--mono);background:radial-gradient(circle at 92% 8%,#ec8cc429,#0000 44%),#241422;flex-direction:column;flex:1;padding:.9rem;display:flex}.command-form{flex-shrink:0;align-items:center;gap:0;margin-top:.5rem;display:flex}.command-form .prompt{margin-right:1ch}.command-form input{color:#fff0fa;font:inherit;background:0 0;border:none;flex:1;min-width:0}.command-form input:focus{outline:none}.command-form input::placeholder{color:#ffc9eb94}@media (width<=700px){.terminal-window{height:100%}.terminal-screen{padding:.85rem;font-size:.86rem}.command-form{flex-direction:row;align-items:center;gap:0}.command-form .prompt{margin-right:1ch}.command-form input{width:auto}}.cv-dialog-layer{z-index:20;pointer-events:none;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.cv-dialog{-webkit-user-select:none;user-select:none;pointer-events:auto;width:min(920px,100%);height:min(84svh,800px);margin-inline:auto}.cv-display{flex:1;min-height:0;position:relative}.cv-activation-overlay{z-index:1;cursor:default;background:0 0;border:0;padding:0;position:absolute;inset:0}.cv-frame{background:#140f24;border:none;width:100%;height:100%}.cv-dialog-hint{text-align:center;font:500 .78rem/1.35 var(--mono);letter-spacing:.01em;color:#f2efffb8;border-top:1px solid #e791cc33;border-inline:none;cursor:pointer;background:#2c1a2c;border-bottom:none;width:100%;margin:0;padding:.48rem .9rem .6rem;transition:background .15s,color .15s}.cv-dialog-hint:hover{color:#f2effff2;background:#3a2238}@media (width<=700px){.cv-dialog-layer{padding:.6rem}.cv-dialog{height:88svh}}.history{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;background:0 0;border:none;border-radius:10px;flex:1;min-height:0;max-height:none;padding:0;overflow:hidden auto}.line{white-space:pre-wrap;margin:0}.line+.line{margin-top:.36rem}.prompt{color:var(--shell-accent);white-space:nowrap}.command{color:#ffe9f8}.command-name{color:#ff7fc6;text-shadow:0 0 16px #ff78c159;font-weight:700}.command-args{color:#ffd8ef}.output{color:#f2d6e9}.terminal-link{color:#ffd1ee;text-underline-offset:.18em;text-decoration:underline}.terminal-link:hover{color:#ffe9f7}.terminal-hint-line{border-top:1px solid #f6d9ec33;flex-wrap:wrap;align-items:center;gap:.4rem;margin-top:.65rem;padding-top:.85rem;display:flex}.terminal-hint-label{color:#f6d9ec;font-weight:600}.rich-output{border-radius:10px;grid-template-columns:140px 1fr;align-items:start;gap:.65rem;margin-top:.55rem;padding:.55rem;display:grid}.rich-output-text{white-space:pre-wrap;color:#ffe6f6;margin:0;line-height:1.5}.rich-output-image{aspect-ratio:4/5;object-fit:cover;object-position:center;border:1px solid #ffb4e06b;border-radius:10px;width:100%;display:block;box-shadow:0 10px 28px #0f070c59}.help-output .help-line{grid-template-columns:25ch 1fr;column-gap:1ch;display:grid}.help-output .help-heading{font-weight:600;display:block}.help-output .help-command{white-space:pre}.help-output .help-description{color:#caa8bb}.error{color:#ff9ea8}@media (width<=700px){.history{min-height:0;max-height:none}.rich-output{grid-template-columns:1fr}.rich-output-image{max-width:220px}.terminal-hint-line{gap:.38rem}}
