LittleDemon WebShell


Linux server27.hostingraja.org 2.6.32-954.3.5.lve1.4.93.el6.x86_64 #1 SMP Wed Oct 4 17:04:29 UTC 2023 x86_64
Path : /home/udaipurk/public_html/websites/rohitnagda.com/images/work-portfolio/
File Upload :
Command :
Current File : /home/udaipurk/public_html/websites/rohitnagda.com/images/work-portfolio/hyperBus-case-study.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DataFlow — UX Case Study</title>
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,700;0,900;1,400;1,700&family=DM+Sans:wght@300;400;500;600&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
<style>
  :root {
    --orange: #E8490F;
    --orange-light: #FF6B35;
    --orange-pale: #FFF0EB;
    --ink: #0F0D0A;
    --ink-80: #2A2620;
    --ink-50: #807870;
    --cream: #FAF8F5;
    --cream-dark: #F0EDE8;
    --white: #FFFFFF;
    --green: #1A8A4A;
    --red: #C5372A;
    --blue: #1B5EA8;
    --border: rgba(15,13,10,0.1);
  }

  * { margin: 0; padding: 0; box-sizing: border-box; }

  html { scroll-behavior: smooth; }

  body {
    font-family: 'DM Sans', sans-serif;
    background: var(--cream);
    color: var(--ink);
    overflow-x: hidden;
  }

  /* ─── HERO ─── */
  .hero {
    min-height: 100vh;
    background: var(--ink);
    display: grid;
    grid-template-rows: auto 1fr auto;
    position: relative;
    overflow: hidden;
  }

  .hero::before {
    content: '';
    position: absolute;
    top: -200px; right: -200px;
    width: 700px; height: 700px;
    background: radial-gradient(circle, rgba(232,73,15,0.18) 0%, transparent 65%);
    pointer-events: none;
  }

  .hero::after {
    content: '';
    position: absolute;
    bottom: -100px; left: -100px;
    width: 500px; height: 500px;
    background: radial-gradient(circle, rgba(232,73,15,0.1) 0%, transparent 65%);
    pointer-events: none;
  }

  .hero-nav {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 32px 60px;
    border-bottom: 1px solid rgba(255,255,255,0.08);
    position: relative;
    z-index: 2;
  }

  .logo {
    font-family: 'DM Sans', sans-serif;
    font-weight: 700;
    font-size: 18px;
    color: var(--white);
    letter-spacing: -0.5px;
    display: flex;
    align-items: center;
    gap: 8px;
  }

  .logo-icon {
    width: 28px; height: 28px;
    background: var(--orange);
    border-radius: 6px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
  }

  .logo span { color: var(--orange); }

  .hero-tags {
    display: flex;
    gap: 12px;
  }

  .tag {
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    padding: 6px 14px;
    border: 1px solid rgba(255,255,255,0.15);
    border-radius: 100px;
    color: rgba(255,255,255,0.6);
  }

  .hero-body {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 80px 60px;
    position: relative;
    z-index: 2;
  }

  .hero-eyebrow {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--orange);
    margin-bottom: 28px;
    display: flex;
    align-items: center;
    gap: 12px;
  }

  .hero-eyebrow::before {
    content: '';
    width: 32px; height: 1px;
    background: var(--orange);
  }

  .hero-title {
    font-family: 'Playfair Display', serif;
    font-size: clamp(52px, 7vw, 96px);
    font-weight: 900;
    color: var(--white);
    line-height: 1.0;
    letter-spacing: -2px;
    margin-bottom: 40px;
    max-width: 900px;
  }

  .hero-title em {
    color: var(--orange);
    font-style: italic;
  }

  .hero-summary {
    font-size: 18px;
    line-height: 1.7;
    color: rgba(255,255,255,0.55);
    max-width: 580px;
    font-weight: 300;
  }

  .hero-meta {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0;
    border-top: 1px solid rgba(255,255,255,0.08);
    position: relative;
    z-index: 2;
  }

  .meta-item {
    padding: 32px 60px;
    border-right: 1px solid rgba(255,255,255,0.08);
  }

  .meta-item:last-child { border-right: none; }

  .meta-label {
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.35);
    margin-bottom: 8px;
  }

  .meta-value {
    font-size: 15px;
    font-weight: 500;
    color: var(--white);
  }

  /* ─── SECTION BASE ─── */
  section {
    padding: 2rem 3.80rem;
  }

  .section-label {
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--orange);
    margin-bottom: 20px;
  }

  .section-label::before {
    content: '';
    width: 24px; height: 1px;
    background: var(--orange);
  }

  .section-title {
    font-family: 'Playfair Display', serif;
    font-size: clamp(36px, 4.5vw, 60px);
    font-weight: 800;
    line-height: 1.1;
    letter-spacing: -1.5px;
    color: var(--ink);
    margin-bottom: 24px;
  }

  .section-desc {
    font-size: 17px;
    line-height: 1.75;
    color: var(--ink-50);
    max-width: 640px;
    font-weight: 300;
  }

  /* ─── EXECUTIVE SUMMARY ─── */
  .exec-summary {
    background: var(--white);
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0;
  }

  .exec-left {
    padding: 120px 80px 120px 60px;
    border-right: 1px solid var(--border);
  }

  .exec-right {
    padding: 120px 60px 120px 80px;
    display: flex;
    flex-direction: column;
    justify-content: center;
  }

  .exec-quote {
    font-family: 'Playfair Display', serif;
    font-size: 28px;
    font-weight: 700;
    font-style: italic;
    line-height: 1.5;
    color: var(--ink);
    border-left: 4px solid var(--orange);
    padding-left: 28px;
    margin-bottom: 40px;
  }

  .impact-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
  }

  .impact-card {
    background: var(--cream);
    border-radius: 16px;
    padding: 28px;
    border: 1px solid var(--border);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
  }

  .impact-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 12px 32px rgba(0,0,0,0.06);
  }

  .impact-number {
    font-family: 'Playfair Display', serif;
    font-size: 48px;
    font-weight: 900;
    color: var(--orange);
    line-height: 1;
    margin-bottom: 8px;
  }

  .impact-label {
    font-size: 13px;
    font-weight: 500;
    color: var(--ink-50);
    line-height: 1.4;
  }

  /* ─── PROBLEM / SOLUTION ─── */
  .problem-section {
    background: var(--cream-dark);
  }

  .ps-header {
    margin-bottom: 72px;
  }

  .ps-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 32px;
  }

  .ps-card {
    border-radius: 20px;
    padding: 48px;
    position: relative;
    overflow: hidden;
  }

  .ps-card.before {
    background: #FEF2F0;
    border: 1px solid rgba(197,55,42,0.15);
  }

  .ps-card.after {
    background: #F0FAF5;
    border: 1px solid rgba(26,138,74,0.15);
  }

  .ps-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    padding: 6px 14px;
    border-radius: 100px;
    margin-bottom: 32px;
  }

  .ps-card.before .ps-badge { background: rgba(197,55,42,0.12); color: var(--red); }
  .ps-card.after .ps-badge { background: rgba(26,138,74,0.12); color: var(--green); }

  .ps-card h3 {
    font-family: 'Playfair Display', serif;
    font-size: 26px;
    font-weight: 800;
    margin-bottom: 28px;
    color: var(--ink);
  }

  .ps-list {
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 14px;
  }

  .ps-list li {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    font-size: 15px;
    line-height: 1.5;
    color: var(--ink-80);
    font-weight: 400;
  }

  .ps-icon {
    width: 20px; height: 20px;
    border-radius: 50%;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 11px;
    margin-top: 2px;
  }

  .before .ps-icon { background: rgba(197,55,42,0.15); color: var(--red); }
  .after .ps-icon { background: rgba(26,138,74,0.15); color: var(--green); }

  /* ─── RESEARCH ─── */
  .research-section {
    background: var(--ink);
    color: var(--white);
  }

  .research-section .section-title { color: var(--white); }
  .research-section .section-desc { color: rgba(255,255,255,0.5); }

  .research-methods {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
    margin-top: 64px;
  }

  .method-card {
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 16px;
    padding: 32px 28px;
    transition: background 0.2s ease;
  }

  .method-card:hover {
    background: rgba(255,255,255,0.08);
  }

  .method-icon {
    width: 44px; height: 44px;
    background: rgba(232,73,15,0.15);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    margin-bottom: 20px;
    border: 1px solid rgba(232,73,15,0.2);
  }

  .method-card h4 {
    font-size: 16px;
    font-weight: 600;
    color: var(--white);
    margin-bottom: 10px;
  }

  .method-card p {
    font-size: 13px;
    line-height: 1.6;
    color: rgba(255,255,255,0.45);
    font-weight: 300;
  }

  /* ─── PERSONAS ─── */
  .personas-section {
    background: var(--white);
  }

  .personas-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 32px;
    margin-top: 64px;
  }

  .persona-card {
    border: 1px solid var(--border);
    border-radius: 24px;
    overflow: hidden;
    transition: box-shadow 0.2s ease;
  }

  .persona-card:hover {
    box-shadow: 0 16px 48px rgba(0,0,0,0.08);
  }

  .persona-header {
    padding: 36px 36px 28px;
    border-bottom: 1px solid var(--border);
    display: flex;
    gap: 20px;
    align-items: flex-start;
  }

  .persona-avatar {
    width: 64px; height: 64px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 26px;
    flex-shrink: 0;
  }

  .persona-card:nth-child(1) .persona-avatar { background: #FFF0EB; }
  .persona-card:nth-child(2) .persona-avatar { background: #EBF4FF; }

  .persona-name {
    font-family: 'Playfair Display', serif;
    font-size: 22px;
    font-weight: 800;
    color: var(--ink);
    margin-bottom: 4px;
  }

  .persona-role {
    font-size: 13px;
    font-weight: 500;
    color: var(--orange);
  }

  .persona-bio {
    font-size: 13px;
    line-height: 1.6;
    color: var(--ink-50);
    margin-top: 8px;
  }

  .persona-body {
    padding: 28px 36px 36px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 24px;
  }

  .persona-section-title {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--ink-50);
    margin-bottom: 12px;
  }

  .persona-items {
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 8px;
  }

  .persona-items li {
    font-size: 13px;
    line-height: 1.4;
    color: var(--ink-80);
    display: flex;
    gap: 8px;
    align-items: flex-start;
  }

  .persona-items li::before {
    content: '·';
    color: var(--orange);
    font-weight: 900;
    flex-shrink: 0;
  }

  /* ─── IA ─── */
  .ia-section {
    background: var(--cream);
  }

  .ia-tree {
    margin-top: 64px;
    background: var(--white);
    border: 1px solid var(--border);
    border-radius: 24px;
    padding: 56px;
  }

  .ia-root {
    display: flex;
    flex-direction: column;
    align-items: center;
  }

  .ia-node-root {
    background: var(--ink);
    color: var(--white);
    padding: 14px 36px;
    border-radius: 10px;
    font-weight: 600;
    font-size: 15px;
    letter-spacing: -0.3px;
    margin-bottom: 0;
  }

  .ia-connector-down {
    width: 2px;
    height: 40px;
    background: var(--border);
  }

  .ia-level {
    display: flex;
    gap: 0;
    width: 100%;
    justify-content: center;
    position: relative;
  }

  .ia-level::before {
    content: '';
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    height: 2px;
    background: var(--border);
    width: calc(100% - 120px);
  }

  .ia-branch {
    display: flex;
    flex-direction: column;
    align-items: center;
    flex: 1;
    padding: 0 12px;
  }

  .ia-branch-connector {
    width: 2px;
    height: 40px;
    background: var(--border);
  }

  .ia-node {
    padding: 12px 20px;
    border-radius: 10px;
    font-size: 13px;
    font-weight: 600;
    text-align: center;
    white-space: nowrap;
  }

  .ia-node.primary {
    background: var(--orange);
    color: var(--white);
    width: 100%;
    max-width: 160px;
  }

  .ia-sub-list {
    list-style: none;
    margin-top: 16px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    align-items: center;
  }

  .ia-sub-list li {
    background: var(--cream);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 7px 16px;
    font-size: 12px;
    color: var(--ink-80);
    width: 140px;
    text-align: center;
    font-weight: 400;
  }

  /* ─── DESIGN SYSTEM ─── */
  .design-system {
    background: var(--cream-dark);
  }

  .ds-grid {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 28px;
    margin-top: 64px;
  }

  .ds-card {
    background: var(--white);
    border: 1px solid var(--border);
    border-radius: 20px;
    padding: 36px;
  }

  .ds-card h4 {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--ink-50);
    margin-bottom: 24px;
  }

  .color-swatches {
    display: flex;
    flex-direction: column;
    gap: 12px;
  }

  .swatch {
    display: flex;
    align-items: center;
    gap: 14px;
  }

  .swatch-color {
    width: 40px; height: 40px;
    border-radius: 10px;
    flex-shrink: 0;
    border: 1px solid rgba(0,0,0,0.08);
  }

  .swatch-name {
    font-size: 13px;
    font-weight: 500;
    color: var(--ink);
  }

  .swatch-hex {
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    color: var(--ink-50);
  }

  .type-samples {
    display: flex;
    flex-direction: column;
    gap: 16px;
  }

  .type-sample-h1 {
    font-family: 'Playfair Display', serif;
    font-size: 32px;
    font-weight: 900;
    color: var(--ink);
    line-height: 1.1;
  }

  .type-sample-h2 {
    font-size: 18px;
    font-weight: 600;
    color: var(--ink);
  }

  .type-sample-body {
    font-size: 14px;
    color: var(--ink-50);
    line-height: 1.6;
    font-weight: 300;
  }

  .type-sample-mono {
    font-family: 'JetBrains Mono', monospace;
    font-size: 12px;
    color: var(--orange);
    background: var(--orange-pale);
    padding: 4px 8px;
    border-radius: 4px;
    display: inline-block;
  }

  .component-samples {
    display: flex;
    flex-direction: column;
    gap: 12px;
  }

  .c-btn-primary {
    background: var(--orange);
    color: var(--white);
    border: none;
    padding: 10px 20px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    display: inline-block;
    text-align: center;
  }

  .c-btn-secondary {
    background: transparent;
    color: var(--ink);
    border: 1.5px solid var(--border);
    padding: 10px 20px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    display: inline-block;
    text-align: center;
  }

  .c-status {
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: wrap;
  }

  .status-pill {
    padding: 4px 12px;
    border-radius: 100px;
    font-size: 11px;
    font-weight: 600;
  }

  .status-success { background: #E8F5EE; color: var(--green); }
  .status-fail { background: #FDF0EF; color: var(--red); }
  .status-pending { background: #EBF2FD; color: var(--blue); }
  .status-timeout { background: #FFF7E6; color: #B45309; }

  /* ─── SCREENS ─── */
  .screens-section {
    background: var(--ink);
    padding-bottom: 160px;
  }

  .screens-section .section-title { color: var(--white); }
  .screens-section .section-label { color: var(--orange); }
  .screens-section .section-desc { color: rgba(255,255,255,0.45); }

  .screens-showcase {
    margin-top: 72px;
    display: flex;
    flex-direction: column;
    gap: 80px;
  }

  .screen-feature {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 60px;
    align-items: center;
  }

  .screen-feature.reverse {
    direction: rtl;
  }

  .screen-feature.reverse > * {
    direction: ltr;
  }

  .screen-copy {}

  .screen-number {
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    color: rgba(255,255,255,0.25);
    font-weight: 500;
    letter-spacing: 0.1em;
    margin-bottom: 16px;
  }

  .screen-title {
    font-family: 'Playfair Display', serif;
    font-size: 32px;
    font-weight: 800;
    color: var(--white);
    margin-bottom: 16px;
    line-height: 1.2;
    letter-spacing: -0.8px;
  }

  .screen-desc {
    font-size: 15px;
    line-height: 1.75;
    color: rgba(255,255,255,0.45);
    font-weight: 300;
    margin-bottom: 28px;
  }

  .screen-highlights {
    display: flex;
    flex-direction: column;
    gap: 12px;
  }

  .sh-item {
    display: flex;
    gap: 12px;
    align-items: flex-start;
  }

  .sh-dot {
    width: 6px; height: 6px;
    background: var(--orange);
    border-radius: 50%;
    flex-shrink: 0;
    margin-top: 7px;
  }

  .sh-text {
    font-size: 14px;
    color: rgba(255,255,255,0.6);
    line-height: 1.5;
  }

  .screen-img-wrapper {
    border-radius: 16px;
    overflow: hidden;
    border: 1px solid rgba(255,255,255,0.08);
    box-shadow: 0 40px 80px rgba(0,0,0,0.5);
    position: relative;
  }

  .screen-img-wrapper img {
    width: 100%;
    height: auto;
    display: block;
  }

  .screen-img-wrapper::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.15), transparent);
  }

  /* ─── METRICS ─── */
  .metrics-section {
    background: var(--orange);
    padding: 100px 60px;
    text-align: center;
  }

  .metrics-section .section-label { color: rgba(255,255,255,0.6); justify-content: center; }
  .metrics-section .section-label::before { background: rgba(255,255,255,0.4); }
  .metrics-section .section-title { color: var(--white); text-align: center; }

  .metrics-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 2px;
    margin-top: 72px;
    background: rgba(255,255,255,0.15);
    border-radius: 20px;
    overflow: hidden;
  }

  .metric-block {
    background: rgba(255,255,255,0.08);
    padding: 56px 40px;
    transition: background 0.2s ease;
  }

  .metric-block:hover {
    background: rgba(255,255,255,0.14);
  }

  .metric-big {
    font-family: 'Playfair Display', serif;
    font-size: 80px;
    font-weight: 900;
    color: var(--white);
    line-height: 1;
    margin-bottom: 12px;
    letter-spacing: -3px;
  }

  .metric-desc {
    font-size: 15px;
    color: rgba(255,255,255,0.7);
    font-weight: 400;
    max-width: 220px;
    margin: 0 auto;
    line-height: 1.5;
  }

  /* ─── CLOSING ─── */
  .closing {
    background: var(--ink);
    padding: 120px 60px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 80px;
    align-items: center;
  }

  .closing-title {
    font-family: 'Playfair Display', serif;
    font-size: clamp(40px, 5vw, 64px);
    font-weight: 900;
    color: var(--white);
    line-height: 1.1;
    letter-spacing: -2px;
    margin-bottom: 28px;
  }

  .closing-title em { color: var(--orange); font-style: italic; }

  .closing-desc {
    font-size: 16px;
    line-height: 1.8;
    color: rgba(255,255,255,0.45);
    font-weight: 300;
  }

  .closing-tools {
    display: flex;
    flex-direction: column;
    gap: 16px;
  }

  .tool-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px 24px;
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 12px;
    transition: border-color 0.2s ease;
  }

  .tool-row:hover { border-color: rgba(232,73,15,0.4); }

  .tool-name {
    font-size: 14px;
    font-weight: 600;
    color: var(--white);
  }

  .tool-role {
    font-size: 12px;
    color: rgba(255,255,255,0.35);
  }

  .tool-tag {
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    padding: 4px 10px;
    background: rgba(232,73,15,0.15);
    color: var(--orange);
    border-radius: 6px;
  }

  /* ─── FOOTER ─── */
  footer {
    background: var(--ink);
    border-top: 1px solid rgba(255,255,255,0.06);
    padding: 32px 60px;
    display: flex;
    justify-content: space-between;
    align-items: center;
  }

  footer .logo { font-size: 16px; }

  .footer-copy {
    font-size: 12px;
    color: rgba(255,255,255,0.3);
  }

  /* ─── ANIMATIONS ─── */
  @keyframes fadeUp {
    from { opacity: 0; transform: translateY(24px); }
    to { opacity: 1; transform: translateY(0); }
  }

  .hero-eyebrow { animation: fadeUp 0.6s ease forwards; }
  .hero-title { animation: fadeUp 0.6s 0.1s ease both; }
  .hero-summary { animation: fadeUp 0.6s 0.2s ease both; }

  /* ─── DIVIDER ─── */
  .divider {
    height: 1px;
    background: var(--border);
    margin: 0 60px;
  }

  .divider-dark {
    height: 1px;
    background: rgba(255,255,255,0.07);
    margin: 0 60px;
  }

  /* responsive */
  @media (max-width: 900px) {
    section { padding: 80px 28px; }
    .hero-nav, .hero-body, .meta-item { padding-left: 28px; padding-right: 28px; }
    .hero-meta, .exec-summary, .ps-grid, .research-methods, .personas-grid, .ds-grid, .screen-feature, .metrics-grid, .closing { grid-template-columns: 1fr; }
    .screen-feature.reverse { direction: ltr; }
    .hero-tags { display: none; }
    .ia-level::before { width: 80%; }
  }

  /* ── PASSWORD MODAL ── */
  .password-modal {
    position: fixed;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(15, 13, 10, 0.8);
    backdrop-filter: blur(4px);
    z-index: 10000;
    opacity: 1;
    transition: opacity 0.3s ease;
  }
  .password-modal.hidden {
    opacity: 0;
    pointer-events: none;
  }
  .password-modal-content {
    background: linear-gradient(135deg, rgba(232, 73, 15, 0.1), rgba(255, 107, 53, 0.08));
    border: 1px solid rgba(232, 73, 15, 0.25);
    border-radius: 16px;
    padding: 60px 48px;
    max-width: 420px;
    width: 90%;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4), 0 0 1px rgba(232, 73, 15, 0.3);
    animation: modalSlideIn 0.5s cubic-bezier(0.16, 1, 0.3, 1);
  }
  @keyframes modalSlideIn {
    from {
      opacity: 0;
      transform: translateY(20px) scale(0.95);
    }
    to {
      opacity: 1;
      transform: translateY(0) scale(1);
    }
  }
  .password-modal-title {
    font-family: 'Playfair Display', serif;
    font-size: 2rem;
    font-weight: 700;
    color: var(--white);
    margin-bottom: 12px;
    text-align: center;
  }
  .password-modal-subtitle {
    font-size: 0.95rem;
    color: rgba(255, 255, 255, 0.7);
    text-align: center;
    margin-bottom: 36px;
    line-height: 1.6;
  }
  .password-form {
    display: flex;
    flex-direction: column;
    gap: 20px;
  }
  .password-input-group {
    position: relative;
  }
  .password-input-label {
    display: block;
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.75rem;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--orange);
    margin-bottom: 10px;
  }
  .password-input {
    width: 100%;
    padding: 12px 16px;
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(232, 73, 15, 0.3);
    border-radius: 8px;
    font-family: 'DM Sans', sans-serif;
    font-size: 1rem;
    color: var(--white);
    transition: border-color 0.3s, background 0.3s;
  }
  .password-input::placeholder {
    color: rgba(255, 255, 255, 0.5);
  }
  .password-input:focus {
    outline: none;
    border-color: var(--orange);
    background: rgba(255, 255, 255, 0.08);
  }
  .password-error {
    display: none;
    color: #ff6b6b;
    font-size: 0.85rem;
    margin-top: 8px;
    text-align: center;
    animation: shake 0.3s ease-in-out;
  }
  .password-error.show {
    display: block;
  }
  @keyframes shake {
    0%, 100% { transform: translateX(0); }
    25% { transform: translateX(-6px); }
    75% { transform: translateX(6px); }
  }
  .password-btn {
    padding: 12px 24px;
    background: linear-gradient(135deg, var(--orange), var(--orange-light));
    border: none;
    border-radius: 8px;
    font-family: 'DM Sans', sans-serif;
    font-size: 0.95rem;
    font-weight: 500;
    color: var(--white);
    cursor: pointer;
    transition: transform 0.2s, opacity 0.2s, box-shadow 0.3s;
    box-shadow: 0 4px 15px rgba(232, 73, 15, 0.3);
    letter-spacing: 0.05em;
  }
  .password-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(232, 73, 15, 0.4);
  }
  .password-btn:active {
    transform: translateY(0);
    opacity: 0.9;
  }
  .password-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
    transform: none;
  }
