:root{--bg: #0c0c0c;--fg: #e8e8e8;--dim: #8a8a8a;--green: #3ddc84;--accent: #58a6ff;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);min-height:100%}body{color:var(--fg);font-family:IBM Plex Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:19px;line-height:1.6;-webkit-font-smoothing:antialiased}#root{min-height:100vh}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}.terminal{max-width:860px;margin:0 auto;padding:48px 24px 96px}.prompt{color:var(--green);font-weight:600}.prompt-line{margin-bottom:8px;word-break:break-word}.dim{color:var(--dim)}.cursor{display:inline-block;width:.55em;height:1em;background:var(--green);margin-left:2px;vertical-align:text-bottom;animation:blink 1s steps(1) infinite}@keyframes blink{0%,49%{opacity:1}50%,to{opacity:0}}.node{display:inline-block;padding:0 4px;margin:0 -4px;border-radius:2px}.node:hover{background:#1c1c1c}.arrow{display:inline-block;width:.85em;height:.85em;margin-left:7px;vertical-align:-.08em;background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 12h16m-7-7l7 7l-7 7'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 12h16m-7-7l7 7l-7 7'/%3E%3C/svg%3E");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.node:focus-visible,.node:focus{outline:none;background:var(--green);color:#0c0c0c}.tree{white-space:pre}.tree-line{display:flex;align-items:center;min-height:1.6em;white-space:normal}.tree-prefix{white-space:pre;color:var(--dim);flex-shrink:0}.icon-row{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.icon-link{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:4px}.icon-link img{width:20px;height:20px;filter:invert(1);display:block}.icon-link:hover{background:#1c1c1c}.icon-link:focus-visible,.icon-link:focus{outline:none;background:var(--green)}.icon-link:focus img,.icon-link:focus-visible img{filter:invert(1) brightness(0)}.back-link{display:inline-block;margin-bottom:28px}.back-link-hint{display:block;font-size:.7em;margin-top:2px}.back-link:focus .back-link-hint,.back-link:focus-visible .back-link-hint{color:#0c0c0c}.page-body{margin-top:24px}.project{margin-bottom:44px}.project-name{color:var(--green);font-weight:600;font-size:1.05em;margin-bottom:8px}.project-desc{color:var(--fg);margin-bottom:12px}.project-links{display:flex;gap:8px;flex-wrap:wrap}.section-header{color:var(--green);font-weight:600;margin-bottom:16px}form{margin-top:8px}.info-box{margin-top:40px;padding:16px 18px;border:1px solid #2a2a2a;border-radius:2px;color:var(--dim)}.info-box-label{margin-bottom:12px}.info-box-email{display:inline-block;margin-top:12px;color:var(--dim)}.info-box-email:hover,.info-box-email:focus-visible,.info-box-email:focus{color:var(--fg)}.misc-row{margin-bottom:8px}.misc-row:last-child{margin-bottom:0}.misc-value{color:var(--fg)}.field{margin-bottom:20px}.field label{display:block;color:var(--dim);margin-bottom:6px}.field label:before{content:"> ";color:var(--green)}input,textarea{width:100%;background:#0c0c0c;border:1px solid #333;color:var(--fg);font:inherit;padding:10px 12px;border-radius:2px}input:focus,textarea:focus{outline:none;border-color:var(--green)}textarea{resize:vertical;min-height:120px}.submit-btn{border:1px solid var(--green);color:var(--green);padding:10px 20px;border-radius:2px}.submit-btn:hover:not(:disabled){background:var(--green);color:#0c0c0c}.submit-btn:focus-visible,.submit-btn:focus{outline:none;background:var(--green);color:#0c0c0c}.submit-btn:disabled{opacity:.5;cursor:default}.status-line{margin-top:16px}.status-ok{color:var(--green)}.status-error{color:#ff6b6b}@media(max-width:640px){body{font-size:16px}.terminal{padding:28px 16px 64px}}
