:root{--page-background: #f7f7f5;--surface-primary: rgba(255, 255, 255, .86);--surface-secondary: #ffffff;--surface-tertiary: #f1f1ed;--surface-contrast: #111111;--text-primary: #111111;--text-secondary: #4b4b4b;--text-muted: #6f6f6f;--border-soft: rgba(17, 17, 17, .1);--border-strong: rgba(17, 17, 17, .14);--accent-primary: #111111;--accent-secondary: #555555;--accent-deep: #111111;--shadow-soft: 0 12px 30px rgba(17, 17, 17, .05);--shadow-card: 0 10px 24px rgba(17, 17, 17, .05);--content-width: 980px;--header-height: 88px;--radius-lg: 28px;--radius-md: 20px;--radius-sm: 14px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--page-background);color:var(--text-primary);font-family:Plus Jakarta Sans,sans-serif;margin:0;min-width:320px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}img{display:block;max-width:100%}code{font-family:IBM Plex Mono,monospace}#root{min-height:100vh}.page-shell{margin:0 auto;max-width:var(--content-width);width:100%}.surface-card{background:var(--surface-primary);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--border-soft);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft)}.section-kicker{color:var(--text-muted);font-size:.82rem;font-weight:600;letter-spacing:.18em;margin-bottom:1rem;text-transform:uppercase}.section-title{font-family:Space Grotesk,sans-serif;font-size:clamp(2rem,4vw,3.6rem);letter-spacing:-.04em;line-height:1.02;margin:0}.section-copy{color:var(--text-secondary);font-size:1.05rem;line-height:1.7;margin:0}.button-link{align-items:center;background:var(--surface-contrast);border:1px solid var(--surface-contrast);border-radius:999px;box-shadow:none;color:#fff;display:inline-flex;gap:.55rem;font-weight:700;justify-content:center;min-height:3.25rem;padding:.85rem 1.4rem;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.button-link:hover{transform:translateY(-1px)}.button-link.secondary{background:transparent;border-color:var(--border-strong);box-shadow:none;color:var(--accent-deep)}.button-link.secondary:hover{box-shadow:var(--shadow-card)}.pill-list{display:flex;flex-wrap:wrap;gap:.75rem}.pill{background:#ffffffb3;border:1px solid var(--border-soft);border-radius:999px;color:var(--text-secondary);font-size:.92rem;font-weight:600;padding:.65rem .95rem}@media (max-width: 720px){:root{--header-height: 108px}.section-copy{font-size:1rem}.button-link{width:100%}}.copy-toast{background:#111111f0;border-radius:999px;bottom:1.5rem;box-shadow:0 12px 30px #1111112e;color:#fff;font-size:.92rem;left:50%;opacity:0;padding:.8rem 1rem;pointer-events:none;position:fixed;transform:translate(-50%,.5rem);transition:opacity .18s ease,transform .18s ease;white-space:nowrap;z-index:80}.copy-toast.visible{opacity:1;transform:translate(-50%)}@media (max-width: 720px){.copy-toast{bottom:1rem;max-width:calc(100vw - 2rem);text-align:center;white-space:normal}}.site-header{left:0;padding:1rem 1.5rem 0;position:fixed;right:0;top:0;z-index:30}.site-header-inner{align-items:center;display:flex;gap:1rem;justify-content:space-between;margin:0 auto;max-width:var(--content-width);padding:.9rem 1.1rem}.site-brand{align-items:center;display:inline-flex;font-family:Space Grotesk,sans-serif;font-size:1.15rem;font-weight:700;gap:.75rem;letter-spacing:-.03em}.brand-mark{background:var(--accent-primary);border-radius:999px;display:inline-block;height:.55rem;width:.55rem}.site-nav,.site-socials{align-items:center;display:flex;flex-wrap:wrap;gap:.35rem}.nav-link,.social-link{background:transparent;border-radius:999px;color:var(--text-secondary);font-size:.94rem;font-weight:600;padding:.7rem 1rem;transition:background-color .2s ease,color .2s ease,box-shadow .2s ease}.nav-link:hover,.social-link:hover,.nav-link.active{background:#ffffffb8;box-shadow:inset 0 0 0 1px #11111114;color:var(--text-primary)}.social-button{border:none;cursor:pointer;font-family:inherit;line-height:inherit}@media (max-width: 980px){.site-header-inner{flex-wrap:wrap;justify-content:center}}@media (max-width: 720px){.site-header{padding:.75rem 1rem 0}.site-header-inner{padding:.9rem}.site-nav,.site-socials{justify-content:center}}.visualizer-page{display:flex;flex-direction:column;gap:1.4rem;max-width:1280px}.visualizer-hero{align-items:start;display:grid;gap:1.5rem;grid-template-columns:minmax(0,1.1fr) minmax(280px,.8fr)}.visualizer-hero-card{display:flex;flex-direction:column;gap:1rem;padding:1.5rem}.algorithm-visualizer-wrapper{padding:1.25rem}.algorithm-bar-wrapper{align-items:flex-end;background:#ffffff9e;border:1px solid var(--border-soft);border-radius:calc(var(--radius-lg) - 6px);display:flex;gap:4px;justify-content:center;margin:auto;min-height:34rem;overflow:hidden;padding:1.25rem;width:100%}.algorithm-bar{border-radius:10px 10px 0 0;color:#0f172ab8;display:flex;font-weight:700;justify-content:center;overflow:hidden;text-align:center;transition:background-color .12s ease;white-space:nowrap}.sorting-selector,.settings-selector{background:#ffffffbd;border:1px solid var(--border-soft);border-radius:999px;color:var(--text-primary);cursor:pointer;font-size:.94rem;font-weight:700;min-height:2.9rem;min-width:8rem;padding:.82rem 1rem;text-align:center;-webkit-user-select:none;user-select:none}.sorting-selector:hover,.settings-selector:hover,.settings-option:hover{box-shadow:var(--shadow-card)}.settings-selector{position:relative;z-index:5}.settings-option{background:#fffffff2;border:1px solid var(--border-soft);border-radius:16px;margin-top:.4rem;min-width:100%;padding:.7rem 1rem}.input-container{align-items:center;background:#ffffffbd;border:1px solid var(--border-soft);border-radius:999px;display:flex;gap:.65rem;padding:.5rem .9rem}.input-text{color:var(--text-secondary);font-size:.9rem;font-weight:700}.input-box{background:transparent;border:none;color:var(--text-primary);min-width:5rem;outline:none}@media (max-width: 980px){.visualizer-page{max-width:100%}.visualizer-hero{grid-template-columns:1fr}}.contact-page{display:flex;flex-direction:column;gap:1.25rem}.contact-hero{display:grid;gap:1.5rem;grid-template-columns:minmax(0,1.15fr) minmax(260px,.85fr);padding:1.75rem}.contact-actions{display:flex;flex-wrap:wrap;gap:1rem;margin-top:2rem}.contact-copy-button{cursor:pointer}.contact-action-button{font-family:inherit}.contact-sidebar{display:flex}.contact-detail-card{background:#111;border-radius:var(--radius-lg);color:#fff;padding:1.5rem;width:100%}.detail-label{color:#ffffffa6;font-size:.82rem;font-weight:700;letter-spacing:.16em;margin-bottom:1rem;text-transform:uppercase}.detail-value{font-family:Space Grotesk,sans-serif;font-size:1.8rem;letter-spacing:-.04em;margin-bottom:1rem}.detail-copy-button{background:none;border:none;color:inherit;cursor:pointer;padding:0;text-align:left}.contact-detail-card p,.contact-link-card p{line-height:1.7;margin:0}.contact-link-grid{display:grid;gap:1.25rem;grid-template-columns:repeat(3,minmax(0,1fr))}.contact-link-card{display:flex;flex-direction:column;gap:.85rem;padding:1.4rem;transition:transform .2s ease,box-shadow .2s ease}.contact-link-button{background:var(--surface-primary);cursor:pointer;font-family:inherit;text-align:left}.contact-link-card:hover{box-shadow:var(--shadow-card);transform:translateY(-2px)}.contact-link-top{color:var(--text-primary);font-family:Space Grotesk,sans-serif;font-size:1.2rem;font-weight:700}@media (max-width: 980px){.contact-hero,.contact-link-grid{grid-template-columns:1fr}}.algorithm-button-container{background:#ffffffbd;border:1px solid var(--border-soft);border-radius:999px;color:var(--text-primary);text-align:center;cursor:pointer;font-size:.94rem;font-weight:700;min-height:2.9rem;min-width:8rem;padding:.82rem 1rem;-webkit-user-select:none;user-select:none}.algorithm-button-container:hover{box-shadow:var(--shadow-card)}.drop-down-button-container{background:#ffffffbd;border:1px solid var(--border-soft);border-radius:999px;color:var(--text-primary);text-align:center;cursor:pointer;font-size:.94rem;font-weight:700;min-height:2.9rem;min-width:8rem;padding:.82rem 1rem;position:relative;-webkit-user-select:none;user-select:none}.drop-down-button-container:hover{box-shadow:var(--shadow-card)}.drop-down-button-container .drop-down-submit{background:#0f172aeb;border-radius:999px;color:#fff;margin:0 auto;padding:.4rem .7rem;width:70px}.drop-down-button-container .drop-down-submit:hover{box-shadow:var(--shadow-card)}.drop-down-button-container .drop-down-container{background:#fffffff7;border:1px solid var(--border-soft);border-radius:18px;box-shadow:var(--shadow-card);left:0;position:absolute;top:calc(100% + .55rem);z-index:6;min-height:86px;padding:10px;width:190px}.drop-down-button-container .drop-down-container .drop-down-input-container{align-items:center;display:flex;margin:0 0 .8rem}.drop-down-button-container .drop-down-container .drop-down-input-container .drop-down-input-title{color:var(--text-secondary);font-size:.84rem;font-weight:700;margin-right:5px;white-space:nowrap}.drop-down-button-container .drop-down-container .drop-down-input-container .drop-down-input-box{background:#ffffffeb;border:1px solid var(--border-strong);border-radius:10px;color:var(--text-primary);height:34px;padding:0 .65rem;width:75px;outline:none}.drop-down-button-container .drop-down-container .drop-down-input-container .drop-down-input-box::placeholder{color:var(--text-muted);font-size:.78rem}.drop-down-button-container .drop-down-container .drop-down-input-container .drop-down-input-box:focus{border-color:var(--text-primary);box-shadow:0 0 0 3px #11111114}.node-text{cursor:pointer;text-anchor:middle;fill:#000}.node-circle{cursor:pointer;stroke:#000;stroke-width:.5}.graph-page{display:flex;flex-direction:column;gap:1.4rem}.map-wrapper{font-family:Plus Jakarta Sans,sans-serif;margin:auto;padding:1.25rem;position:relative;text-align:center;width:100%}.map{background:#ffffffb8;border:1px solid var(--border-soft);border-radius:calc(var(--radius-lg) - 6px);margin:auto;min-height:32rem;width:min(100%,48rem)}.add-node-container,.edit-node-container,.edit-edge-container{background:#fffffff5;border:1px solid var(--border-soft);border-radius:20px;box-shadow:var(--shadow-card);cursor:pointer;margin:auto;position:absolute;text-align:center}.add-node-container{height:72px;padding:.5rem;width:112px}.edit-node-container{min-height:188px;padding:.85rem;width:196px}.edit-edge-container{min-height:96px;padding:.75rem;width:148px}.add-node-title,.edit-node-title,.edit-edge-title{font-weight:700;margin:.2rem 0 .65rem}.edit-node-title,.edit-edge-title{margin-bottom:.85rem}.add-node-submit,.edit-node-submit,.edit-edge-submit{background:#0f172aeb;border-radius:999px;color:#fff;font-weight:700;margin:.55rem auto 0;padding:.45rem .75rem;width:84px}.add-edge-container{align-items:center;display:flex;gap:.5rem;justify-content:center;margin-bottom:.45rem}.add-edge-title{color:var(--text-secondary);font-size:.95rem;font-weight:700;white-space:nowrap}.add-edge-container .input-box{background:#fffffff5;border:1px solid var(--border-strong);border-radius:10px;color:var(--text-primary);height:34px;outline:none;padding:0 .65rem;width:88px}.add-edge-container .input-box::placeholder{color:var(--text-muted);font-size:.78rem}.add-edge-container .input-box:focus{border-color:var(--text-primary);box-shadow:0 0 0 3px #11111114}.edit-node-submit{margin-top:.7rem}.algorithm-selector-container{display:flex;flex-wrap:wrap;gap:.85rem;margin-bottom:1.25rem}.topological-error{color:#b91c1c;font-size:1.1rem;font-weight:700;margin-bottom:1rem}.graph-settings-title{color:var(--text-primary);font-family:Space Grotesk,sans-serif;font-size:1.8rem;margin:1.4rem auto .9rem}.graph-settings-container{display:grid;gap:.9rem;grid-template-columns:repeat(2,minmax(0,1fr));margin:0 auto;max-width:48rem}.graph-settings-item{background:#ffffffb8;border:1px solid var(--border-soft);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:1rem;font-weight:600;padding:1rem}@media (max-width: 720px){.graph-settings-container{grid-template-columns:1fr}.map{min-height:24rem;width:100%}}.home-page{padding-top:2.5rem}.hero-section{align-items:center;display:grid;gap:3rem;grid-template-columns:minmax(0,1fr) 320px;min-height:calc(100vh - 12rem)}.hero-summary{margin-top:1rem;max-width:32rem}.hero-actions{display:flex;flex-wrap:wrap;gap:1rem;margin-top:2rem}.hero-profile{position:relative}.hero-photo-wrap{margin-bottom:1rem}.hero-photo{border-radius:24px;width:100%}.hero-link-grid{display:grid;gap:.7rem;grid-template-columns:repeat(3,minmax(0,1fr))}.hero-link-grid a,.hero-link-button{background:#ffffff94;border:1px solid var(--border-soft);border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;font-size:.92rem;font-weight:600;font-family:inherit;padding:.85rem .75rem;text-align:center;transition:transform .2s ease,box-shadow .2s ease}.hero-link-grid a:hover,.hero-link-button:hover{box-shadow:var(--shadow-card);transform:translateY(-2px)}.home-meta{border-left:1px solid var(--border-soft);display:flex;flex-direction:column;gap:1rem;margin-top:2rem;padding-left:1rem}.home-meta-label{color:var(--text-muted);display:block;font-size:.78rem;letter-spacing:.12em;margin-bottom:.35rem;text-transform:uppercase}.home-meta p,.home-meta a{color:var(--text-secondary);line-height:1.6;margin:0}.copy-email-block{display:flex}.copy-email-button{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:0}.copy-email-button:hover{color:var(--text-primary)}@media (max-width: 1080px){.hero-section{grid-template-columns:1fr;min-height:unset}}@media (max-width: 720px){.hero-section{gap:2rem}.hero-link-grid{grid-template-columns:1fr}}.projects-page{display:flex;flex-direction:column;gap:1.25rem}.projects-hero{padding:1.25rem 0 0}.project-list{display:flex;flex-direction:column;gap:1.4rem}.project-entry{align-items:center;display:grid;gap:1rem;grid-template-columns:minmax(0,1fr) auto;padding:1.4rem}.project-entry h2{font-family:Space Grotesk,sans-serif;font-size:1.4rem;letter-spacing:-.04em;margin:0 0 .5rem}.project-entry-main{color:var(--text-secondary);line-height:1.7}.project-entry-side{min-width:7rem}@media (max-width: 980px){.project-entry{grid-template-columns:1fr}}.app-shell{min-height:100vh;overflow:hidden;position:relative}.app-main{padding:calc(var(--header-height) + 2rem) 1.5rem 4rem;position:relative;z-index:1}.app-ambient{display:none}@media (max-width: 720px){.app-main{padding:calc(var(--header-height) + 1.5rem) 1rem 3rem}}