</style>
</head>
<body>

<!-- ═══════════════════════════════════════════ PASSWORD MODAL -->
<div id="passwordModal" class="password-modal">
  <div class="password-modal-content">
    <h2 class="password-modal-title">Access Protected</h2>
    <p class="password-modal-subtitle">This case study is password protected.<br>Please enter the password to continue.</p>
    <form class="password-form" id="passwordForm">
      <div class="password-input-group">
        <label class="password-input-label">Password</label>
        <input
          type="password"
          id="passwordInput"
          class="password-input"
          placeholder="Enter password"
          autocomplete="off"
        />
        <div class="password-error" id="passwordError">Incorrect password. Please try again.</div>
      </div>
      <button type="submit" class="password-btn">Unlock</button>
    </form>
  </div>
</div>

<!-- HERO -->
<section class="hero">
  <nav class="hero-nav">
    <div class="logo">
      <div class="logo-icon">✓</div>
      DATA<span>FLOW</span>
    </div>
    <div class="hero-tags">
      <span class="tag">UX Case Study</span>
      <span class="tag">Enterprise</span>
      <span class="tag">2025–2026</span>
    </div>
  </nav>

  <div class="hero-body">
    <p class="hero-eyebrow">Electronic Connectivity Dashboard</p>
    <h1 class="hero-title">Visibility into<br>every <em>API heartbeat.</em></h1>
    <p class="hero-summary">Designing a real-time enterprise monitoring platform that transformed how operations teams detect, diagnose, and resolve API integration failures across five client systems.</p>
  </div>

  <div class="hero-meta">
    <div class="meta-item">
      <p class="meta-label">Role</p>
      <p class="meta-value">Sr. Product Designer · UI/UX</p>
    </div>
    <div class="meta-item">
      <p class="meta-label">Timeline</p>
      <p class="meta-value">Oct 2025 – Feb 2026</p>
    </div>
    <div class="meta-item">
      <p class="meta-label">Type</p>
      <p class="meta-value">Enterprise Dashboard Application</p>
    </div>
    <div class="meta-item">
      <p class="meta-label">Stack</p>
      <p class="meta-value">Figma · React 19 · TypeScript · Tailwind</p>
    </div>
  </div>
