@import "https://fonts.googleapis.com/css2?family=Cedarville+Cursive&family=Space+Mono:ital,wght@0,400;0,700;1,400;1,700&display=swap";:root{--color-bg:#1a1a2e;--color-text:#c8c8c8;--color-pink:#f200ff;--color-error:#f55;--color-blue:#8be9fd;--color-prompt:#50fa7b;--cursor-pink:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='5' fill='none' stroke='%23f200ff' stroke-width='1.5'/%3E%3Ccircle cx='8' cy='8' r='1.5' fill='%23f200ff'/%3E%3C/svg%3E")}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{background:var(--color-bg);height:100%;cursor:var(--cursor-pink) 8 8, auto;font-family:Courier New,Courier,monospace;overflow:hidden}.welcome-banner{color:var(--color-pink);flex-direction:column;align-items:center;padding:3rem;font-family:Cedarville Cursive,cursive;font-size:25px;display:flex;position:fixed;inset:0}.welcome-banner h1{text-align:center;max-width:92vw}.welcome-text{color:var(--color-text);text-align:center;max-width:800px;margin-top:1rem;margin-left:1.25em;margin-right:1.25rem;font-family:Courier New,Courier,monospace;font-size:1rem}.modal-hobbies-title{color:var(--color-pink);font-family:Cedarville Cursive,cursive;font-size:25px}.app-root{background:var(--color-bg);position:fixed;inset:0}.quick-nav{z-index:10;clip-path:polygon(14% 0,100% 0,100% 100%,14% 100%,0 50%);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#1a1a2ee0;border:1px solid #f200ff73;border-right:0;flex-direction:column;gap:.2rem;width:150px;padding:1.2rem 1rem 1.2rem 1.7rem;display:flex;position:fixed;top:50%;right:0;transform:translateY(-40%);box-shadow:-12px 18px 30px #00000059}.quick-nav-label{color:#6272a4;letter-spacing:.08em;text-transform:uppercase;margin-bottom:.35rem;font-size:.7rem}.quick-nav-link{color:var(--color-text);text-align:left;cursor:var(--cursor-pink) 8 8, auto;background:0 0;border:0;padding:.35rem .2rem;font-family:inherit;font-size:.95rem;transition:color .15s,transform .15s}.quick-nav-link:before{color:var(--color-pink);content:">";margin-right:.45rem}.quick-nav-link:hover,.quick-nav-link:focus-visible{color:var(--color-blue);outline:none;transform:translate(-.25rem)}.resume-overlay{z-index:60;pointer-events:none;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.resume-scroll{pointer-events:auto;scrollbar-width:thin;scrollbar-color:#ffffff40 transparent;border-radius:6px;width:min(65vw,900px);height:90vh;overflow-y:auto;box-shadow:0 8px 48px #000000bf}.resume-scroll::-webkit-scrollbar{width:6px}.resume-scroll::-webkit-scrollbar-track{background:0 0}.resume-scroll::-webkit-scrollbar-thumb{background:#ffffff40;border-radius:3px}.resume-img{border-radius:6px;width:100%;display:block}.beach-back{z-index:20;color:#c8c8c8;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0000008c;border:1px solid #ffffff26;border-radius:6px;padding:.4rem .9rem;font-family:Courier New,Courier,monospace;font-size:.9rem;position:fixed;top:1.2rem;left:1.2rem}.beach-back:hover{color:#fff;border-color:#fff6}.resume-download{z-index:70;color:#c8c8c8;cursor:var(--cursor-pink) 8 8, auto;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0000008c;border:1px solid #ffffff26;border-radius:6px;padding:.4rem .8rem;font-family:Courier New,Courier,monospace;font-size:.9rem;text-decoration:none;position:fixed;top:1.2rem;right:6.3rem}.resume-download:hover{color:#fff;border-color:#fff6}.resume-exit{z-index:70;color:#c8c8c8;cursor:var(--cursor-pink) 8 8, auto;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0000008c;border:1px solid #ffffff26;border-radius:6px;padding:.4rem .8rem;font-family:Courier New,Courier,monospace;font-size:.9rem;position:fixed;top:1.2rem;right:1.2rem}.resume-exit:hover{color:#fff;border-color:#fff6}.terminal-overlay{z-index:50;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#00000073;justify-content:center;align-items:center;animation:.15s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.mac-window{border-radius:10px;flex-direction:column;width:min(860px,92vw);height:min(560px,82vh);display:flex;overflow:hidden;box-shadow:0 0 0 1px #ffffff14,0 30px 60px #000000b3}.mac-titlebar{-webkit-user-select:none;user-select:none;background:#2d2d2d;border-bottom:1px solid #1a1a1a;flex-shrink:0;align-items:center;height:36px;padding:0 12px;display:flex;position:relative}.traffic-lights{align-items:center;gap:8px;display:flex}.light{border-radius:50%;width:12px;height:12px}.light-red{background:#ff5f57}.light-yellow{background:#ffbd2e}.light-green{background:#28c840}.window-title{color:#888;font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,sans-serif;font-size:12px;position:absolute;left:50%;transform:translate(-50%)}.terminal{background:var(--color-bg);cursor:text;flex:1;min-height:0;padding:1.5rem;font-family:Courier New,Courier,monospace;font-size:14px;overflow-y:auto}.banner{color:var(--color-pink);white-space:pre;margin-bottom:1rem;font-family:Courier New,Courier,monospace;font-size:13px;line-height:1.4;overflow-x:hidden}.prompt-line{flex-wrap:wrap;align-items:center;line-height:1.6;display:flex}.prompt-label{color:var(--color-prompt);white-space:nowrap;-webkit-user-select:none;user-select:none;font-size:18px;font-weight:700}.prompt-input{color:var(--color-text);font-size:18px}.terminal-input-hidden{opacity:0;border:none;width:1px;height:1px;margin:0;padding:0;position:absolute;top:0;left:0}.terminal-input-display{color:var(--color-text);white-space:pre;margin-left:.4ch;font-family:inherit;font-size:18px}.block-cursor{vertical-align:text-bottom;width:.55em;height:1.15em;animation:2s linear infinite cursorColor,1s step-end infinite blink;display:inline-block}@keyframes cursorColor{0%{background:#6effdd}25%{background:orange}50%{background:#ff0}75%{background:#00e5ff}to{background:#ff00ea}}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.output-line{color:#c8c8c8;white-space:pre-wrap;margin:.1rem 0 .4rem;font-size:18px;line-height:1.5}.output-line.error{color:#f55;font-size:18px}.grid-view{flex-wrap:wrap;gap:.6rem;margin:.4rem 0;display:flex}.grid-card{color:#8be9fd;border:1px solid #44475a;border-radius:4px;padding:.4rem .8rem;font-family:monospace;font-size:13px}.modal-overlay{z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#000000bf;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--color-bg);border:1px solid var(--color-pink);border-radius:8px;width:min(860px,90vw);max-height:80vh;padding:2rem;font-family:Courier New,Courier,monospace;position:relative;overflow-y:auto}.modal-close{color:#6272a4;cursor:pointer;background:0 0;border:none;padding:.2rem .4rem;font-size:1.1rem;line-height:1;position:absolute;top:1rem;right:1rem}.modal-close:hover{color:var(--color-error)}.modal-title{color:var(--color-blue);letter-spacing:.05em;margin-bottom:1.5rem;font-size:1rem;font-weight:700}.modal-body{color:var(--color-text);line-height:1.7}.modal-about p{margin-bottom:.5rem}.modal-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem;display:grid}.modal-card{background:var(--color-bg);cursor:pointer;border:1px solid #44475a;border-radius:6px;padding:1rem;transition:border-color .15s}.modal-card:hover{border-color:var(--color-blue)}.modal-card-title{color:var(--color-blue);margin-bottom:.4rem;font-size:.95rem}.modal-card-desc{color:var(--color-text);font-size:.85rem}.modal-back{color:var(--color-pink);cursor:pointer;background:0 0;border:none;margin-bottom:1.2rem;padding:0;font-family:inherit;font-size:.9rem;display:block}.modal-back:hover{color:var(--color-blue)}.modal-project-title{color:var(--color-blue);margin-bottom:1.2rem;font-size:1.1rem;font-weight:400}.modal-project-images{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.75rem;margin-bottom:1.5rem;display:grid}.modal-project-img{object-fit:cover;aspect-ratio:12/9;background:#111;border:1px solid #44475a;border-radius:4px;width:100%;margin:2rem}.modal-project-story p{color:var(--color-text);margin-bottom:.9rem;line-height:1.75}.modal-project-links a{color:var(--color-pink);border:1px solid var(--color-pink);margin:20.4rem 0 0;padding:.5rem;font-family:inherit;font-size:.95rem;text-decoration:none}.socials-overlay{z-index:60;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0000008c;justify-content:center;align-items:center;animation:.15s fadeIn;display:flex;position:fixed;inset:0}.socials-window{background:#1a1a2e;border:1px solid #f200ff59;border-radius:12px;flex-direction:column;width:min(540px,90vw);height:280px;display:flex;position:relative;overflow:hidden;box-shadow:0 24px 60px #000000b3}.socials-close{z-index:10;color:#6272a4;cursor:pointer;background:0 0;border:none;padding:.2rem .4rem;font-size:1rem;line-height:1;position:absolute;top:.6rem;right:.8rem}.socials-close:hover{color:var(--color-error)}.socials-hint{z-index:10;color:#6272a4;pointer-events:none;white-space:nowrap;font-family:Courier New,Courier,monospace;font-size:.75rem;position:absolute;bottom:.6rem;left:50%;transform:translate(-50%)}@media (width<=480px){.welcome-banner{padding:1rem .75rem}.welcome-banner h1{font-size:clamp(1.35rem,6vw,2rem);line-height:1.15}.welcome-text{max-width:94vw;margin-top:.65rem;margin-left:0;margin-right:0;font-size:clamp(.72rem,2.5vw,.9rem);line-height:1.35}.quick-nav{clip-path:none;border-right:1px solid #f200ff73;flex-flow:wrap;justify-content:center;gap:.1rem .65rem;width:100%;padding:.65rem .8rem;top:auto;bottom:.75rem;transform:none}.quick-nav-label{text-align:center;width:100%;margin:0}.quick-nav-link{padding:.2rem;font-size:.8rem}.resume-overlay{pointer-events:auto;background:0 0;justify-content:flex-start;align-items:flex-start;padding-top:1rem;padding-left:.5rem;padding-right:.5rem}.resume-scroll{width:100%;height:auto;max-height:calc(100vh - 2.25rem);box-shadow:none;box-sizing:border-box;-webkit-overflow-scrolling:touch;border-radius:4px;margin:0 auto;padding:.25rem .25rem .75rem;overflow-y:auto}.resume-img{width:100%;height:auto;margin:0;display:block}}button,a,canvas{cursor:var(--cursor-pink) 8 8, auto}
