/* ==================== CSS Variables ==================== */ :root { --primary-color: #2563eb; --secondary-color: #1e40af; --success-color: #10b981; --warning-color: #f59e0b; --danger-color: #ef4444; --text-color: #1f2937; --text-light: #6b7280; --bg-color: #ffffff; --bg-light: #f9fafb; --bg-dark: #f3f4f6; --border-color: #e5e7eb; --code-bg: #f3f4f6; --shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1); --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1); } /* ==================== Global Styles ==================== */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; line-height: 1.6; color: var(--text-color); background-color: var(--bg-light); } /* ==================== Container ==================== */ .container { max-width: 1200px; margin: 0 auto; padding: 20px; } /* ==================== Header ==================== */ .header { text-align: center; padding: 40px 20px; background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); color: white; border-radius: 8px; margin-bottom: 30px; box-shadow: var(--shadow-lg); } .header h1 { font-size: 2.5rem; margin-bottom: 10px; text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); font-weight: 700; } .subtitle { font-size: 1.1rem; opacity: 0.95; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); } /* ==================== Tabs Navigation ==================== */ .tabs { display: flex; gap: 5px; margin-bottom: 20px; flex-wrap: wrap; } .tab-button { flex: 1; min-width: 120px; padding: 12px 20px; background-color: var(--bg-color); border: 2px solid var(--border-color); border-radius: 8px 8px 0 0; cursor: pointer; font-size: 1rem; font-weight: 500; color: var(--text-color); transition: all 0.3s ease; } .tab-button:hover { background-color: var(--bg-dark); border-color: var(--primary-color); } .tab-button.active { background-color: var(--primary-color); color: white; border-color: var(--primary-color); } /* ==================== Tab Content ==================== */ .content { background-color: var(--bg-color); border-radius: 8px; padding: 40px; box-shadow: var(--shadow); min-height: 500px; } .tab-content { display: none; } .tab-content.active { display: block; animation: fadeIn 0.3s ease; } @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } /* ==================== Typography ==================== */ h1 { font-size: 2rem; color: var(--primary-color); margin-bottom: 20px; } h2 { font-size: 1.75rem; color: var(--primary-color); margin-bottom: 20px; padding-bottom: 10px; border-bottom: 3px solid var(--primary-color); } h3 { font-size: 1.5rem; color: var(--secondary-color); margin-top: 30px; margin-bottom: 15px; } h4 { font-size: 1.2rem; color: var(--text-color); margin-top: 20px; margin-bottom: 10px; } p { margin-bottom: 15px; line-height: 1.8; } ul, ol { margin-left: 30px; margin-bottom: 15px; } li { margin-bottom: 8px; } section { margin-bottom: 40px; } /* ==================== Code Blocks ==================== */ code { background-color: var(--code-bg); padding: 2px 6px; border-radius: 4px; font-family: "Monaco", "Courier New", monospace; font-size: 0.9em; color: var(--danger-color); } pre { background-color: var(--code-bg); padding: 15px; border-radius: 8px; overflow-x: auto; margin-bottom: 20px; border-left: 4px solid var(--primary-color); } pre code { background-color: transparent; padding: 0; color: var(--text-color); } /* ==================== Tables ==================== */ table { width: 100%; border-collapse: collapse; margin-bottom: 20px; box-shadow: var(--shadow); } thead { background-color: var(--primary-color); color: white; } th, td { padding: 12px; text-align: left; border-bottom: 1px solid var(--border-color); } tbody tr:hover { background-color: var(--bg-light); } /* ==================== Cards ==================== */ .card { background-color: var(--bg-light); border-radius: 8px; padding: 20px; margin-bottom: 20px; box-shadow: var(--shadow); border-left: 4px solid var(--primary-color); } .card h4 { margin-top: 0; color: var(--primary-color); } /* ==================== Badges ==================== */ .badge { display: inline-block; padding: 4px 10px; border-radius: 12px; font-size: 0.85rem; font-weight: 600; margin-right: 5px; } .badge-success { background-color: var(--success-color); color: white; } .badge-warning { background-color: var(--warning-color); color: white; } .badge-danger { background-color: var(--danger-color); color: white; } .badge-primary { background-color: var(--primary-color); color: white; } /* ==================== Overview Tab Components ==================== */ /* Role-based Navigation Cards */ .role-navigation { margin: 40px 0; } .role-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; margin-top: 20px; } .role-card { padding: 20px; background-color: var(--bg-color); border: 2px solid var(--border-color); border-radius: 8px; cursor: pointer; transition: all 0.3s ease; box-shadow: var(--shadow); } .role-card:hover { border-color: var(--primary-color); box-shadow: var(--shadow-lg); transform: translateY(-2px); } .role-card h3 { font-size: 1.1rem; margin-top: 0; margin-bottom: 10px; color: var(--text-color); } .role-card p { font-size: 0.9rem; color: var(--text-light); margin: 0; } /* Tech Stack Badges */ .tech-stack-section { margin: 40px 0; } .tech-badges { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 15px; } .tech-badge { padding: 8px 16px; background-color: var(--bg-light); border: 1px solid var(--border-color); border-radius: 6px; font-size: 0.9rem; font-weight: 500; color: var(--text-color); } /* Quick Stats */ .quick-stats { margin: 40px 0; } .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 20px; margin-top: 20px; } .stat-card { padding: 20px; background-color: var(--bg-light); border-radius: 8px; text-align: center; box-shadow: var(--shadow); } .stat-card h3 { font-size: 2rem; color: var(--primary-color); margin: 0 0 5px 0; } .stat-card p { font-size: 0.9rem; color: var(--text-light); margin: 0; } /* Quick Links */ /* ==================== Overview Tab - New Components ==================== */ /* Stakeholders Section */ .stakeholders-section { margin: 40px 0; } .stakeholders-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 20px; margin-top: 20px; } .stakeholder-card { padding: 20px; background-color: var(--bg-light); border-radius: 8px; text-align: center; box-shadow: var(--shadow); border-top: 4px solid var(--primary-color); } .stakeholder-card h3 { font-size: 1rem; color: var(--text-color); margin: 0 0 8px 0; } .stakeholder-card p { font-size: 0.9rem; margin: 3px 0; } .stakeholder-card .role { color: var(--text-light); font-size: 0.85rem; } /* Navigation Guide */ .navigation-guide { margin: 40px 0; } .guide-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 20px; margin-top: 20px; } .guide-card { padding: 20px; background-color: var(--bg-light); border: 2px solid var(--border-color); border-radius: 8px; transition: all 0.3s ease; } .guide-card:hover { border-color: var(--primary-color); box-shadow: var(--shadow-lg); transform: translateY(-2px); } .guide-card h3 { font-size: 1.1rem; color: var(--primary-color); margin: 0 0 10px 0; } .guide-card p { font-size: 0.9rem; color: var(--text-color); margin: 8px 0; } .guide-card .audience { font-size: 0.85rem; color: var(--text-light); font-style: italic; margin-top: 12px; } /* ==================== Roadmap Tab Components ==================== */ /* Roadmap Intro */ .roadmap-intro { background-color: var(--bg-light); padding: 20px; border-radius: 8px; border-left: 4px solid var(--primary-color); margin-bottom: 30px; font-size: 1rem; line-height: 1.6; } /* Kanban Board - 5 columns layout */ /* ==================== Epics List (Roadmap) ==================== */ .epics-list { display: flex; flex-direction: column; gap: 24px; margin: 30px 0; } .epic-item { background-color: var(--bg-color); border: 1px solid var(--border-color); border-radius: 8px; padding: 24px; box-shadow: var(--shadow); transition: box-shadow 0.3s ease; } .epic-item:hover { box-shadow: var(--shadow-lg); } .epic-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; } .epic-header h3 { margin: 0; font-size: 1.4rem; color: var(--text-color); } .epic-description { color: var(--text-light); margin-bottom: 16px; font-size: 1rem; } .epic-details { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 16px; padding: 16px; background-color: var(--bg-light); border-radius: 6px; } .epic-scope h4 { font-size: 0.9rem; text-transform: uppercase; color: var(--text-light); margin-bottom: 8px; font-weight: 600; } .epic-scope ul { margin: 0; padding-left: 20px; } .epic-scope li { font-size: 0.9rem; margin-bottom: 4px; } .epic-meta { border-top: 1px solid var(--border-color); padding-top: 12px; margin-top: 12px; } .epic-meta p { margin: 4px 0; font-size: 0.9rem; color: var(--text-light); } /* Epic Status Badges */ .epic-status { padding: 6px 12px; border-radius: 12px; font-size: 0.85rem; font-weight: 600; text-transform: uppercase; } .status-done { background-color: #d1fae5; color: #065f46; } .status-progress { background-color: #dbeafe; color: #1e40af; } .status-todo { background-color: #f3f4f6; color: #4b5563; } .status-backlog { background-color: #fef3c7; color: #92400e; } /* Out of Scope Items */ .out-of-scope-items { margin: 40px 0; } .out-of-scope-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; margin-top: 20px; } .out-of-scope-card { background-color: #fef2f2; border: 2px solid #fca5a5; border-radius: 8px; padding: 16px; } .out-of-scope-card h4 { color: #dc2626; margin: 0 0 8px 0; } .scope-reason { font-size: 0.85rem; color: var(--text-light); margin-top: 8px; font-style: italic; } /* Roadmap Legend */ .roadmap-legend { margin-top: 32px; padding: 16px; background-color: var(--bg-light); border-radius: 8px; } .status-badges { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; font-size: 0.9rem; margin-top: 12px; } .progress-fill { background: linear-gradient(90deg, var(--primary-color), var(--secondary-color)); height: 100%; border-radius: 4px; transition: width 0.5s ease; } /* Roadmap Legend */ .roadmap-legend { margin: 40px 0; background-color: var(--bg-light); padding: 20px; border-radius: 8px; border: 1px solid var(--border-color); } .roadmap-legend h3 { margin-top: 0; color: var(--primary-color); } .roadmap-legend ul { margin-left: 20px; } .roadmap-legend li { margin-bottom: 10px; } /* ==================== Requirements Tab Components ==================== */ /* Priority Badges */ .priority-must { background-color: #fee2e2; color: #991b1b; padding: 4px 8px; border-radius: 4px; font-size: 0.75rem; font-weight: 700; text-transform: uppercase; } /* ADR Accordion */ .adr-section { margin: 40px 0; } .adr-group { margin: 30px 0; } .adr-group h3 { margin-top: 40px; margin-bottom: 20px; } details.adr-item { margin-bottom: 15px; padding: 15px; background-color: var(--bg-light); border: 1px solid var(--border-color); border-radius: 8px; } details.adr-item summary { cursor: pointer; font-weight: 600; color: var(--primary-color); font-size: 1.1rem; } details.adr-item summary:hover { color: var(--secondary-color); } details.adr-item[open] summary { margin-bottom: 15px; padding-bottom: 15px; border-bottom: 2px solid var(--border-color); } /* Collapsible Sections */ details { margin-bottom: 15px; } summary { cursor: pointer; font-weight: 600; padding: 10px; background-color: var(--bg-light); border-radius: 4px; } summary:hover { background-color: var(--bg-dark); } /* ==================== Mermaid Diagrams ==================== */ .mermaid { background-color: white; padding: 20px; border-radius: 8px; margin: 20px 0; text-align: center; border: 1px solid var(--border-color); } /* ==================== Blockquotes ==================== */ blockquote { margin: 20px 0; padding: 15px 20px; border-left: 4px solid var(--primary-color); background-color: var(--bg-light); font-style: italic; color: var(--text-light); } /* ==================== Footer ==================== */ .footer { text-align: center; padding: 20px; margin-top: 40px; color: var(--text-light); font-size: 0.9rem; border-top: 2px solid var(--border-color); } /* ==================== Responsive Design ==================== */ @media (max-width: 768px) { .header h1 { font-size: 1.8rem; } .tabs { flex-direction: column; } .tab-button { width: 100%; } .content { padding: 20px; } .epic-details { grid-template-columns: 1fr; } .out-of-scope-grid { grid-template-columns: 1fr; } .role-cards { grid-template-columns: 1fr; } .stats-grid { grid-template-columns: 1fr; } table { font-size: 0.9rem; } th, td { padding: 8px; } }