</section>

<!-- EXECUTIVE SUMMARY -->
<section class="exec-summary" style="padding:0;">
  <div class="exec-left">
    <p class="section-label">Executive Summary</p>
    <h2 class="section-title">One screen.<br>Total clarity.</h2>
    <p class="section-desc">DataFlow is an enterprise-grade monitoring platform that centralizes visibility into all API transactions — inbound and outbound — across a growing ecosystem of client integrations. Before DataFlow, a failure could go undetected for hours. Now, it surfaces in seconds.</p>
    <br><br>
    <blockquote class="exec-quote">"The dashboard turns a fragmented, reactive operation into a proactive, data-driven one."</blockquote>
  </div>
  <div class="exec-right">
    <div class="impact-grid">
      <div class="impact-card">
        <div class="impact-number">75%</div>
        <div class="impact-label">Reduction in issue detection time</div>
      </div>
      <div class="impact-card">
        <div class="impact-number">60%</div>
        <div class="impact-label">Faster mean time to resolution</div>
      </div>
      <div class="impact-card">
        <div class="impact-number">90%</div>
        <div class="impact-label">Reduction in context switching</div>
      </div>
      <div class="impact-card">
        <div class="impact-number">93.2%</div>
        <div class="impact-label">Overall API success rate achieved</div>
      </div>
    </div>
  </div>
