:root{ --bg: #0D1210; --bg-alt: #10160F; --panel: #171F1B; --panel-line: #2A342E; --amber: #FFB020; --amber-dim: #8a6a2c; --green: #5B8C6E; --text: #E8E6DD; --text-dim: #8B948B; --mono: 'JetBrains Mono', monospace; --sans: 'Inter', sans-serif; } *{ box-sizing: border-box; margin:0; padding:0; } body{ background: var(--bg); color: var(--text); font-family: var(--sans); line-height: 1.6; overflow-x: hidden; } a{ color: inherit; } ::selection{ background: var(--amber); color: #0D1210; } :focus-visible{ outline: 2px solid var(--amber); outline-offset: 3px; } /* background grid texture */ .grid-bg{ position: fixed; inset: 0; z-index: 0; background-image: linear-gradient(rgba(91,140,110,0.06) 1px, transparent 1px), linear-gradient(90deg, rgba(91,140,110,0.06) 1px, transparent 1px); background-size: 42px 42px; pointer-events: none; } /* signature trace line */ .trace-svg{ position: fixed; top: 0; left: 24px; height: 100vh; width: 40px; z-index: 1; pointer-events: none; } .trace-path{ fill: none; stroke: var(--green); stroke-width: 1.5; opacity: 0.35; stroke-dasharray: 6 6; } .trace-node{ fill: var(--amber); opacity: 0.8; } @media (max-width: 900px){ .trace-svg{ display: none; } } .wrap{ position: relative; z-index: 2; max-width: 980px; margin: 0 auto; padding: 0 32px; } header.top{ padding: 28px 0; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--panel-line); } .logo{ font-family: var(--mono); font-weight: 700; letter-spacing: 0.5px; font-size: 15px; color: var(--amber); } .logo span{ color: var(--text-dim); } nav a{ font-family: var(--mono); font-size: 13px; color: var(--text-dim); text-decoration: none; margin-left: 28px; } nav a:hover{ color: var(--amber); } /* HERO */ .hero{ padding: 100px 0 90px; } .status-line{ display: inline-flex; align-items: center; gap: 8px; font-family: var(--mono); font-size: 12px; color: var(--green); border: 1px solid var(--panel-line); background: var(--panel); padding: 6px 12px; border-radius: 3px; margin-bottom: 32px; } .dot{ width: 7px; height: 7px; border-radius: 50%; background: var(--green); box-shadow: 0 0 8px var(--green); animation: blink 2.4s infinite; } @keyframes blink{ 0%, 100%{ opacity: 1; } 50%{ opacity: 0.3; } } @media (prefers-reduced-motion: reduce){ .dot{ animation: none; } } h1{ font-family: var(--mono); font-weight: 800; font-size: clamp(32px, 5vw, 52px); line-height: 1.15; letter-spacing: -0.5px; max-width: 760px; } h1 .accent{ color: var(--amber); } .hero-sub{ margin-top: 24px; max-width: 560px; color: var(--text-dim); font-size: 17px; } .hero-cta{ margin-top: 40px; display: flex; gap: 14px; flex-wrap: wrap; } .btn{ font-family: var(--mono); font-size: 13px; padding: 12px 20px; border-radius: 3px; text-decoration: none; display: inline-block; border: 1px solid var(--panel-line); transition: border-color 0.15s ease, background 0.15s ease; } .btn-primary{ background: var(--amber); color: #10160F; border-color: var(--amber); font-weight: 700; } .btn-primary:hover{ background: #ffc451; } .btn-ghost{ color: var(--text); } .btn-ghost:hover{ border-color: var(--amber); color: var(--amber); } /* SECTION LABEL */ .sec-label{ font-family: var(--mono); font-size: 12px; color: var(--amber-dim); letter-spacing: 2px; text-transform: uppercase; margin-bottom: 14px; } section{ padding: 70px 0; border-top: 1px solid var(--panel-line); } .about p{ max-width: 640px; font-size: 16px; color: var(--text-dim); } .about strong{ color: var(--text); font-weight: 600; } /* TIMELINE */ .tl-item{ padding: 18px 0; border-bottom: 1px solid var(--panel-line); } .tl-item:last-of-type{ border-bottom: none; } .tl-head{ display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: 8px; } .tl-role{ font-family: var(--mono); font-weight: 700; font-size: 15px; } .tl-date{ font-family: var(--mono); font-size: 12px; color: var(--amber-dim); } .tl-desc{ margin-top: 6px; color: var(--text-dim); font-size: 14px; max-width: 620px; } /* PROJECT SUBGROUPS */ .proj-subhead{ font-family: var(--mono); font-size: 13px; color: var(--text-dim); margin: 36px 0 14px; display: flex; align-items: center; gap: 10px; } .proj-subhead::after{ content: ''; flex: 1; height: 1px; background: var(--panel-line); } .cad-grid{ display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 14px; } .cad-card{ background: var(--panel); border: 1px solid var(--panel-line); border-radius: 4px; overflow: hidden; } .cad-thumb{ aspect-ratio: 4/3; background: repeating-linear-gradient(45deg, var(--panel-line) 0, var(--panel-line) 1px, transparent 1px, transparent 12px), var(--bg-alt); display: flex; align-items: center; justify-content: center; font-family: var(--mono); font-size: 11px; color: var(--text-dim); } .cad-label{ padding: 12px 14px; font-family: var(--mono); font-size: 13px; } /* PROJECTS */ .proj-grid{ display: grid; grid-template-columns: 1fr; gap: 18px; margin-top: 24px; } .card{ background: var(--panel); border: 1px solid var(--panel-line); border-radius: 4px; padding: 26px; transition: border-color 0.2s ease; } .card:hover{ border-color: var(--green); } .card-top{ display: flex; justify-content: space-between; align-items: baseline; gap: 16px; flex-wrap: wrap; } .card h3{ font-family: var(--mono); font-size: 19px; font-weight: 700; } .card-result{ font-family: var(--mono); font-size: 12px; color: var(--green); white-space: nowrap; } .card p.desc{ margin-top: 10px; color: var(--text-dim); font-size: 14.5px; max-width: 620px; } .tags{ margin-top: 16px; display: flex; gap: 8px; flex-wrap: wrap; } .tag{ font-family: var(--mono); font-size: 11px; color: var(--text-dim); border: 1px solid var(--panel-line); padding: 3px 8px; border-radius: 2px; } .card-link{ margin-top: 18px; display: inline-block; font-family: var(--mono); font-size: 12.5px; color: var(--amber); text-decoration: none; } .card-link:hover{ text-decoration: underline; } /* STACK LAYERS */ .layer{ margin-bottom: 28px; } .layer-title{ font-family: var(--mono); font-size: 13px; color: var(--text); margin-bottom: 12px; display: flex; align-items: center; gap: 10px; } .layer-title::after{ content: ''; flex: 1; height: 1px; background: var(--panel-line); } .chip-row{ display: flex; flex-wrap: wrap; gap: 10px; } .chip{ font-family: var(--mono); font-size: 13px; padding: 7px 14px; border-radius: 3px; border: 1px solid var(--panel-line); } .chip.core{ color: var(--amber); border-color: var(--amber-dim); background: rgba(255,176,32,0.06); } .chip.support{ color: var(--text-dim); } /* CV */ .cv-row{ display: flex; gap: 14px; flex-wrap: wrap; margin-top: 20px; } footer{ padding: 50px 0 70px; border-top: 1px solid var(--panel-line); color: var(--text-dim); font-size: 13px; font-family: var(--mono); } footer .infra-note{ margin-top: 10px; color: var(--green); } @media (min-width: 640px){ .proj-grid{ grid-template-columns: 1fr; } }