:root { font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; line-height: 1.5; font-weight: 400; color: #e7ecf5; background: radial-gradient(circle at top, rgba(122, 162, 247, 0.18), transparent 28%), linear-gradient(180deg, #0b1020 0%, #0f172a 100%); font-synthesis: none; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } * { box-sizing: border-box; } body { margin: 0; min-width: 320px; min-height: 100vh; } button, input, textarea, select { font: inherit; } button { cursor: pointer; } #root { min-height: 100vh; } .app-shell { width: min(1320px, calc(100% - 2rem)); margin: 0 auto; padding: 2rem 0 3rem; } .hero-card, .card { background: rgba(15, 23, 42, 0.72); border: 1px solid rgba(148, 163, 184, 0.16); box-shadow: 0 22px 60px rgba(2, 6, 23, 0.25); backdrop-filter: blur(16px); } body::before { content: ''; position: fixed; inset: 0; pointer-events: none; background: radial-gradient(circle at 15% 20%, rgba(96, 165, 250, 0.14), transparent 18%), radial-gradient(circle at 85% 12%, rgba(168, 85, 247, 0.12), transparent 20%), radial-gradient(circle at 50% 80%, rgba(45, 212, 191, 0.08), transparent 24%); opacity: 0.9; } .hero-card { display: flex; justify-content: space-between; gap: 1.5rem; padding: 1.6rem; border-radius: 28px; margin-bottom: 1rem; } .hero-card h1, .section-heading h2, .section-heading h3 { margin: 0; } .eyebrow { margin: 0 0 0.35rem; font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.14em; color: #9fb5ff; } .hero-copy { margin: 0.6rem 0; max-width: 52rem; color: #c9d4ea; } .hero-goal { margin: 0; color: #dbe7ff; } .hero-stats { display: grid; grid-template-columns: repeat(3, minmax(90px, 1fr)); gap: 0.75rem; min-width: 280px; } .hero-stats div, .quick-actions, .status-strip, .status-bar, .tab { border-radius: 18px; } .hero-stats div { display: flex; flex-direction: column; justify-content: center; align-items: flex-start; padding: 1rem; background: rgba(30, 41, 59, 0.72); } .hero-stats span, .meta-row, small, .status-strip, .status-bar { color: #b7c4db; } .hero-stats strong { font-size: 1.8rem; margin-top: 0.25rem; } .project-card, .quick-actions, .focus-card, .status-strip, .tab-bar, .status-bar, .view-stack, .editor-grid, .board-grid { margin-top: 1rem; } .card { border-radius: 24px; padding: 1.25rem; } .section-heading { display: flex; justify-content: space-between; gap: 1rem; align-items: flex-start; margin-bottom: 1rem; } .section-heading p { margin: 0.35rem 0 0; color: #9fb0c9; } .section-heading.compact { margin-bottom: 0.8rem; } .project-grid, .form-grid { display: grid; gap: 0.9rem; } .project-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .full-span { grid-column: 1 / -1; } label { display: flex; flex-direction: column; gap: 0.35rem; color: #d9e2f4; font-size: 0.95rem; } input, textarea, select { width: 100%; border: 1px solid rgba(148, 163, 184, 0.22); background: rgba(15, 23, 42, 0.9); color: #f8fbff; border-radius: 14px; padding: 0.8rem 0.9rem; } textarea { resize: vertical; } .tab-bar { display: flex; flex-wrap: wrap; gap: 0.75rem; } .tab { border: 1px solid rgba(148, 163, 184, 0.18); background: rgba(15, 23, 42, 0.66); color: #dbe7ff; padding: 0.8rem 1rem; } .tab.active { background: linear-gradient(135deg, rgba(96, 165, 250, 0.35), rgba(129, 140, 248, 0.3)); border-color: rgba(129, 140, 248, 0.6); } .quick-actions { display: flex; flex-wrap: wrap; gap: 0.75rem; padding: 0.9rem; } .focus-card { position: relative; overflow: hidden; } .focus-card::after { content: ''; position: absolute; inset: 0; background: linear-gradient(135deg, rgba(96, 165, 250, 0.08), rgba(45, 212, 191, 0.02) 48%, transparent 75%); pointer-events: none; } .focus-grid, .focus-badges, .compact-stack { position: relative; z-index: 1; } .focus-grid { display: grid; grid-template-columns: 1.2fr 1fr; gap: 1rem; } .focus-panel { border-radius: 20px; border: 1px solid rgba(148, 163, 184, 0.14); background: rgba(15, 23, 42, 0.54); padding: 1rem; } .handoff-sheet { max-width: 1080px; } .handoff-preview-grid { align-items: start; } .handoff-preview-editor { display: grid; gap: 0.55rem; } .handoff-preview-editor span { font-size: 0.85rem; color: #9fb9d6; } .handoff-preview-editor textarea { min-height: 22rem; font-family: 'IBM Plex Mono', 'SFMono-Regular', ui-monospace, monospace; font-size: 0.85rem; line-height: 1.45; } .focus-panel h4 { margin: 0 0 0.65rem; } .focus-panel h4 + p, .focus-panel ul, .focus-panel p { margin-top: 0; } .focus-panel ul { padding-left: 1.1rem; color: #dbe7ff; } .focus-badges { display: flex; flex-wrap: wrap; gap: 0.5rem; } .compact-stack { gap: 0.6rem; } .button-row, .button-inline-row, .button-stack, .filter-row { display: flex; gap: 0.75rem; flex-wrap: wrap; } button, .import-label { border: 0; border-radius: 10px; background: linear-gradient(135deg, #60a5fa, #818cf8); color: white; padding: 0.8rem 1rem; font-weight: 600; letter-spacing: 0.01em; box-shadow: 0 10px 24px rgba(37, 99, 235, 0.2); transition: transform 120ms ease, opacity 120ms ease, box-shadow 120ms ease, background 120ms ease; } button:hover, .import-label:hover { transform: translateY(-1px); box-shadow: 0 14px 28px rgba(37, 99, 235, 0.24); } button.primary { background: linear-gradient(135deg, #67e8f9, #818cf8); color: #06111c; } button.ghost, .import-label { background: rgba(18, 25, 40, 0.88); border: 1px solid rgba(148, 163, 184, 0.18); color: #dbe7ff; box-shadow: none; } button.ghost:hover, .import-label:hover { box-shadow: 0 10px 24px rgba(15, 23, 42, 0.22); } button.danger { background: linear-gradient(135deg, #f97316, #ef4444); color: white; } button.small { padding: 0.45rem 0.75rem; } button:disabled, .import-label:disabled { opacity: 0.65; cursor: wait; transform: none; } .import-label { display: inline-flex; align-items: center; justify-content: center; } .import-label input { display: none; } .board-grid, .editor-grid { display: grid; gap: 1rem; } .board-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } .editor-grid { grid-template-columns: minmax(320px, 420px) minmax(0, 1fr); } .column { min-height: 360px; } .column-header, .item-card-header, .meta-row, .feature-signal-row, .status-strip, .status-bar, .filters-heading { display: flex; justify-content: space-between; gap: 0.75rem; align-items: center; } .column-header p, .item-card p, .item-card small, .mini-pulse p, pre { margin: 0; } .column-body, .list-stack, .markdown-list, .status-strip-row { display: flex; flex-direction: column; gap: 0.75rem; } .item-card, .markdown-card, .empty-state, .mini-pulse { width: 100%; text-align: left; border: 1px solid rgba(148, 163, 184, 0.14); border-radius: 18px; background: rgba(30, 41, 59, 0.58); color: inherit; padding: 1rem; } .item-card p, .mini-pulse p, .empty-state { color: #c9d4ea; } .item-card.feature-card, .item-card.parking-card, .item-card.pulse-card { display: flex; flex-direction: column; gap: 0.65rem; } .tap-hint { margin: 0.45rem 0 0; color: #8fb3cf; font-size: 0.9rem; } .tap-chip { align-self: flex-start; display: inline-flex; align-items: center; gap: 0.45rem; margin-top: 0.15rem; border-radius: 999px; padding: 0.22rem 0.65rem; background: rgba(96, 165, 250, 0.1); color: #93c5fd; font-size: 0.75rem; letter-spacing: 0.02em; } .tap-chip input { accent-color: #818cf8; } .feature-signal-row { font-size: 0.82rem; color: #9fb4d9; } .feature-signal { display: inline-flex; align-items: center; justify-content: center; border-radius: 999px; padding: 0.2rem 0.55rem; background: rgba(96, 165, 250, 0.12); color: #bfdbfe; } .feature-signal.quiet { background: rgba(148, 163, 184, 0.1); color: #cbd5e1; } .item-card select { min-width: 120px; padding: 0.5rem 0.7rem; } .pill { display: inline-flex; align-items: center; justify-content: center; border-radius: 999px; padding: 0.2rem 0.55rem; font-size: 0.78rem; text-transform: capitalize; background: rgba(96, 165, 250, 0.18); color: #bfdbfe; } .pill.must { background: rgba(96, 165, 250, 0.18); } .pill.should { background: rgba(52, 211, 153, 0.16); color: #bbf7d0; } .pill.could { background: rgba(250, 204, 21, 0.16); color: #fde68a; } .pill.later, .pill.risk-medium { background: rgba(244, 114, 182, 0.16); color: #fbcfe8; } .pill.risk-low { background: rgba(52, 211, 153, 0.16); color: #bbf7d0; } .pill.risk-high { background: rgba(251, 146, 60, 0.16); color: #fed7aa; } .pill.risk-dangerous { background: rgba(248, 113, 113, 0.18); color: #fecaca; } pre { white-space: pre-wrap; word-break: break-word; max-height: 260px; overflow: auto; font-size: 0.88rem; color: #dbe7ff; } .status-strip { padding: 0.95rem 1.1rem; background: rgba(15, 23, 42, 0.72); border: 1px solid rgba(148, 163, 184, 0.14); } .status-strip-row { flex-direction: row; align-items: center; justify-content: space-between; flex-wrap: wrap; } .status-bar { padding: 0.95rem 1.1rem; background: rgba(15, 23, 42, 0.78); border: 1px solid rgba(148, 163, 184, 0.14); } .pill.status-healthy { background: rgba(52, 211, 153, 0.16); color: #bbf7d0; } .pill.status-connecting { background: rgba(96, 165, 250, 0.18); color: #bfdbfe; } .pill.status-degraded { background: rgba(248, 113, 113, 0.18); color: #fecaca; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } @media (max-width: 1080px) { .board-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .focus-grid, .editor-grid, .project-grid { grid-template-columns: 1fr; } } @media (max-width: 720px) { .app-shell { width: min(100% - 1rem, 100%); padding: 1rem 0 2rem; } .hero-card, .status-strip, .status-bar { flex-direction: column; } .hero-stats, .board-grid { grid-template-columns: 1fr; } .quick-actions, .tab-bar, .button-row, .button-inline-row, .filter-row, .status-strip, .status-strip-row, .status-bar, .feature-signal-row { flex-direction: column; align-items: stretch; } .filters-heading { flex-direction: column; align-items: stretch; } } .functionality-summary, .functionality-signal { display: flex; align-items: center; gap: 0.6rem; flex-wrap: wrap; } .functionality-hero { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(260px, 0.6fr); gap: 1rem; overflow: hidden; position: relative; } .functionality-hero::after { content: ''; position: absolute; inset: 0; background: linear-gradient(135deg, rgba(45, 212, 191, 0.08), rgba(129, 140, 248, 0.08), transparent 70%); pointer-events: none; } .functionality-hero > *, .functionality-card > *, .functionality-roadmap > * { position: relative; z-index: 1; } .functionality-hero h3, .functionality-card h3, .functionality-roadmap h3 { margin: 0; } .functionality-hero p, .functionality-card p, .functionality-roadmap p { color: #c9d4ea; } .functionality-scorecard, .roadmap-grid { display: grid; gap: 0.75rem; } .functionality-scorecard div, .roadmap-grid div { border: 1px solid rgba(148, 163, 184, 0.14); border-radius: 18px; background: rgba(30, 41, 59, 0.58); padding: 1rem; } .functionality-scorecard span { display: block; color: #9fb4d9; font-size: 0.82rem; } .functionality-scorecard strong { display: block; margin-top: 0.25rem; font-size: 1.45rem; } .functionality-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; } .functionality-card { display: flex; flex-direction: column; gap: 0.85rem; min-height: 240px; overflow: hidden; position: relative; } .functionality-card::before { content: ''; position: absolute; inset: 0; border-radius: inherit; opacity: 0.7; pointer-events: none; } .functionality-live::before, .functionality-active::before { background: linear-gradient(180deg, rgba(52, 211, 153, 0.09), transparent 55%); } .functionality-ready::before, .functionality-syncing::before { background: linear-gradient(180deg, rgba(96, 165, 250, 0.09), transparent 55%); } .functionality-degraded::before { background: linear-gradient(180deg, rgba(248, 113, 113, 0.12), transparent 55%); } .functionality-signal { margin-top: auto; justify-content: space-between; color: #bfdbfe; font-size: 0.9rem; } .roadmap-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } @media (max-width: 1080px) { .functionality-grid, .functionality-hero, .roadmap-grid { grid-template-columns: 1fr; } } @media (max-width: 720px) { .functionality-summary, .functionality-signal { align-items: stretch; flex-direction: column; } } .functionality-detail { position: relative; overflow: hidden; } .functionality-detail::before { content: ''; position: absolute; inset: 0; background: radial-gradient(circle at top right, rgba(96, 165, 250, 0.1), transparent 34%); pointer-events: none; } .functionality-detail-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 1rem; position: relative; z-index: 1; } .functionality-detail-grid article { border: 1px solid rgba(148, 163, 184, 0.14); border-radius: 18px; background: rgba(30, 41, 59, 0.58); padding: 1rem; } .functionality-detail-grid h4 { margin: 0 0 0.55rem; } .functionality-detail-grid h4:not(:first-child) { margin-top: 1rem; } .functionality-detail-grid p, .functionality-detail-grid ul { margin: 0; color: #c9d4ea; } .functionality-detail-grid ul { padding-left: 1.15rem; } .functionality-detail-grid li + li { margin-top: 0.45rem; } @media (max-width: 900px) { .functionality-detail-grid { grid-template-columns: 1fr; } } /* Mission Console refresh — proper mobile tabs, less scroll archaeology. */ :root { color: #f4f7fb; background: radial-gradient(circle at 12% -8%, rgba(34, 211, 238, 0.2), transparent 28%), radial-gradient(circle at 92% 0%, rgba(250, 204, 21, 0.12), transparent 24%), linear-gradient(145deg, #070a12 0%, #0d1323 48%, #111827 100%); } body { background: linear-gradient(rgba(255, 255, 255, 0.018) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.018) 1px, transparent 1px), #070a12; background-size: 42px 42px, 42px 42px, auto; } body::before { background: radial-gradient(circle at 18% 16%, rgba(34, 211, 238, 0.16), transparent 18%), radial-gradient(circle at 82% 12%, rgba(251, 191, 36, 0.12), transparent 18%), linear-gradient(180deg, rgba(15, 23, 42, 0), rgba(2, 6, 23, 0.42)); } .app-shell { width: min(1240px, calc(100% - 1.5rem)); padding-top: 1.25rem; } .hero-card, .card { background: linear-gradient(180deg, rgba(15, 23, 42, 0.88), rgba(8, 13, 26, 0.82)); border: 1px solid rgba(148, 163, 184, 0.22); box-shadow: 0 18px 48px rgba(0, 0, 0, 0.34), inset 0 1px 0 rgba(255, 255, 255, 0.035); } .hero-card { border-radius: 22px; padding: 1.15rem; position: relative; overflow: hidden; } .hero-card::before { content: ''; position: absolute; inset: 0; background: linear-gradient(110deg, rgba(34, 211, 238, 0.08), transparent 42%, rgba(251, 191, 36, 0.08)); pointer-events: none; } .hero-card > * { position: relative; z-index: 1; } .hero-card h1 { letter-spacing: -0.05em; font-size: clamp(2rem, 6vw, 4.7rem); line-height: 0.9; } .hero-copy, .hero-goal, .section-heading p, .functionality-hero p, .functionality-card p, .functionality-roadmap p, .functionality-detail-grid p, .functionality-detail-grid ul { color: #aebdd4; } .eyebrow { color: #67e8f9; } .hero-stats div, .functionality-scorecard div, .roadmap-grid div, .focus-panel, .functionality-detail-grid article { background: rgba(3, 7, 18, 0.58); border: 1px solid rgba(148, 163, 184, 0.16); } .card { border-radius: 18px; } .project-card { display: none; } .status-strip { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 0.85rem; padding: 0.75rem; } .tab-bar { position: sticky; top: 0.65rem; z-index: 20; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.35rem; padding: 0.35rem; overflow-x: auto; overscroll-behavior-x: contain; scrollbar-width: none; border: 1px solid rgba(148, 163, 184, 0.2); border-radius: 18px; background: rgba(3, 7, 18, 0.78); box-shadow: 0 18px 36px rgba(0, 0, 0, 0.28); backdrop-filter: blur(18px); } .tab-bar::-webkit-scrollbar { display: none; } .tab { min-width: 8.5rem; border-radius: 14px; border-color: transparent; background: transparent; color: #9fb0c9; padding: 0.72rem 0.95rem; white-space: nowrap; transition: transform 160ms ease, background 160ms ease, color 160ms ease, border-color 160ms ease; } .tab:hover { color: #e5f4ff; background: rgba(148, 163, 184, 0.08); } .tab.active, .tab[aria-selected='true'] { color: #06111c; background: linear-gradient(135deg, #67e8f9, #facc15); border-color: rgba(255, 255, 255, 0.18); box-shadow: 0 10px 24px rgba(34, 211, 238, 0.16); } .quick-actions { justify-content: center; border-style: dashed; } button, .button-inline-row button, .quick-actions button { border-radius: 999px; } button:not(.tab) { transition: transform 140ms ease, border-color 140ms ease, background 140ms ease; } button:not(.tab):hover { transform: translateY(-1px); } input, textarea, select { background: rgba(3, 7, 18, 0.72); border-color: rgba(148, 163, 184, 0.28); } .board-grid { grid-template-columns: repeat(4, minmax(240px, 1fr)); } .column { border-top: 3px solid rgba(103, 232, 249, 0.5); } .column:nth-child(2) { border-top-color: rgba(250, 204, 21, 0.55); } .column:nth-child(3) { border-top-color: rgba(167, 139, 250, 0.55); } .column:nth-child(4) { border-top-color: rgba(74, 222, 128, 0.55); } .item-card { background: rgba(2, 6, 23, 0.52); } @media (max-width: 860px) { .app-shell { width: min(100% - 0.8rem, 100%); padding-top: 0.6rem; } .hero-card { display: grid; gap: 1rem; } .hero-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); min-width: 0; } .status-strip { grid-template-columns: 1fr; } .tab-bar { display: flex; flex-wrap: nowrap; justify-content: flex-start; margin-left: -0.05rem; margin-right: -0.05rem; border-radius: 18px; } .tab { flex: 0 0 auto; min-width: max-content; padding: 0.72rem 1rem; } .board-grid { grid-template-columns: 1fr; } } @media (max-width: 720px) { .quick-actions, .tab-bar, .button-row, .button-inline-row, .filter-row, .status-strip, .status-strip-row, .status-bar, .feature-signal-row { align-items: stretch; } .tab-bar { flex-direction: row; } .quick-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); } .quick-actions button:last-child:nth-child(odd) { grid-column: 1 / -1; } } /* Keep v0.1 project-summary editing visible; it is part of the cockpit, just visually quieter. */ .project-card { display: block; } /* Mobile reachability patch: tabs live immediately under the hero, and the page itself never side-scrolls. */ html, body { overflow-x: hidden; } .hero-stats, .hero-stats div, .hero-copy, .hero-goal { min-width: 0; } .hero-copy, .hero-goal { overflow-wrap: anywhere; } @media (max-width: 860px) { .tab-bar { top: 0.4rem; margin-top: 0.65rem; } .hero-card { padding: 1rem; } .hero-stats { gap: 0.5rem; } .hero-stats div { padding: 0.7rem; } .hero-stats strong { font-size: 1.35rem; } } /* Narrow-phone polish: stack hero stats so the cockpit never clips at the right edge. */ @media (max-width: 520px) { .hero-card { overflow: visible; } .hero-stats { grid-template-columns: 1fr; } .hero-stats div { display: grid; grid-template-columns: 1fr auto; align-items: center; } .hero-stats strong { margin-top: 0; } .tab-bar { max-width: 100%; } } .secondary-nav { display: flex; justify-content: space-between; align-items: center; gap: 0.85rem; padding: 0.75rem 0.9rem; border-style: dashed; } .secondary-nav p { margin: 0.2rem 0 0; color: #9fb0c9; font-size: 0.9rem; } .active-secondary { border-color: rgba(103, 232, 249, 0.55); color: #e5fbff; background: rgba(34, 211, 238, 0.12); } .infrastructure-panel { border-style: dashed; } .infrastructure-panel .button-inline-row { margin-top: 0.85rem; } @media (max-width: 720px) { .secondary-nav { align-items: stretch; flex-direction: column; } } /* Phone tabs should be fully visible, not a hidden fourth item behind sideways scroll. */ @media (max-width: 520px) { .tab-bar { overflow-x: hidden; } .tab { flex: 1 1 0; min-width: 0; padding: 0.62rem 0.28rem; white-space: normal; text-align: center; font-size: 0.78rem; line-height: 1.1; } } /* Final phone shape: obvious 2x2 segmented tabs, no hidden/offscreen nav. */ @media (max-width: 520px) { .tab-bar { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.35rem; } .tab { width: 100%; min-height: 2.45rem; font-size: 0.86rem; } } /* Give phone UI real gutters so controls read as intentional, not clipped. */ @media (max-width: 520px) { .app-shell { width: min(100% - 2rem, 100%); } .tab-bar { margin-left: 0; margin-right: 0; } } /* Conservative final mobile gutter: avoid any perceived right-edge clipping. */ @media (max-width: 520px) { .app-shell { width: min(100% - 4rem, 100%); } } .triage-panel { border-color: rgba(103, 232, 249, 0.3); position: relative; overflow: hidden; } .triage-panel::before { content: ''; position: absolute; inset: 0; background: radial-gradient(circle at 12% 0%, rgba(103, 232, 249, 0.12), transparent 28%); pointer-events: none; } .triage-panel > * { position: relative; z-index: 1; } .triage-layout { display: grid; grid-template-columns: minmax(280px, 0.9fr) minmax(0, 1.1fr); gap: 1rem; } .triage-input, .triage-result, .triage-callout { border: 1px solid rgba(148, 163, 184, 0.16); border-radius: 18px; background: rgba(3, 7, 18, 0.46); padding: 1rem; } .triage-input, .triage-result { display: grid; gap: 0.9rem; align-content: start; } .triage-result-header { display: flex; gap: 0.55rem; flex-wrap: wrap; } .triage-callout strong { display: block; margin-bottom: 0.35rem; } .triage-callout p, .triage-callout small { color: #b7c4db; margin: 0 0 0.8rem; } .triage-callout p:last-child { margin-bottom: 0; } .triage-callout.warning { border-color: rgba(250, 204, 21, 0.34); background: rgba(120, 53, 15, 0.22); } .triage-error { margin: 0; color: #fecaca; } @media (max-width: 900px) { .triage-layout { grid-template-columns: 1fr; } } /* v0.2.1 — AI triage is the front door, mobile is task-focused. */ .mobile-shell-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; padding: 1rem; background: radial-gradient(circle at top right, rgba(45, 212, 191, 0.12), transparent 28%), linear-gradient(180deg, rgba(13, 19, 36, 0.98), rgba(11, 16, 32, 0.92)); } .mobile-shell-header h1 { margin: 0; letter-spacing: -0.04em; font-size: clamp(1.8rem, 6vw, 3rem); } .compact-goal { margin-top: 0.35rem; } .top-status-row { display: inline-flex; align-items: center; gap: 0.45rem; color: #b7c4db; white-space: nowrap; padding: 0.35rem 0.55rem; border-radius: 999px; background: rgba(255, 255, 255, 0.04); } .status-dot, .success-orb { width: 0.7rem; height: 0.7rem; border-radius: 999px; display: inline-block; background: #94a3b8; box-shadow: 0 0 18px currentColor; } .status-dot.healthy, .success-orb { color: #67e8f9; background: #67e8f9; } .status-dot.connecting { color: #facc15; background: #facc15; } .status-dot.degraded { color: #fb7185; background: #fb7185; } .primary-intake, .mobile-cockpit { margin-top: 1rem; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 1rem; align-items: center; border-color: rgba(103, 232, 249, 0.34); } .primary-intake h2, .mobile-cockpit h2, .triage-panel h2, .triage-panel h3, .suggested-item-card h4 { margin: 0; } .primary-intake p, .mobile-cockpit p, .triage-saved-state p { color: #aebdd4; margin: 0.35rem 0 0; } .cockpit-counts { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.45rem; grid-column: 1 / -1; } .cockpit-counts span { display: grid; gap: 0.15rem; padding: 0.6rem; border-radius: 14px; background: rgba(3, 7, 18, 0.52); color: #9fb0c9; text-align: center; } .cockpit-counts strong { color: #f8fbff; font-size: 1.25rem; } .compact-project-details { grid-column: 1 / -1; } .plan-home-card, .inline-details, .risk-group, .triage-flow-stack { display: grid; gap: 1rem; } .flow-breadcrumbs, .triage-progress-strip { display: flex; flex-wrap: wrap; gap: 0.55rem; } .flow-breadcrumbs span { display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.45rem 0.7rem; border-radius: 999px; background: rgba(3, 7, 18, 0.46); color: #dbe7ff; font-size: 0.84rem; } .flow-breadcrumbs span::after { content: '→'; color: #67e8f9; } .flow-breadcrumbs span:last-child::after { content: ''; } .inline-details summary { cursor: pointer; color: #dbe7ff; } .compact-project-form { margin-top: 1rem; } .triage-modal-backdrop { position: fixed; inset: 0; z-index: 80; display: grid; place-items: start center; padding: 1rem; overflow: auto; background: rgba(2, 6, 23, 0.72); backdrop-filter: blur(12px); } .triage-modal { width: min(1040px, 100%); max-height: calc(100vh - 2rem); overflow: auto; } .triage-progress-strip { margin-bottom: 1rem; } .triage-status-banner, .triage-meta-line, .triage-loading-note { color: #b7c4db; } .triage-status-banner { display: flex; gap: 0.6rem; flex-wrap: wrap; align-items: center; margin-bottom: 1rem; padding: 0.75rem 0.9rem; border-radius: 16px; border: 1px solid rgba(148, 163, 184, 0.16); background: rgba(3, 7, 18, 0.42); } .triage-meta-line, .triage-loading-note { margin: 0; } .triage-step-card, .recommendation-card, .suggested-item-card, .triage-decision-box, .triage-saved-state { border: 1px solid rgba(148, 163, 184, 0.16); border-radius: 18px; background: rgba(3, 7, 18, 0.48); padding: 1rem; } .triage-step-card { display: grid; gap: 0.85rem; align-content: start; } .recommendation-card, .triage-decision-box { display: grid; gap: 0.85rem; } .recommendation-card-high { border-color: rgba(251, 146, 60, 0.42); box-shadow: inset 0 0 0 1px rgba(251, 146, 60, 0.08); } .recommendation-card-dangerous { border-color: rgba(248, 113, 113, 0.46); box-shadow: inset 0 0 0 1px rgba(248, 113, 113, 0.1); } .recommendation-card-medium { border-color: rgba(244, 114, 182, 0.28); } .recommendation-card-low { border-color: rgba(52, 211, 153, 0.3); } .triage-recommendation-grid { display: grid; gap: 0.85rem; grid-template-columns: repeat(2, minmax(0, 1fr)); } .suggestion-meta { color: #b7c4db; } .suggested-item-card small { display: block; margin-top: 0.55rem; color: #b7c4db; } .triage-edit-fields { border-top: 1px solid rgba(148, 163, 184, 0.16); padding-top: 1rem; } .triage-saved-state { text-align: center; display: grid; justify-items: center; gap: 0.8rem; } .accordion-board { display: grid; grid-template-columns: repeat(4, minmax(220px, 1fr)); gap: 1rem; } .feature-column-details summary { list-style: none; cursor: pointer; } .feature-column-details summary::-webkit-details-marker { display: none; } .feature-column-details summary::after { content: 'Open'; color: #67e8f9; font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.1em; } .feature-column-details[open] summary::after { content: 'Collapse'; color: #9fb0c9; } .compact-feature-card p { display: none; } .secondary-editor, .parking-first-list, .pulse-timeline-card { margin-top: 1rem; } .risk-group-list { gap: 1rem; } .risk-group > h4 { margin: 0; text-transform: capitalize; } .triage-action-stack { align-items: center; } .feature-drawer { margin-top: 1rem; } .editor-sheet-backdrop { position: fixed; inset: 0; z-index: 75; display: grid; place-items: end center; padding: 1rem; background: rgba(2, 6, 23, 0.64); backdrop-filter: blur(10px); } .editor-sheet { width: min(980px, 100%); max-height: calc(100vh - 2rem); overflow: auto; display: grid; gap: 1rem; background: linear-gradient(180deg, rgba(15, 23, 42, 0.98), rgba(7, 11, 22, 0.98)), radial-gradient(circle at top, rgba(99, 102, 241, 0.12), transparent 40%); } .sheet-summary-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; } .sheet-summary-grid.single-column { grid-template-columns: 1fr; } .sheet-actions { position: sticky; bottom: 0; padding-top: 0.75rem; background: linear-gradient(180deg, rgba(11, 16, 32, 0), rgba(11, 16, 32, 0.94) 22%); } @media (max-width: 860px) { .app-shell { width: min(100% - 1rem, 100%); padding-bottom: 5.5rem; } .mobile-shell-header, .section-heading { display: grid; grid-template-columns: 1fr; } .top-status-row { width: 100%; justify-content: center; } .flow-breadcrumbs span { width: 100%; justify-content: space-between; } .flow-breadcrumbs span:last-child { justify-content: center; } .triage-recommendation-grid, .accordion-board, .focus-grid, .sheet-summary-grid { grid-template-columns: 1fr; } .cockpit-counts { grid-template-columns: repeat(2, minmax(0, 1fr)); } .tab-bar { position: fixed; left: 0.5rem; right: 0.5rem; bottom: 0.5rem; top: auto; z-index: 50; margin-top: 1rem; padding: 0.35rem; background: rgba(8, 12, 24, 0.94); box-shadow: 0 20px 48px rgba(2, 6, 23, 0.45); backdrop-filter: blur(16px); } .triage-modal-backdrop, .editor-sheet-backdrop { padding: 0.5rem; } .triage-modal, .editor-sheet { max-height: calc(100vh - 1rem); } .editor-sheet { width: 100%; border-radius: 24px 24px 18px 18px; } } @media (max-width: 520px) { .app-shell { width: min(100% - 1rem, 100%); } .card { padding: 1rem; border-radius: 20px; background: rgba(10, 15, 28, 0.92); box-shadow: 0 10px 28px rgba(2, 6, 23, 0.22); backdrop-filter: blur(8px); } .plan-home-card { background: linear-gradient(180deg, rgba(12, 18, 34, 0.98), rgba(10, 15, 28, 0.96)), radial-gradient(circle at top left, rgba(96, 165, 250, 0.1), transparent 34%); } .parking-first-list { background: linear-gradient(180deg, rgba(14, 21, 34, 0.98), rgba(10, 15, 28, 0.96)), radial-gradient(circle at top right, rgba(251, 146, 60, 0.08), transparent 28%); } .pulse-timeline-card { background: linear-gradient(180deg, rgba(12, 18, 34, 0.98), rgba(10, 15, 28, 0.96)), radial-gradient(circle at top center, rgba(45, 212, 191, 0.08), transparent 28%); } .item-card { background: rgba(255, 255, 255, 0.03); border-color: rgba(148, 163, 184, 0.12); } .item-card:nth-child(odd) { background: rgba(255, 255, 255, 0.045); } .tap-chip { background: rgba(255, 255, 255, 0.06); color: #c7d2fe; } .button-row, .button-inline-row { display: grid; grid-template-columns: 1fr; } .tab-bar { grid-template-columns: repeat(4, minmax(0, 1fr)); border-radius: 20px; } .tab { min-height: 3rem; padding: 0.7rem 0.2rem; font-size: 0.8rem; } .editor-sheet-backdrop, .triage-modal-backdrop { padding: 0; place-items: end stretch; } .editor-sheet, .triage-modal { width: 100%; max-height: 100vh; border-radius: 22px 22px 0 0; padding-bottom: 1.25rem; } .sheet-actions { padding-bottom: 0.25rem; } .item-card { padding: 0.9rem; border-radius: 16px; } } /* v0.2.1 mobile clipping guard: no card/text should outrun the phone viewport. */ .app-shell, .card, .mobile-shell-header, .primary-intake, .mobile-cockpit, .section-heading, .secondary-nav, .triage-panel, .item-card, .markdown-card, .focus-panel { max-width: 100%; min-width: 0; } .mobile-shell-header *, .primary-intake *, .mobile-cockpit *, .section-heading *, .secondary-nav *, .triage-panel *, .item-card * { min-width: 0; overflow-wrap: anywhere; } button, input, textarea, select { max-width: 100%; } @media (max-width: 520px) { .primary-intake h2, .mobile-cockpit h2 { font-size: 1.28rem; line-height: 1.15; } .mobile-shell-header h1 { font-size: 2rem; } .section-heading h2 { font-size: 1.35rem; } .primary-intake, .mobile-cockpit, .mobile-shell-header, .secondary-nav { padding: 0.9rem; } .top-status-row { justify-content: flex-start; } .status-bar { font-size: 0.78rem; } } .roadmap-hero-card, .roadmap-phase-card, .roadmap-release-card { display: grid; gap: 1rem; } .compact-roadmap-grid { align-items: start; } .roadmap-phase-item, .roadmap-release-detail { display: grid; gap: 0.9rem; } .roadmap-readiness-grid, .roadmap-release-feature-links { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); } .checklist-stack { display: grid; gap: 0.45rem; } .checkbox-row { display: flex; gap: 0.6rem; align-items: flex-start; } .roadmap-badges { flex-wrap: wrap; } /* UX reset: Today-first, Oikos-inspired simplicity pass */ .handoff-backdrop { z-index: 120; } .today-card { border-color: rgba(125, 211, 252, 0.22); background: linear-gradient(180deg, rgba(15, 23, 42, 0.88), rgba(15, 23, 42, 0.68)), radial-gradient(circle at top left, rgba(45, 212, 191, 0.1), transparent 34%); } .today-grid { display: grid; grid-template-columns: minmax(0, 1.25fr) repeat(2, minmax(220px, 0.85fr)); gap: 1rem; align-items: stretch; } .today-focus-card, .today-release-card, .today-decision-card, .session-command-panel { background: rgba(8, 13, 28, 0.66); } .today-focus-card h3, .today-release-card h3, .today-decision-card h3 { margin: 0 0 0.45rem; font-size: clamp(1.15rem, 2vw, 1.55rem); } .today-focus-card p, .today-release-card p, .today-decision-card p { color: #c4d1e6; } .sticky-action-row { margin-top: 0.85rem; } .simplified-feature-card p { margin: 0.35rem 0 0.75rem; color: #c4d1e6; text-align: left; } .simplified-feature-card .feature-signal-row { justify-content: flex-start; color: #9fb0c9; } @media (max-width: 900px) { .today-grid { grid-template-columns: 1fr; } .today-card .section-heading { gap: 1rem; } .tab-bar { position: sticky; top: 0; z-index: 40; padding: 0.45rem; margin-inline: -0.25rem; background: rgba(8, 13, 28, 0.86); backdrop-filter: blur(14px); border-radius: 20px; } .tab { flex: 1 1 auto; min-width: 5.2rem; padding: 0.65rem 0.55rem; font-size: 0.9rem; } .sticky-action-row { position: sticky; bottom: 0.75rem; padding: 0.6rem; border-radius: 18px; background: rgba(8, 13, 28, 0.92); border: 1px solid rgba(148, 163, 184, 0.14); backdrop-filter: blur(14px); } }