</section>

<!-- PROBLEM / SOLUTION -->
<section class="problem-section">
  <div class="ps-header">
    <p class="section-label">The Challenge</p>
    <h2 class="section-title">From chaos to clarity.</h2>
    <p class="section-desc">Operations teams managing multiple API integrations were flying blind — relying on manual log dives, tribal knowledge, and reactive firefighting to keep systems running.</p>
  </div>

  <div class="ps-grid">
    <div class="ps-card before">
      <span class="ps-badge">❌ Before</span>
      <h3>The Pain Points</h3>
      <ul class="ps-list">
        <li><span class="ps-icon">✕</span> No real-time visibility into API health or status</li>
        <li><span class="ps-icon">✕</span> Manual log file analysis — slow and error-prone</li>
        <li><span class="ps-icon">✕</span> Issues only discovered after clients complained</li>
        <li><span class="ps-icon">✕</span> Data scattered across 5–7 disconnected systems</li>
        <li><span class="ps-icon">✕</span> Delayed client notifications — damaged trust</li>
        <li><span class="ps-icon">✕</span> No trend analysis to predict or prevent failures</li>
      </ul>
    </div>
    <div class="ps-card after">
      <span class="ps-badge">✓ After</span>
      <h3>The Solution</h3>
      <ul class="ps-list">
        <li><span class="ps-icon">✓</span> Centralized real-time dashboard for all API traffic</li>
        <li><span class="ps-icon">✓</span> Instant transaction log search with rich metadata</li>
        <li><span class="ps-icon">✓</span> Proactive alerting surfaces issues before impact</li>
        <li><span class="ps-icon">✓</span> Single source of truth across all client integrations</li>
        <li><span class="ps-icon">✓</span> Automated monitoring with intelligent alerts</li>
        <li><span class="ps-icon">✓</span> Visual trend charts for strategic decision-making</li>
      </ul>
    </div>
  </div>
