:root{--ink: #0a0a0c;--ink-1: #0e0e12;--ink-2: #14141a;--ink-3: #1b1b22;--ink-raise: #202028;--cream: #f5f2ec;--mist: #a3a2ae;--dim: #6a6975;--faint: #46454f;--flame: #ff6a3d;--flame-soft: #ff8a5b;--ember: #ff4d6d;--iris: #8b7cf6;--green: #34d399;--amber: #fbbf24;--sky: #60a5fa;--grad: linear-gradient(105deg, #ff8a5b 0%, #ff5c7c 46%, #9f7cf6 100%);--grad-soft: linear-gradient(105deg, rgba(255, 138, 91, .16), rgba(159, 124, 246, .16));--line: rgba(255, 255, 255, .08);--line-2: rgba(255, 255, 255, .14);--line-3: rgba(255, 255, 255, .22);--r-sm: 10px;--r: 16px;--r-lg: 24px;--r-xl: 32px;--shadow: 0 24px 70px -28px rgba(0, 0, 0, .8);--shadow-flame: 0 24px 70px -26px rgba(255, 106, 61, .45);--sans: "Inter", system-ui, -apple-system, sans-serif;--serif: "Fraunces", "Times New Roman", serif;--mono: "JetBrains Mono", ui-monospace, monospace;--maxw: 1240px;--ease: cubic-bezier(.22, 1, .36, 1)}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}html,body{margin:0;padding:0}body{background:var(--ink);color:var(--cream);font-family:var(--sans);font-size:16px;line-height:1.6;font-feature-settings:"ss01","cv05";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;min-height:100vh;overflow-x:hidden}#root{min-height:100vh;position:relative;z-index:1}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background:radial-gradient(48vw 48vw at 12% -6%,rgba(255,106,61,.18),transparent 60%),radial-gradient(42vw 42vw at 92% 4%,rgba(139,124,246,.16),transparent 62%),radial-gradient(60vw 50vw at 60% 108%,rgba(255,92,124,.1),transparent 60%);filter:saturate(1.1)}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;pointer-events:none;opacity:.04;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");mix-blend-mode:overlay}h1,h2,h3,h4{margin:0 0 .5em;line-height:1.04;font-weight:600;letter-spacing:-.02em}.serif{font-family:var(--serif);font-weight:400;font-optical-sizing:auto;letter-spacing:-.01em}.display{font-family:var(--serif);font-weight:400;font-optical-sizing:auto;line-height:.98;letter-spacing:-.025em;font-size:clamp(2.6rem,8vw,6rem);margin:0}p{margin:0 0 1em;color:var(--mist)}.lead{font-size:clamp(1.05rem,1.6vw,1.3rem);line-height:1.65;color:var(--mist)}.eyebrow{font-family:var(--mono);font-size:.74rem;font-weight:500;letter-spacing:.28em;text-transform:uppercase;color:var(--flame-soft);display:inline-flex;align-items:center;gap:.6rem}.eyebrow:before{content:"";width:1.6rem;height:1px;background:currentColor;opacity:.7}.eyebrow.no-rule:before{display:none}.grad-text{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.ital{font-style:italic;font-family:var(--serif)}a{color:var(--cream);text-decoration:none;transition:color .2s var(--ease)}.muted{color:var(--mist)}.dim{color:var(--dim)}button{font-family:inherit;font-size:1rem;cursor:pointer;border:none;background:none;color:inherit}input,textarea,select{font-family:inherit;font-size:1rem;color:var(--cream)}textarea{resize:vertical}::placeholder{color:var(--faint)}::selection{background:#ff6a3d52;color:#fff}img{max-width:100%;display:block}.container{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 clamp(1.1rem,4vw,2.4rem)}.container-narrow{width:100%;max-width:920px;margin:0 auto;padding:0 clamp(1.1rem,4vw,2.4rem)}.nav{position:sticky;top:0;z-index:100;backdrop-filter:blur(14px) saturate(1.4);-webkit-backdrop-filter:blur(14px) saturate(1.4);background:#0a0a0c8c;border-bottom:1px solid transparent;transition:border-color .3s var(--ease),background .3s var(--ease)}.nav.scrolled{border-bottom-color:var(--line);background:#0a0a0cd1}.nav-inner{display:flex;align-items:center;justify-content:space-between;height:72px}.brand{display:inline-flex;align-items:center;gap:.6rem;font-weight:600;font-size:1.06rem;letter-spacing:-.01em;color:var(--cream)}.brand:hover{color:var(--cream)}.brand-mark{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:var(--grad);color:#fff;font-family:var(--serif);font-weight:500;font-size:1.05rem;box-shadow:0 6px 18px -6px #ff6a3db3}.brand-sub{font-family:var(--mono);font-size:.64rem;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);margin-left:.1rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.55rem;padding:.75rem 1.3rem;border-radius:999px;font-weight:600;font-size:.92rem;line-height:1;white-space:nowrap;border:1px solid var(--line-2);background:#ffffff08;color:var(--cream);cursor:pointer;transition:transform .18s var(--ease),background .2s var(--ease),border-color .2s var(--ease),box-shadow .25s var(--ease),opacity .2s var(--ease)}.btn:hover{transform:translateY(-2px);border-color:var(--line-3);background:#ffffff0f}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:var(--flame);border-color:var(--flame);color:#1a0a04;box-shadow:0 12px 34px -14px #ff6a3dd9}.btn-primary:hover{background:var(--flame-soft);border-color:var(--flame-soft);box-shadow:0 18px 44px -14px #ff6a3df2}.btn-ghost{background:transparent;border-color:var(--line);color:var(--mist)}.btn-ghost:hover{color:var(--cream);border-color:var(--line-2);background:#ffffff0a}.btn-lg{padding:1rem 1.7rem;font-size:1rem}.btn-sm{padding:.5rem .9rem;font-size:.82rem}.btn .arrow{transition:transform .25s var(--ease)}.btn:hover .arrow{transform:translate(4px)}.card{background:linear-gradient(180deg,var(--ink-2),var(--ink-1));border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}.project-card{outline:none}.project-card:hover,.project-card:focus-visible{transform:translateY(-6px);box-shadow:var(--shadow);border-color:var(--line-2)}.project-card:hover img,.project-card:focus-visible img{transform:scale(1.05)}.badge{display:inline-flex;align-items:center;gap:.4rem;padding:.32rem .72rem;border-radius:999px;font-size:.74rem;font-weight:600;letter-spacing:.02em;border:1px solid var(--line-2);background:#ffffff0a;color:var(--mist);white-space:nowrap;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.badge-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.badge-green{background:#34d3991f;color:#5ee9b5;border-color:#34d39947}.badge-orange{background:#fbbf241f;color:#fcd34d;border-color:#fbbf2447}.badge-red{background:#ff4d6d1f;color:#ff8099;border-color:#ff4d6d47}.badge-blue{background:#60a5fa1f;color:#8bbcfb;border-color:#60a5fa47}.badge-gray{background:#ffffff0d;color:var(--mist);border-color:var(--line-2)}.badge-flame{background:#ff6a3d1f;color:var(--flame-soft);border-color:#ff6a3d4d}.field{display:flex;flex-direction:column;gap:.45rem}.label{font-family:var(--mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);font-weight:500}.input{width:100%;padding:.78rem .95rem;background:#00000059;border:1px solid var(--line-2);border-radius:var(--r-sm);color:var(--cream);outline:none;transition:border-color .18s var(--ease),box-shadow .18s var(--ease),background .18s var(--ease)}.input:focus{border-color:var(--flame);background:#00000080;box-shadow:0 0 0 4px #ff6a3d29}select.input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%23a3a2ae' stroke-width='2'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .85rem center;padding-right:2.4rem}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:.95rem 1.1rem;border-bottom:1px solid var(--line);vertical-align:middle}.table th{font-family:var(--mono);font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;color:var(--dim);font-weight:500}.table td{color:var(--cream)}.table tbody tr:last-child td{border-bottom:none}.table tbody tr{transition:background .15s var(--ease)}.table tbody tr:hover{background:#ffffff06}.spinner{width:26px;height:26px;border:2.5px solid var(--line-2);border-top-color:var(--flame);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loader{display:flex;align-items:center;justify-content:center;gap:.8rem;padding:5rem 1rem;color:var(--mist);font-family:var(--mono);font-size:.85rem;letter-spacing:.04em}.reveal{opacity:0;transform:translateY(26px);transition:opacity .7s var(--ease),transform .7s var(--ease);will-change:opacity,transform}.reveal.is-visible{opacity:1;transform:none}@media (prefers-reduced-motion: reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}}.marquee{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}.marquee-track{display:inline-flex;align-items:center;gap:2.6rem;white-space:nowrap;animation:marquee 32s linear infinite;will-change:transform}.marquee-item{font-family:var(--serif);font-size:clamp(1.3rem,2.4vw,2rem);color:var(--dim);display:inline-flex;align-items:center;gap:2.6rem}.marquee-item:after{content:"✦";color:var(--flame);font-size:.7em}@keyframes marquee{to{transform:translate(-50%)}}.hr{height:1px;border:0;background:var(--line);margin:0}.glow-ring{position:relative}.glow-ring:before{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;border-radius:inherit;padding:1px;background:var(--grad);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:0;transition:opacity .3s var(--ease);pointer-events:none}.glow-ring:hover:before{opacity:1}.float{animation:float 7s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.fade-up{animation:fadeUp .8s var(--ease) both}@keyframes fadeUp{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
