@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Space+Grotesk:wght@400;500;600;700&display=swap";:root{--bg: #121417;--bg-soft: #1a1f24;--panel: rgba(255, 255, 255, .03);--text: #f1eee9;--muted: #b8b0a3;--line: rgba(255, 255, 255, .13);--accent: #f7931a;--accent-soft: rgba(247, 147, 26, .2);--ok: #44d58b;--work: #57a2ff;--archive: #8f8f8f}body[data-theme=light]{--bg: #f7f5ef;--bg-soft: #fffdf9;--panel: rgba(0, 0, 0, .03);--text: #111214;--muted: #595f68;--line: rgba(0, 0, 0, .12);--accent-soft: rgba(247, 147, 26, .25);--ok: #1f7a47}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:Space Grotesk,Segoe UI,sans-serif;background:radial-gradient(circle at 8% 8%,rgba(247,147,26,.11),transparent 45%),radial-gradient(circle at 92% 18%,rgba(87,162,255,.08),transparent 40%),var(--bg);color:var(--text)}a{color:inherit}.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(transparent 95%,#ffffff0a 96%),linear-gradient(90deg,transparent 95%,rgba(255,255,255,.04) 96%);background-size:32px 32px;pointer-events:none;opacity:.25}.shell{width:min(1100px,92vw);margin:0 auto;padding:3rem 0 4rem}.theme-toggle{position:fixed;top:1rem;right:1rem;z-index:30;border:1px solid var(--line);background:color-mix(in srgb,var(--bg-soft) 72%,transparent);color:var(--text);border-radius:999px;padding:.45rem .78rem;display:inline-flex;align-items:center;gap:.45rem;cursor:pointer;font-family:IBM Plex Mono,monospace;font-size:.8rem;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:border-color .16s ease,background-color .16s ease,transform .16s ease}.theme-toggle:hover{border-color:var(--accent);background:var(--accent-soft);transform:translateY(-1px)}.theme-toggle:focus-visible{outline:none;box-shadow:0 0 0 2px var(--accent-soft)}.theme-toggle__icon{width:.95rem;height:.95rem}.hero{padding:3.35rem 0 2rem;border-bottom:1px solid var(--line);animation:rise .42s ease-out both}.hero__avatarButton{border:0;background:transparent;padding:0;display:inline-block;cursor:pointer;position:relative}.hero__avatarButton:before{content:"";position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px;border-radius:999px;background:radial-gradient(circle,rgba(247,147,26,.28),transparent 65%);opacity:0;transform:scale(.94);transition:opacity .22s ease,transform .22s ease;pointer-events:none}.hero__avatar{width:clamp(128px,18vw,170px);aspect-ratio:1;object-fit:cover;border-radius:999px;border:2px solid var(--line);box-shadow:0 14px 35px #00000047;transform:translateY(0) scale(1);transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease;position:relative;z-index:1}.hero__avatarButton:hover:before,.hero__avatarButton:focus-visible:before{opacity:1;transform:scale(1)}.hero__avatarButton:hover .hero__avatar,.hero__avatarButton:focus-visible .hero__avatar{transform:translateY(-2px) scale(1.035);border-color:var(--accent);box-shadow:0 18px 40px #00000059}.hero__avatarButton:focus-visible{outline:none}.hero__avatarButton:focus-visible .hero__avatar{box-shadow:0 0 0 2px var(--accent-soft),0 18px 40px #00000059}.image-modal{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;z-index:24}.image-modal__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;border:0;background:#080a0cc7;animation:modalFadeIn .22s ease-out both}.image-modal__content{position:relative;margin:0;width:min(620px,90vw);border:1px solid var(--line);border-radius:1rem;background:var(--bg-soft);padding:.8rem;overflow:hidden;animation:modalZoomIn .26s cubic-bezier(.2,.8,.2,1) both}.image-modal__close{position:absolute;right:.9rem;top:.9rem;border:1px solid var(--line);background:#00000040;color:var(--text);border-radius:999px;padding:.3rem .65rem;cursor:pointer}.image-modal__close:hover{border-color:var(--accent);background:var(--accent-soft)}.image-modal__image{display:block;width:100%;aspect-ratio:1;object-fit:cover;border-radius:.7rem;transform-origin:center;animation:modalImageIn .36s cubic-bezier(.2,.8,.2,1) both}.image-modal--closing .image-modal__backdrop{animation:modalFadeOut .18s ease-in both}.image-modal--closing .image-modal__content{animation:modalZoomOut .21s ease-in both}.image-modal--closing .image-modal__image{animation:modalImageOut .21s ease-in both}.hero__eyebrow,.panel__eyebrow{font-family:IBM Plex Mono,monospace;text-transform:uppercase;letter-spacing:.16em;color:var(--accent);font-size:.75rem}.hero__eyebrow{font-size:.92rem}.hero__title{margin:.4rem 0 1rem;font-size:clamp(.95rem,4.85vw,4rem);line-height:1.1;letter-spacing:-.01em;white-space:nowrap!important}.hero__lead{max-width:none;color:var(--muted);font-size:clamp(1rem,1.8vw,1.2rem);white-space:nowrap}@media (max-width: 900px){.hero__lead{white-space:normal}}.hero__hint{margin-top:1.3rem;font-family:IBM Plex Mono,monospace;color:var(--muted);font-size:.85rem}.hero__hintRow{margin-top:1.3rem;display:flex;align-items:center;gap:.55rem;line-height:1.2}.hero__hintRow .hero__hint{margin:0;line-height:1.2;display:inline-flex;align-items:center}.hero__hintButton{display:none;border:1px solid var(--line);background:transparent;color:var(--text);border-radius:999px;width:2rem;height:2rem;padding:0;align-items:center;justify-content:center;cursor:pointer;transition:border-color .15s ease,background-color .15s ease,transform .15s ease;margin:0;flex:0 0 auto;position:relative;top:0}.hero__hintButton:hover{border-color:var(--accent);background:var(--accent-soft);transform:translateY(-1px)}.hero__hintButton:focus-visible{outline:none;box-shadow:0 0 0 2px var(--accent-soft)}.hero__hintIcon{width:1rem;height:1rem}.hero__links{margin-top:1.5rem;display:flex;flex-wrap:wrap;gap:.8rem}.hero__links a,.project-card__links a,.project-card__links .link-with-icon--disabled,.footer a{text-decoration:none;border:1px solid var(--line);padding:.45rem .75rem;border-radius:999px;transition:transform .15s ease,border-color .15s ease,background-color .15s ease}.link-with-icon{display:inline-flex;align-items:center;gap:.42rem}.link-icon{width:.95rem;height:.95rem;flex:0 0 auto;opacity:.96}.hero__links a:hover,.project-card__links a:hover,.footer a:hover{border-color:var(--accent);background:var(--accent-soft);transform:translateY(-1px)}.project-card__links .link-with-icon--disabled{opacity:.68;cursor:not-allowed}.panel{margin-top:2rem;padding:1.5rem;border:1px solid var(--line);border-radius:1.1rem;background:var(--panel);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:rise .42s ease-out both}.panel__header,.panel__header .panel__eyebrow{margin:0}.panel__header h2{margin:.2rem 0 0;font-size:clamp(1.35rem,3.1vw,2rem)}.focus-list{margin:1.1rem 0 0;padding-left:1.1rem;color:var(--muted);display:grid;gap:.6rem}.projects-grid{margin-top:1.1rem;display:grid;grid-template-columns:repeat(12,1fr);gap:1rem}.project-card{grid-column:span 12;display:flex;flex-direction:column;border:1px solid var(--line);border-radius:1rem;padding:1rem;background:linear-gradient(170deg,rgba(255,255,255,.03),transparent 65%);transition:border-color .16s ease,transform .16s ease}.project-card:hover{border-color:var(--accent);transform:translateY(-2px)}.project-card__head{display:flex;justify-content:space-between;gap:1rem;align-items:center}.project-card h3{margin:0}.project-card p{margin:.8rem 0;color:var(--muted)}.status{font-family:IBM Plex Mono,monospace;font-size:.72rem;border:1px solid currentColor;border-radius:999px;padding:.2rem .65rem}.status--live{color:var(--ok)}.status--in-development{color:var(--work)}.status--archived{color:var(--archive)}.chip-row{display:flex;flex-wrap:wrap;gap:.45rem;margin-bottom:.9rem}.chip{font-family:IBM Plex Mono,monospace;font-size:.75rem;border:1px solid var(--line);border-radius:.5rem;padding:.2rem .45rem}.project-card__links{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:auto}.lab__copy{color:var(--muted)}.dropzone{margin-top:1rem;border:1px dashed var(--line);border-radius:.9rem;min-height:120px;display:grid;place-items:center;text-align:center;padding:1rem;cursor:pointer;transition:border-color .16s ease,background-color .16s ease}.dropzone input{display:none}.dropzone.is-over,.dropzone:hover{border-color:var(--accent);background:var(--accent-soft)}.hash-result{margin-top:1rem;padding:.9rem;border-radius:.9rem;border:1px solid var(--line);background:#0000002e}.hash-result code{font-family:IBM Plex Mono,monospace;display:block;overflow-wrap:anywhere;color:var(--accent)}.lab__error{color:#ff8e8e;margin-top:.75rem}.identity__copy{color:var(--muted)}.identity__box{margin-top:1rem;border:1px solid var(--line);border-radius:.9rem;padding:1rem;background:#00000029}.identity__box p{margin:.45rem 0}.identity__fingerprint{overflow-wrap:anywhere;word-break:break-word}.identity__status{font-family:IBM Plex Mono,monospace}.identity__status--verified{color:var(--ok);font-weight:600}.identity__status--failed{color:#ff8e8e}.identity__status--verifying,.identity__status--idle{color:var(--muted)}.identity__button{margin-top:.9rem;border:1px solid var(--line);background:transparent;color:var(--text);border-radius:999px;padding:.45rem .8rem;cursor:pointer;transition:border-color .15s ease,background-color .15s ease,transform .15s ease;display:inline-flex;align-items:center;gap:.45rem}.identity__button:hover{border-color:var(--accent);background:var(--accent-soft);transform:translateY(-1px)}.identity__button:disabled{cursor:not-allowed;opacity:.85;transform:none}.identity__button--working{border-color:var(--accent);background:var(--accent-soft)}.identity__spinner{width:.9rem;height:.9rem;border:2px solid rgba(255,255,255,.3);border-top-color:var(--accent);border-radius:999px;animation:spin .7s linear infinite}.identity__actions{margin-top:.8rem;padding-top:.25rem;display:flex;flex-wrap:nowrap;gap:.65rem;overflow-x:auto;overflow-y:visible;padding-bottom:.2rem;position:relative;z-index:1}.identity__actions .identity__button{margin-top:0;white-space:nowrap}@media (max-width: 640px){.identity__actions{flex-direction:column;flex-wrap:nowrap;overflow-x:visible}.identity__actions .identity__button{width:100%;justify-content:center}}.identity__copy-feedback{margin:.7rem 0 0;font-family:IBM Plex Mono,monospace;font-size:.82rem}.identity__copy-feedback--copied{color:var(--ok)}.identity__copy-feedback--error{color:#ff8e8e}.footer{margin-top:2rem;padding-top:1.2rem;border-top:1px solid var(--line);color:var(--muted);display:grid;gap:.65rem}.dot{width:.6rem;height:.6rem;border-radius:999px;display:inline-block;margin-right:.55rem;background:var(--ok);box-shadow:0 0 #44d58bb3;animation:pulse 1.8s infinite}.back-to-top{position:fixed;right:1rem;bottom:1rem;z-index:30;width:2.5rem;height:2.5rem;border:1px solid var(--line);background:color-mix(in srgb,var(--bg-soft) 72%,transparent);color:var(--text);border-radius:999px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:border-color .16s ease,background-color .16s ease,transform .16s ease}.back-to-top:hover{border-color:var(--accent);background:var(--accent-soft);transform:translateY(-1px)}.back-to-top:focus-visible{outline:none;box-shadow:0 0 0 2px var(--accent-soft)}.back-to-top__icon{width:1.15rem;height:1.15rem}.palette{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;z-index:20}.palette__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#0000008f;border:0}.palette__panel{position:relative;width:min(650px,92vw);border:1px solid var(--line);border-radius:1rem;background:var(--bg-soft);box-shadow:0 25px 45px #0000004d;overflow:hidden}.palette__input{width:100%;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--text);padding:1rem;font-size:1rem;font-family:IBM Plex Mono,monospace}.palette__input:focus{outline:none}.palette__list{margin:0;list-style:none;padding:.5rem;max-height:55vh;overflow:auto}.palette__item{width:100%;border:0;background:transparent;color:var(--text);text-align:left;display:flex;justify-content:space-between;align-items:center;padding:.72rem;border-radius:.6rem;cursor:pointer}.palette__item:hover{background:var(--accent-soft)}.palette__item small{color:var(--muted);font-family:IBM Plex Mono,monospace}.palette__empty{color:var(--muted);padding:.75rem}@media (min-width: 760px){.project-card{grid-column:span 6}}@media (min-width: 980px){.project-card{grid-column:span 4}}@media (max-width: 900px),(hover: none) and (pointer: coarse){.hero__hintButton{display:inline-flex}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%{box-shadow:0 0 #44d58bb3}70%{box-shadow:0 0 0 10px #44d58b00}to{box-shadow:0 0 #44d58b00}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalZoomIn{0%{opacity:0;transform:translateY(10px) scale(.965)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes modalImageIn{0%{transform:scale(1.045);filter:saturate(.9) brightness(.92)}to{transform:scale(1);filter:saturate(1) brightness(1)}}@keyframes modalFadeOut{0%{opacity:1}to{opacity:0}}@keyframes modalZoomOut{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(8px) scale(.975)}}@keyframes modalImageOut{0%{transform:scale(1);filter:saturate(1) brightness(1)}to{transform:scale(.985);filter:saturate(.94) brightness(.94)}}@media (prefers-reduced-motion: reduce){.image-modal--closing .image-modal__backdrop,.image-modal--closing .image-modal__content,.image-modal--closing .image-modal__image{animation:none}}@media (prefers-reduced-motion: reduce){.image-modal__backdrop,.image-modal__content,.image-modal__image{animation:none}}