</section>

<!-- RESEARCH -->
<section class="research-section">
  <p class="section-label">Discovery & Research</p>
  <h2 class="section-title">Listening before designing.</h2>
  <p class="section-desc">We grounded every design decision in real operational context — running 12 stakeholder interviews, observing workflows firsthand, and benchmarking against industry-leading monitoring tools.</p>

  <div class="research-methods">
    <div class="method-card">
      <div class="method-icon">🎙️</div>
      <h4>Stakeholder Interviews</h4>
      <p>12 in-depth sessions with system administrators, operations managers, and support engineers to uncover real pain points.</p>
    </div>
    <div class="method-card">
      <div class="method-icon">🔍</div>
      <h4>Contextual Inquiry</h4>
      <p>Observed current monitoring workflows in their real environment — capturing where teams lost time and where errors hid.</p>
    </div>
    <div class="method-card">
      <div class="method-icon">📊</div>
      <h4>Competitive Analysis</h4>
      <p>Deep review of Datadog, New Relic, and AWS CloudWatch to extract patterns worth borrowing and gaps worth filling.</p>
    </div>
    <div class="method-card">
      <div class="method-icon">⚙️</div>
      <h4>Technical Collaboration</h4>
      <p>Partnered with the backend team to fully understand data structures, API schemas, and real-time pipeline constraints.</p>
    </div>
  </div>
</section>

<!-- PERSONAS -->
<section class="personas-section">
  <p class="section-label">User Personas</p>
  <h2 class="section-title">Designing for real people.</h2>
  <p class="section-desc">Two primary personas emerged from our research — each with distinct workflows, priorities, and definitions of success.</p>

  <div class="personas-grid">
    <!-- Persona 1 -->
    <div class="persona-card">
      <div class="persona-header">
        <div class="persona-avatar">👨‍💼</div>
        <div>
          <h3 class="persona-name">Jordan Taylor</h3>
          <p class="persona-role">System Administrator</p>
          <p class="persona-bio">10 yrs in infrastructure. Manages integrations for 3 client orgs. Hates being woken up by issues that should have been caught earlier.</p>
        </div>
      </div>
      <div class="persona-body">
        <div>
          <p class="persona-section-title">Goals</p>
          <ul class="persona-items">
            <li>Know immediately when something breaks</li>
            <li>Drill into root cause without switching tools</li>
            <li>Audit transaction history with one search</li>
            <li>Track retry behavior on failed requests</li>
          </ul>
        </div>
        <div>
          <p class="persona-section-title">Frustrations</p>
          <ul class="persona-items">
            <li>Scattered logs across multiple systems</li>
            <li>No visual summary — only raw data</li>
            <li>Zero proactive alerting</li>
            <li>Can't see inbound vs outbound separately</li>
          </ul>
        </div>
      </div>
    </div>

    <!-- Persona 2 -->
    <div class="persona-card">
      <div class="persona-header">
        <div class="persona-avatar">👩‍💻</div>
        <div>
          <h3 class="persona-name">Maya Patel</h3>
          <p class="persona-role">Operations Manager</p>
          <p class="persona-bio">Leads a team of 6. Responsible for SLA compliance across all integrations. Needs the big picture and the ability to dive deep when needed.</p>
        </div>
      </div>
      <div class="persona-body">
        <div>
          <p class="persona-section-title">Goals</p>
          <ul class="persona-items">
            <li>Track success rates and trends over time</li>
            <li>Compare performance across client IAs</li>
            <li>Spot emerging issues before SLA breach</li>
            <li>Export reports for leadership reviews</li>
          </ul>
        </div>
        <div>
          <p class="persona-section-title">Frustrations</p>
          <ul class="persona-items">
            <li>No aggregate view across all APIs</li>
            <li>Trend data requires manual compilation</li>
            <li>Can't filter by IA or time range easily</li>
            <li>No single system health indicator</li>
          </ul>
        </div>
      </div>
    </div>
  </div>
</section>

<!-- INFORMATION ARCHITECTURE -->
<section class="ia-section">
  <p class="section-label">Information Architecture</p>
  <h2 class="section-title">Structure that scales.</h2>
  <p class="section-desc">The navigation was designed around job tasks — not system architecture. Users find what they need by what they're trying to do, not by how the backend is organized.</p>

  <div class="ia-tree">
    <div class="ia-root">
      <div class="ia-node-root">DataFlow Platform</div>
      <div class="ia-connector-down"></div>
      <div class="ia-level">

        <div class="ia-branch">
          <div class="ia-branch-connector"></div>
          <div class="ia-node primary">Dashboard</div>
          <ul class="ia-sub-list">
            <li>KPI Overview</li>
            <li>Trend Charts</li>
            <li>Error Breakdown</li>
            <li>System Health</li>
            <li>Transaction Log</li>
          </ul>
        </div>

        <div class="ia-branch">
          <div class="ia-branch-connector"></div>
          <div class="ia-node primary">Inbound Requests</div>
          <ul class="ia-sub-list">
            <li>Card View</li>
            <li>Graph View</li>
            <li>Table View</li>
            <li>IA Filters</li>
            <li>Date Range</li>
          </ul>
        </div>

        <div class="ia-branch">
          <div class="ia-branch-connector"></div>
          <div class="ia-node primary">Outbound Requests</div>
          <ul class="ia-sub-list">
            <li>Card View</li>
            <li>Graph View</li>
            <li>Table View</li>
            <li>IA Filters</li>
            <li>Response Time</li>
          </ul>
        </div>

        <div class="ia-branch">
          <div class="ia-branch-connector"></div>
          <div class="ia-node primary">API Logs</div>
          <ul class="ia-sub-list">
            <li>Full Transaction Log</li>
            <li>Request Details</li>
            <li>Sub-API Status</li>
            <li>Search & Filter</li>
            <li>Export</li>
          </ul>
        </div>

        <div class="ia-branch">
          <div class="ia-branch-connector"></div>
          <div class="ia-node primary">User Management</div>
          <ul class="ia-sub-list">
            <li>User Directory</li>
            <li>Roles & Permissions</li>
            <li>IA Assignment</li>
            <li>Add / Suspend</li>
          </ul>
        </div>

      </div>
    </div>
  </div>
</section>

<!-- DESIGN SYSTEM -->
<section class="design-system">
  <p class="section-label">Design System & Visual Language</p>
  <h2 class="section-title">Coherent by design.</h2>
  <p class="section-desc">Every visual decision was intentional — from the typographic hierarchy that guides the eye, to the status color system that communicates health at a glance.</p>

  <div class="ds-grid">
    <div class="ds-card">
      <h4>Color Palette</h4>
      <div class="color-swatches">
        <div class="swatch">
          <div class="swatch-color" style="background:#E8490F;"></div>
          <div><div class="swatch-name">DataFlow Orange</div><div class="swatch-hex">#E8490F · Primary / Action</div></div>
        </div>
        <div class="swatch">
          <div class="swatch-color" style="background:#0F0D0A;"></div>
          <div><div class="swatch-name">Ink</div><div class="swatch-hex">#0F0D0A · Background / Text</div></div>
        </div>
        <div class="swatch">
          <div class="swatch-color" style="background:#1A8A4A;"></div>
          <div><div class="swatch-name">Success Green</div><div class="swatch-hex">#1A8A4A · Status Success</div></div>
        </div>
        <div class="swatch">
          <div class="swatch-color" style="background:#C5372A;"></div>
          <div><div class="swatch-name">Error Red</div><div class="swatch-hex">#C5372A · Status Failed</div></div>
        </div>
        <div class="swatch">
          <div class="swatch-color" style="background:#1B5EA8;"></div>
          <div><div class="swatch-name">Processing Blue</div><div class="swatch-hex">#1B5EA8 · Status In Progress</div></div>
        </div>
      </div>
    </div>

    <div class="ds-card">
      <h4>Typography</h4>
      <div class="type-samples">
        <div class="type-sample-h1">Dashboard</div>
        <div style="font-size:11px;color:var(--ink-50);letter-spacing:0.05em;">Playfair Display · 900 · Headings</div>
        <div class="type-sample-h2">Inbound Requests</div>
        <div style="font-size:11px;color:var(--ink-50);letter-spacing:0.05em;">DM Sans · 600 · Subheadings</div>
        <div class="type-sample-body">Real-time monitoring of API transactions across all integrations.</div>
        <div style="font-size:11px;color:var(--ink-50);letter-spacing:0.05em;">DM Sans · 300 · Body copy</div>
        <div class="type-sample-mono">TXN-NCSBN-001</div>
        <div style="font-size:11px;color:var(--ink-50);letter-spacing:0.05em;margin-top:4px;">JetBrains Mono · IDs & Code</div>
      </div>
    </div>

    <div class="ds-card">
      <h4>Components</h4>
      <div class="component-samples">
        <div class="c-btn-primary">Add New User</div>
        <div class="c-btn-secondary">Export Data</div>
        <div>
          <p style="font-size:11px;color:var(--ink-50);letter-spacing:0.08em;text-transform:uppercase;margin-bottom:10px;">Status Pills</p>
          <div class="c-status">
            <span class="status-pill status-success">● Success</span>
            <span class="status-pill status-fail">⚠ Failed</span>
            <span class="status-pill status-pending">⏱ Processing</span>
            <span class="status-pill status-timeout">⚠ Timeout</span>
          </div>
        </div>
        <div style="background:var(--cream);border-radius:10px;padding:14px;border:1px solid var(--border);">
          <div style="font-size:11px;color:var(--ink-50);margin-bottom:6px;">KPI Card</div>
          <div style="font-size:28px;font-weight:800;font-family:'Playfair Display',serif;">68,585</div>
          <div style="font-size:12px;color:var(--red);font-weight:600;">▼ -9.4%</div>
        </div>
      </div>
    </div>
  </div>
</section>

<!-- FINAL SCREENS SHOWCASE -->
<section class="screens-section">
  <p class="section-label" style="color:rgba(255,255,255,0.4);">Final Design · Key Screens</p>
  <h2 class="section-title" style="color:var(--white);">The product, in full.</h2>
  <p class="section-desc" style="color:rgba(255,255,255,0.4);">Five core screens — each purpose-built for a specific operational need, designed to feel intuitive from the first session.</p>

  <div class="screens-showcase">

    <div class="screen-feature">
      <div class="screen-copy">
        <p class="screen-number">01 / 05</p>
        <h3 class="screen-title">Login & Authentication</h3>
        <p class="screen-desc">The entry point establishes trust immediately. Clean, minimal, and brand-aligned — with both email/password and Google OAuth support to accommodate all user types.</p>
        <div class="screen-highlights">
          <div class="sh-item"><div class="sh-dot"></div><div class="sh-text">Illustrated onboarding carousel builds product context before login</div></div>
          <div class="sh-item"><div class="sh-dot"></div><div class="sh-text">Real-time field validation reduces friction and form errors</div></div>
          <div class="sh-item"><div class="sh-dot"></div><div class="sh-text">Password visibility toggle respects user autonomy</div></div>
        </div>
      </div>
      <div class="screen-img-wrapper">
        <img src="../../images/work-portfolio/Case-study/login.png" alt="Login Screen">
      </div>
    </div>

    <div class="screen-feature reverse">
      <div class="screen-copy">
        <p class="screen-number">02 / 05</p>
        <h3 class="screen-title">Executive Dashboard</h3>
        <p class="screen-desc">The command center. Four headline KPIs, two trend charts, an error breakdown, a live transaction log, and a system health panel — all visible without scrolling on standard displays.</p>
        <div class="screen-highlights">
          <div class="sh-item"><div class="sh-dot"></div><div class="sh-text">Period-over-period comparison baked into every metric</div></div>
          <div class="sh-item"><div class="sh-dot"></div><div class="sh-text">Top Failing APIs widget surfaces the most urgent issues first</div></div>
          <div class="sh-item"><div class="sh-dot"></div><div class="sh-text">System Health panel shows service uptime at a glance</div></div>
        </div>
      </div>
      <div class="screen-img-wrapper">
        <img src="../../images/work-portfolio/Case-study/dashboard.png" alt="Dashboard Screen">
      </div>
    </div>

    <div class="screen-feature">
      <div class="screen-copy">
        <p class="screen-number">03 / 05</p>
        <h3 class="screen-title">Inbound Request Monitoring</h3>
        <p class="screen-desc">A focused view for tracking all API traffic entering the system. Three view modes (Card, Graph, Table) let each user type work the way they think — visual, analytical, or tabular.</p>
        <div class="screen-highlights">
          <div class="sh-item"><div class="sh-dot"></div><div class="sh-text">68,585 inbound requests tracked in the Jan–Feb 2026 period</div></div>
          <div class="sh-item"><div class="sh-dot"></div><div class="sh-text">IA-level filtering isolates traffic per client organization</div></div>
          <div class="sh-item"><div class="sh-dot"></div><div class="sh-text">Flexible date range picker for historical comparison</div></div>
        </div>
      </div>
      <div class="screen-img-wrapper">
        <img src="../../images/work-portfolio/Case-study/inbound-screen.png" alt="Inbound Requests Screen">
      </div>
    </div>

    <div class="screen-feature reverse">
      <div class="screen-copy">
        <p class="screen-number">04 / 05</p>
        <h3 class="screen-title">Outbound Request Monitoring</h3>
        <p class="screen-desc">Mirror of the inbound experience — but focused on what we're sending out. Tracks all system-initiated requests to external client APIs with the same richness of filtering and view options.</p>
        <div class="screen-highlights">
          <div class="sh-item"><div class="sh-dot"></div><div class="sh-text">49,060 outbound requests with +15.9% growth period-over-period</div></div>
          <div class="sh-item"><div class="sh-dot"></div><div class="sh-text">Same three-mode view toggle for consistency</div></div>
          <div class="sh-item"><div class="sh-dot"></div><div class="sh-text">Avg response time surfaced as primary performance indicator</div></div>
        </div>
      </div>
      <div class="screen-img-wrapper">
        <img src="../../images/work-portfolio/Case-study/outbound screen.png" alt="Outbound Requests Screen">
      </div>
    </div>

    <div class="screen-feature">
      <div class="screen-copy">
        <p class="screen-number">05a / 05</p>
        <h3 class="screen-title">API Transaction Logs</h3>
        <p class="screen-desc">The deepest layer — a paginated, searchable, filterable log of every API transaction. Shows direction, timestamps, response codes, retries, and sub-API breakdowns for surgical troubleshooting.</p>
        <div class="screen-highlights">
          <div class="sh-item"><div class="sh-dot"></div><div class="sh-text">Search by Request ID, endpoint, or API name instantly</div></div>
          <div class="sh-item"><div class="sh-dot"></div><div class="sh-text">Expandable rows reveal sub-API chain and metadata</div></div>
          <div class="sh-item"><div class="sh-dot"></div><div class="sh-text">Retry count badges flag persistent failures immediately</div></div>
        </div>
      </div>
      <div class="screen-img-wrapper">
        <img src="../work-portfolio/Case-study/api-logs.png" alt="API Logs Screen">
      </div>
    </div>

    <div class="screen-feature reverse">
      <div class="screen-copy">
        <p class="screen-number">05b / 05</p>
        <h3 class="screen-title">User Management</h3>
        <p class="screen-desc">A full-featured admin panel for managing access across all integrated organizations. Supports role-based permissions across Admin, Manager, Operator, and Viewer tiers.</p>
        <div class="screen-highlights">
          <div class="sh-item"><div class="sh-dot"></div><div class="sh-text">Organization-level IA assignment with color-coded badges</div></div>
          <div class="sh-item"><div class="sh-dot"></div><div class="sh-text">Last login timestamps help admins spot dormant accounts</div></div>
          <div class="sh-item"><div class="sh-dot"></div><div class="sh-text">Status filtering separates active from suspended users</div></div>
        </div>
      </div>
      <div class="screen-img-wrapper">
        <img src="../work-portfolio/Case-study/user-management.png" alt="User Management Screen">
      </div>
    </div>

  </div>
</section>

<!-- METRICS -->
<section class="metrics-section">
  <p class="section-label">Projected Impact</p>
  <h2 class="section-title">Numbers that matter.</h2>
  <div class="metrics-grid">
    <div class="metric-block">
      <div class="metric-big">75%</div>
      <p class="metric-desc">Reduction in issue detection time — from hours to minutes</p>
    </div>
    <div class="metric-block">
      <div class="metric-big">60%</div>
      <p class="metric-desc">Faster troubleshooting through centralized, searchable logs</p>
    </div>
    <div class="metric-block">
      <div class="metric-big">90%</div>
      <p class="metric-desc">Less context switching — everything lives in one platform</p>
    </div>
  </div>
</section>

<!-- CLOSING -->
<section class="closing">
  <div>
    <h2 class="closing-title">Powerful <em>and</em> intuitive. Rare by design.</h2>
    <p class="closing-desc">DataFlow achieves the balance that enterprise software rarely gets right: a platform complex enough to handle critical infrastructure monitoring, yet simple enough that a new team member can orient themselves in minutes. The result is a system that earns trust — from the first login.</p>
  </div>
  <div class="closing-tools">
    <p style="font-size:11px;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;color:rgba(255,255,255,0.3);margin-bottom:8px;">Tools & Technologies</p>
    <div class="tool-row">
      <div><div class="tool-name">Figma</div><div class="tool-role">Design · Prototyping · Handoff</div></div>
      <span class="tool-tag">Design</span>
    </div>
    <div class="tool-row">
      <div><div class="tool-name">React 19 + TypeScript</div><div class="tool-role">Component architecture · Type safety</div></div>
      <span class="tool-tag">Frontend</span>
    </div>
    <div class="tool-row">
      <div><div class="tool-name">Tailwind CSS</div><div class="tool-role">Utility-first styling · Rapid iteration</div></div>
      <span class="tool-tag">Styling</span>
    </div>
    <div class="tool-row">
      <div><div class="tool-name">Recharts</div><div class="tool-role">Data visualization · Trend charts</div></div>
      <span class="tool-tag">Charts</span>
    </div>
  </div>
</section>

<!-- FOOTER -->
<footer>
  <div class="logo">
    <div class="logo-icon">✓</div>
    DATA<span>FLOW</span>
  </div>
  <p class="footer-copy">UX Case Study · Electronic Connectivity Dashboard · Sr. Product Designer · 2025–2026</p>
</footer>

<script>
  const CORRECT_PASSWORD = 'Krishna@1947';
  const passwordModal = document.getElementById('passwordModal');
  const passwordForm = document.getElementById('passwordForm');
  const passwordInput = document.getElementById('passwordInput');
  const passwordError = document.getElementById('passwordError');

  passwordForm.addEventListener('submit', (e) => {
    e.preventDefault();
    const enteredPassword = passwordInput.value;

    if (enteredPassword === CORRECT_PASSWORD) {
      passwordModal.classList.add('hidden');
      setTimeout(() => {
        passwordModal.style.display = 'none';
      }, 300);
      passwordInput.value = '';
      passwordError.classList.remove('show');
    } else {
      passwordError.classList.add('show');
      passwordInput.value = '';
      passwordInput.focus();
      setTimeout(() => {
        passwordError.classList.remove('show');
      }, 3000);
    }
  });

  passwordInput.addEventListener('keydown', (e) => {
    if (e.key === 'Enter') {
      passwordForm.dispatchEvent(new Event('submit'));
    }
  });
</script>

</body>
</html>

LittleDemon - FACEBOOK
[ KELUAR ]