.ppt-hero, .ppt-panel, .ppt-table-shell { border: 1px solid var(--obs-line); border-radius: var(--momo-radius-lg, 8px); background: var(--obs-card); box-shadow: var(--momo-shadow-md, 0 16px 38px rgba(70, 46, 28, 0.08)); } .ppt-hero { padding: var(--momo-space-5, 24px); background: radial-gradient(circle, rgba(45, 40, 32, 0.12) 1px, transparent 1.2px), linear-gradient(135deg, rgba(255, 248, 239, 0.98), rgba(250, 247, 240, 0.78)); background-size: 12px 12px, auto; } .ppt-hero-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, 0.34fr); gap: var(--momo-space-5, 24px); align-items: stretch; } .ppt-hero-copy { min-width: 0; } .ppt-kicker { color: var(--obs-accent); font-size: var(--momo-text-caption, 12px); letter-spacing: 0; font-weight: var(--momo-font-weight-bold, 700); } .ppt-title { margin: var(--momo-space-2, 8px) 0 var(--momo-space-1, 4px); font-family: var(--momo-font-display, "Inter", "Noto Sans TC", system-ui, sans-serif); font-size: var(--obs-title-size); letter-spacing: 0; line-height: var(--momo-line-height-tight, 1.08); } .ppt-subtitle { color: var(--obs-muted); max-width: 860px; line-height: 1.7; } .ppt-hero-note { margin: var(--momo-space-2, 8px) 0 0; color: var(--obs-amber); font-size: var(--momo-text-body, 14px); font-weight: var(--momo-font-weight-bold, 700); } .ppt-hero-actions { display: flex; align-items: center; gap: var(--momo-space-2, 8px); flex-wrap: wrap; margin-top: var(--momo-space-4, 16px); } .ppt-hero-actions .btn { display: inline-flex; align-items: center; gap: var(--momo-space-1, 4px); } .ppt-hero-deck { display: grid; align-content: space-between; gap: var(--momo-space-3, 12px); min-height: 180px; padding: var(--momo-space-4, 16px); border: 1px solid var(--obs-line); border-left: 5px solid var(--obs-blue); border-radius: var(--momo-radius-lg, 8px); background: radial-gradient(circle, rgba(45, 40, 32, 0.08) 1px, transparent 1.2px), rgba(250, 247, 240, 0.68); background-size: 10px 10px, auto; } .ppt-hero-deck.is-ready { border-left-color: var(--obs-green); } .ppt-hero-deck.is-partial, .ppt-hero-deck.is-planned { border-left-color: var(--obs-amber); } .ppt-hero-deck.is-error { border-left-color: var(--obs-red); } .ppt-hero-deck strong { display: block; color: var(--obs-ink); font-family: var(--momo-font-mono, "IBM Plex Mono", monospace); font-size: var(--momo-text-title, 18px); line-height: 1.35; overflow-wrap: anywhere; } .ppt-hero-deck small, .ppt-hero-deck-run { color: var(--obs-muted); font-size: var(--momo-text-caption, 12px); line-height: 1.5; } .ppt-hero-deck-run { display: grid; gap: var(--momo-space-1, 4px); padding-top: var(--momo-space-3, 12px); border-top: 1px solid var(--obs-line); } .ppt-hero-deck-run span { color: var(--obs-ink); font-weight: var(--momo-font-weight-bold, 700); } .ppt-diagnostic-strip { display: grid; grid-template-columns: minmax(220px, 0.65fr) minmax(320px, 1fr) minmax(260px, 0.8fr); align-items: stretch; gap: var(--momo-space-3, 12px); margin-top: var(--momo-space-3, 12px); padding: var(--momo-space-3, 12px) var(--momo-space-4, 16px); border: 1px solid rgba(181, 111, 56, 0.35); border-radius: var(--momo-radius-lg, 8px); background: radial-gradient(circle, rgba(181, 111, 56, 0.1) 1px, transparent 1.2px), rgba(255, 250, 242, 0.78); background-size: 10px 10px, auto; } .ppt-diagnostic-strip strong { display: block; margin-top: var(--momo-space-1, 4px); color: var(--obs-ink); } .ppt-diagnostic-strip > div:first-child small, .ppt-diagnostic-actions small { display: block; margin-top: var(--momo-space-1, 4px); color: var(--obs-muted); line-height: 1.45; } .ppt-diagnostic-items { display: flex; flex-wrap: wrap; gap: var(--momo-space-2, 8px); } .ppt-diagnostic-items span { padding: var(--momo-space-1, 4px) var(--momo-space-2, 8px); border: 1px solid rgba(181, 111, 56, 0.28); border-radius: 999px; color: var(--obs-accent); background: rgba(255, 255, 255, 0.55); font-size: var(--momo-text-caption, 12px); font-weight: var(--momo-font-weight-bold, 700); } .ppt-diagnostic-checks { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--momo-space-2, 8px); } .ppt-diagnostic-check { min-width: 0; padding: var(--momo-space-2, 8px); border: 1px solid rgba(181, 111, 56, 0.22); border-radius: var(--momo-radius-md, 6px); background: rgba(255, 255, 255, 0.58); } .ppt-diagnostic-check span, .ppt-diagnostic-check small { display: block; color: var(--obs-muted); font-size: var(--momo-text-caption, 12px); line-height: 1.4; } .ppt-diagnostic-check strong { margin: var(--momo-space-1, 4px) 0; font-size: var(--momo-text-body, 14px); line-height: 1.25; overflow-wrap: anywhere; } .ppt-diagnostic-check.is-ready { border-color: rgba(76, 137, 91, 0.35); } .ppt-diagnostic-check.is-ready strong { color: var(--obs-green); } .ppt-diagnostic-check.is-error { border-color: rgba(196, 84, 75, 0.35); } .ppt-diagnostic-check.is-error strong { color: var(--obs-red); } .ppt-diagnostic-actions { min-width: 0; } .ppt-aider-status { display: grid; grid-template-columns: minmax(260px, 0.36fr) minmax(0, 0.64fr); gap: var(--momo-space-3, 12px); align-items: stretch; margin-top: var(--momo-space-3, 12px); padding: var(--momo-space-3, 12px); border: 1px solid rgba(184, 121, 47, 0.32); border-radius: var(--momo-radius-lg, 8px); background: radial-gradient(circle, rgba(184, 121, 47, 0.1) 1px, transparent 1.2px), rgba(255, 248, 239, 0.72); background-size: 10px 10px, auto; } .ppt-aider-status.is-empty { display: none; } .ppt-aider-status-main { display: flex; align-items: center; gap: var(--momo-space-3, 12px); } .ppt-aider-status-main strong, .ppt-aider-status-main small { display: block; } .ppt-aider-status-main strong { color: var(--obs-ink); font-size: var(--momo-text-body, 14px); font-weight: var(--momo-font-weight-black, 800); } .ppt-aider-status-main small { color: var(--obs-muted); } .ppt-aider-job-list { display: grid; gap: var(--momo-space-2, 8px); } .ppt-aider-job { display: grid; grid-template-columns: minmax(180px, 0.42fr) minmax(130px, 0.22fr) minmax(0, 0.36fr); gap: var(--momo-space-2, 8px); align-items: center; min-height: 42px; padding: var(--momo-space-2, 8px); border: 1px solid rgba(86, 64, 48, 0.12); border-radius: var(--momo-radius-md, 6px); background: rgba(255, 255, 255, 0.54); } .ppt-aider-job code, .ppt-aider-job span, .ppt-aider-job small { min-width: 0; overflow-wrap: anywhere; } .ppt-aider-job code { color: var(--obs-ink); font-family: var(--momo-font-mono); } .ppt-aider-job span, .ppt-aider-job small { color: var(--obs-muted); font-size: var(--momo-text-caption, 12px); } .ppt-vision-status { display: grid; grid-template-columns: minmax(260px, 0.36fr) minmax(0, 0.64fr); gap: var(--momo-space-3, 12px); align-items: stretch; margin-top: var(--momo-space-3, 12px); padding: var(--momo-space-3, 12px); border: 1px solid rgba(72, 108, 149, 0.24); border-radius: var(--momo-radius-lg, 8px); background: radial-gradient(circle, rgba(72, 108, 149, 0.08) 1px, transparent 1.2px), rgba(255, 255, 255, 0.58); background-size: 10px 10px, auto; } .ppt-vision-status.is-running, .ppt-vision-status.is-queued { border-color: rgba(184, 121, 47, 0.32); } .ppt-vision-status.is-error { border-color: rgba(196, 84, 75, 0.32); } .ppt-vision-status-main { display: flex; align-items: center; gap: var(--momo-space-3, 12px); } .ppt-vision-status-main strong, .ppt-vision-status-main small { display: block; } .ppt-vision-status-main strong { color: var(--obs-ink); font-size: var(--momo-text-body, 14px); font-weight: var(--momo-font-weight-black, 800); } .ppt-vision-status-main small, .ppt-vision-job span, .ppt-vision-job small { color: var(--obs-muted); font-size: var(--momo-text-caption, 12px); } .ppt-vision-status-list { display: grid; gap: var(--momo-space-2, 8px); } .ppt-vision-job { display: grid; grid-template-columns: minmax(130px, 0.28fr) minmax(150px, 0.28fr) minmax(0, 0.44fr); gap: var(--momo-space-2, 8px); align-items: center; min-height: 42px; padding: var(--momo-space-2, 8px); border: 1px solid rgba(86, 64, 48, 0.12); border-radius: var(--momo-radius-md, 6px); background: rgba(255, 255, 255, 0.54); } .ppt-vision-job strong, .ppt-vision-job span, .ppt-vision-job small { min-width: 0; overflow-wrap: anywhere; } .ppt-vision-job strong { color: var(--obs-ink); font-size: var(--momo-text-body, 14px); } .ppt-command { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--momo-space-3, 12px); margin-top: var(--momo-space-4, 16px); } .ppt-command--compact { grid-template-columns: repeat(4, minmax(0, 1fr)); } .ppt-signal { padding: var(--momo-space-3, 12px); border: 1px solid var(--obs-line); border-left: 4px solid var(--obs-blue); border-radius: var(--momo-radius-lg, 8px); background: rgba(255, 255, 255, 0.62); } .ppt-signal.is-ready { border-left-color: var(--obs-green); } .ppt-signal.is-partial, .ppt-signal.is-planned { border-left-color: var(--obs-amber); } .ppt-signal.is-error { border-left-color: var(--obs-red); } .ppt-label { color: var(--obs-muted); font-size: var(--momo-text-caption, 12px); letter-spacing: 0; font-weight: var(--momo-font-weight-bold, 700); } .ppt-value { display: block; margin-top: var(--momo-space-1, 4px); font-size: var(--obs-value-size); font-weight: var(--momo-font-weight-black, 800); letter-spacing: 0; } .ppt-toolbar { margin-top: var(--momo-space-4, 16px); display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: start; gap: var(--momo-space-3, 12px); } .ppt-type-tabs { display: grid; grid-template-columns: repeat(auto-fit, minmax(92px, 1fr)); min-width: 0; width: 100%; max-width: 100%; overflow: hidden; gap: var(--momo-space-2, 8px); } .ppt-type-chip { display: inline-flex; align-items: center; justify-content: center; gap: var(--momo-space-1, 4px); width: 100%; min-height: 34px; white-space: normal; line-height: 1.25; text-align: center; } .ppt-deck-workbench { margin-top: var(--momo-space-4, 16px); padding: var(--momo-space-4, 16px); border: 1px solid var(--obs-line); border-radius: var(--momo-radius-lg, 8px); background: radial-gradient(circle, rgba(45, 40, 32, 0.08) 1px, transparent 1.2px), rgba(255, 255, 255, 0.5); background-size: 10px 10px, auto; box-shadow: var(--momo-shadow-md, 0 16px 38px rgba(70, 46, 28, 0.08)); } .ppt-deck-empty { padding: var(--momo-space-4, 16px); } .ppt-workbench-head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--momo-space-3, 12px); margin-bottom: var(--momo-space-3, 12px); } .ppt-workbench-actions { display: flex; align-items: center; justify-content: flex-end; gap: var(--momo-space-2, 8px); flex-wrap: wrap; } .ppt-deck-rail { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--momo-space-3, 12px); } .ppt-deck-card { display: grid; align-content: space-between; min-height: 168px; padding: var(--momo-space-3, 12px); border: 1px solid var(--obs-line); border-radius: var(--momo-radius-md, 6px); background: rgba(255, 255, 255, 0.64); } .ppt-deck-card.is-disabled { opacity: 0.68; } .ppt-deck-meta, .ppt-deck-facts { display: flex; align-items: center; justify-content: space-between; gap: var(--momo-space-2, 8px); color: var(--obs-muted); font-size: var(--momo-text-caption, 12px); } .ppt-deck-facts { justify-content: flex-start; flex-wrap: wrap; } .ppt-deck-facts span { min-height: 22px; } .ppt-deck-card h3 { margin: var(--momo-space-2, 8px) 0; color: var(--obs-ink); font-size: var(--momo-text-body, 14px); font-weight: var(--momo-font-weight-black, 800); line-height: 1.35; overflow-wrap: anywhere; } .ppt-preview-modal[hidden] { display: none; } body.ppt-preview-open { overflow: hidden; } .ppt-preview-modal { position: fixed; inset: 0; z-index: 1080; display: grid; place-items: center; padding: var(--momo-space-4, 16px); } .ppt-preview-backdrop { position: absolute; inset: 0; background: rgba(42, 37, 32, 0.48); backdrop-filter: blur(6px); } .ppt-preview-dialog { position: relative; z-index: 1; display: grid; grid-template-rows: auto minmax(0, 1fr); width: min(1180px, 100%); height: min(82vh, 860px); border: 1px solid var(--obs-line); border-radius: var(--momo-radius-lg, 8px); background: radial-gradient(circle, rgba(45, 40, 32, 0.08) 1px, transparent 1.2px), var(--obs-paper); background-size: 10px 10px, auto; box-shadow: 0 28px 80px rgba(42, 37, 32, 0.24); overflow: hidden; } .ppt-preview-head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--momo-space-3, 12px); padding: var(--momo-space-4, 16px); border-bottom: 1px solid var(--obs-line); background: rgba(255, 255, 255, 0.62); } .ppt-preview-head h2 { margin: 0 0 var(--momo-space-1, 4px); color: var(--obs-ink); font-size: var(--momo-text-title, 18px); font-weight: var(--momo-font-weight-black, 800); letter-spacing: 0; overflow-wrap: anywhere; } .ppt-preview-actions { display: flex; align-items: center; justify-content: flex-end; gap: var(--momo-space-2, 8px); flex-wrap: wrap; } .ppt-preview-frame-wrap { position: relative; min-height: 0; background: rgba(255, 255, 255, 0.52); } .ppt-preview-frame-wrap iframe { position: relative; z-index: 1; width: 100%; height: 100%; min-height: 560px; border: 0; background: var(--obs-paper); } .ppt-preview-loading { position: absolute; inset: var(--momo-space-4, 16px); z-index: 0; display: grid; place-items: center; border: 1px dashed var(--obs-line); border-radius: var(--momo-radius-md, 6px); color: var(--obs-muted); font-family: var(--momo-font-mono); background: radial-gradient(circle, rgba(45, 40, 32, 0.08) 1px, transparent 1.2px), rgba(255, 255, 255, 0.42); background-size: 10px 10px, auto; } .ppt-preview-frame-wrap.is-loaded .ppt-preview-loading { display: none; } .ppt-health-board { display: grid; grid-template-columns: minmax(280px, 0.36fr) minmax(0, 0.64fr); gap: var(--momo-space-4, 16px); margin-top: var(--momo-space-4, 16px); } .ppt-health-main, .ppt-stage-card { border: 1px solid var(--obs-line); border-radius: var(--momo-radius-lg, 8px); background: radial-gradient(circle, rgba(45, 40, 32, 0.08) 1px, transparent 1.2px), rgba(255, 255, 255, 0.58); background-size: 10px 10px, auto; box-shadow: var(--momo-shadow-md, 0 16px 38px rgba(70, 46, 28, 0.08)); } .ppt-health-main { display: grid; align-content: space-between; min-height: 228px; padding: var(--momo-space-4, 16px); border-left: 5px solid var(--obs-blue); } .ppt-health-main.is-ready { border-left-color: var(--obs-green); } .ppt-health-main.is-partial, .ppt-health-main.is-planned { border-left-color: var(--obs-amber); } .ppt-health-main.is-error { border-left-color: var(--obs-red); } .ppt-health-main h2 { margin: var(--momo-space-2, 8px) 0; color: var(--obs-ink); font-size: var(--momo-text-title, 18px); font-weight: var(--momo-font-weight-black, 800); letter-spacing: 0; } .ppt-health-main p { margin: 0; color: var(--obs-muted); line-height: 1.6; } .ppt-health-facts { display: grid; gap: var(--momo-space-2, 8px); margin-top: var(--momo-space-4, 16px); } .ppt-health-facts span { display: flex; justify-content: space-between; gap: var(--momo-space-3, 12px); padding-top: var(--momo-space-2, 8px); border-top: 1px solid var(--obs-line); color: var(--obs-muted); font-size: var(--momo-text-caption, 12px); } .ppt-health-facts strong { color: var(--obs-ink); font-size: var(--momo-text-body, 14px); } .ppt-stage-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--momo-space-3, 12px); } .ppt-stage-card { display: grid; grid-template-columns: 34px minmax(0, 1fr); gap: var(--momo-space-2, 8px); min-height: 228px; padding: var(--momo-space-3, 12px); border-top: 4px solid var(--obs-blue); } .ppt-stage-card.is-ready { border-top-color: var(--obs-green); } .ppt-stage-card.is-partial, .ppt-stage-card.is-planned { border-top-color: var(--obs-amber); } .ppt-stage-card.is-error { border-top-color: var(--obs-red); } .ppt-stage-icon { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border: 1px solid rgba(201, 100, 66, 0.24); border-radius: var(--momo-radius-md, 6px); color: var(--obs-accent); background: rgba(255, 248, 239, 0.78); } .ppt-stage-card strong { display: block; margin: var(--momo-space-1, 4px) 0; color: var(--obs-ink); font-size: var(--momo-text-headline, 22px); line-height: 1.1; } .ppt-stage-card small, .ppt-stage-card p { display: block; margin: 0; color: var(--obs-muted); font-size: var(--momo-text-caption, 12px); line-height: 1.5; } .ppt-stage-card p { margin-top: var(--momo-space-2, 8px); overflow-wrap: anywhere; } .ppt-action-queue { margin-top: var(--momo-space-4, 16px); padding: var(--momo-space-4, 16px); border: 1px solid var(--obs-line); border-radius: var(--momo-radius-lg, 8px); background: radial-gradient(circle, rgba(45, 40, 32, 0.08) 1px, transparent 1.2px), rgba(255, 255, 255, 0.5); background-size: 10px 10px, auto; box-shadow: var(--momo-shadow-md, 0 16px 38px rgba(70, 46, 28, 0.08)); } #ppt-deck-workbench, #ppt-action-queue, #ppt-issue-board, #ppt-production-center, #ppt-runtime-diagnostic { scroll-margin-top: 88px; } .ppt-issue-board { margin-top: var(--momo-space-4, 16px); padding: var(--momo-space-4, 16px); border: 1px solid var(--obs-line); border-radius: var(--momo-radius-lg, 8px); background: radial-gradient(circle, rgba(45, 40, 32, 0.08) 1px, transparent 1.2px), rgba(255, 250, 242, 0.58); background-size: 10px 10px, auto; box-shadow: var(--momo-shadow-md, 0 16px 38px rgba(70, 46, 28, 0.08)); } .ppt-issue-metrics { display: flex; align-items: center; justify-content: flex-end; gap: var(--momo-space-2, 8px); flex-wrap: wrap; } .ppt-issue-metrics span { display: inline-flex; align-items: center; gap: var(--momo-space-1, 4px); min-height: 30px; padding: 0 var(--momo-space-2, 8px); border: 1px solid rgba(86, 64, 48, 0.14); border-radius: 999px; color: var(--obs-muted); background: rgba(255, 255, 255, 0.58); font-size: var(--momo-text-caption, 12px); } .ppt-issue-metrics strong { color: var(--obs-ink); font-family: var(--momo-font-mono); } .ppt-issue-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--momo-space-3, 12px); } .ppt-issue-card { display: grid; align-content: space-between; min-height: 196px; padding: var(--momo-space-3, 12px); border: 1px solid var(--obs-line); border-top: 4px solid var(--obs-amber); border-radius: var(--momo-radius-lg, 8px); background: rgba(255, 255, 255, 0.62); } .ppt-issue-card.is-error { border-top-color: var(--obs-red); } .ppt-issue-card strong { display: block; margin-top: var(--momo-space-2, 8px); color: var(--obs-ink); font-size: var(--momo-text-body, 14px); line-height: 1.35; overflow-wrap: anywhere; } .ppt-issue-card p { margin: var(--momo-space-2, 8px) 0 0; color: var(--obs-muted); font-size: var(--momo-text-body, 14px); line-height: 1.55; overflow-wrap: anywhere; } .ppt-issue-top { display: flex; align-items: center; justify-content: space-between; gap: var(--momo-space-2, 8px); } .ppt-action-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--momo-space-3, 12px); } .ppt-action-lane { display: grid; gap: var(--momo-space-3, 12px); align-content: start; min-height: 246px; padding: var(--momo-space-3, 12px); border: 1px solid var(--obs-line); border-radius: var(--momo-radius-lg, 8px); background: rgba(255, 255, 255, 0.58); border-top: 4px solid var(--obs-blue); } .ppt-action-lane.is-ready { border-top-color: var(--obs-green); } .ppt-action-lane.is-partial, .ppt-action-lane.is-planned { border-top-color: var(--obs-amber); } .ppt-action-lane.is-error { border-top-color: var(--obs-red); } .ppt-action-lane-head { display: flex; align-items: center; justify-content: space-between; gap: var(--momo-space-2, 8px); } .ppt-action-lane-head strong { color: var(--obs-ink); font-size: var(--momo-text-headline, 22px); line-height: 1; } .ppt-action-list { display: grid; gap: var(--momo-space-2, 8px); } .ppt-action-item, .ppt-action-empty { padding: var(--momo-space-2, 8px); border: 1px solid rgba(86, 64, 48, 0.12); border-radius: var(--momo-radius-md, 6px); background: rgba(255, 248, 239, 0.54); } .ppt-action-item strong { display: block; color: var(--obs-ink); font-size: var(--momo-text-body, 14px); line-height: 1.35; overflow-wrap: anywhere; } .ppt-action-item small, .ppt-action-item p, .ppt-action-empty { color: var(--obs-muted); font-size: var(--momo-text-caption, 12px); line-height: 1.5; } .ppt-action-item p { margin: var(--momo-space-1, 4px) 0 0; overflow-wrap: anywhere; } .ppt-action-foot { display: flex; align-items: center; justify-content: space-between; gap: var(--momo-space-2, 8px); flex-wrap: wrap; margin-top: var(--momo-space-2, 8px); } .ppt-grid { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(330px, 0.8fr); gap: var(--momo-space-4, 16px); margin-top: var(--momo-space-4, 16px); } .ppt-stack { display: grid; gap: var(--momo-space-4, 16px); } .ppt-panel-head, .ppt-table-title { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--momo-space-4, 16px); padding: var(--momo-space-4, 16px) var(--momo-space-4, 16px) 0; } .ppt-panel-title, .ppt-table-title h3 { margin: var(--momo-space-1, 4px) 0 0; font-size: var(--momo-text-title, 18px); font-weight: var(--momo-font-weight-black, 800); letter-spacing: 0; } .ppt-panel-actions { display: flex; justify-content: flex-end; gap: var(--momo-space-2, 8px); flex-wrap: wrap; } .ppt-panel-body { padding: var(--momo-space-4, 16px); } .ppt-table-shell { overflow: hidden; margin-top: var(--momo-space-4, 16px); } .ppt-table-shell .table { min-width: 760px; } .ppt-mini-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--momo-space-3, 12px); } .ppt-auto-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--momo-space-3, 12px); margin-top: var(--momo-space-4, 16px); } .ppt-pipeline-layout { display: grid; grid-template-columns: minmax(260px, 0.38fr) minmax(0, 0.62fr); gap: var(--momo-space-4, 16px); } .ppt-cadence-rail, .ppt-coverage-board { display: grid; gap: var(--momo-space-3, 12px); } .ppt-cadence-tile { padding: var(--momo-space-3, 12px); border: 1px solid var(--obs-line); border-radius: var(--momo-radius-lg, 8px); background: radial-gradient(circle, rgba(45, 40, 32, 0.08) 1px, transparent 1.2px), rgba(255, 255, 255, 0.56); background-size: 10px 10px, auto; } .ppt-cadence-top, .ppt-cadence-meta, .ppt-run-log-head, .ppt-run-row { display: flex; align-items: center; justify-content: space-between; gap: var(--momo-space-2, 8px); } .ppt-cadence-top strong { font-size: var(--momo-text-caption, 12px); color: var(--obs-accent); text-align: right; } .ppt-cadence-title { margin-top: var(--momo-space-2, 8px); color: var(--obs-ink); font-size: var(--momo-text-body, 14px); font-weight: var(--momo-font-weight-black, 800); } .ppt-cadence-gate { margin-top: var(--momo-space-1, 4px); color: var(--obs-muted); font-size: var(--momo-text-caption, 12px); } .ppt-cadence-meter { height: 5px; margin: var(--momo-space-3, 12px) 0 var(--momo-space-2, 8px); border-radius: 999px; background: rgba(45, 40, 32, 0.1); overflow: hidden; } .ppt-cadence-meter span { display: block; height: 100%; border-radius: inherit; background: var(--obs-green); } .ppt-cadence-tile.is-partial .ppt-cadence-meter span { background: var(--obs-amber); } .ppt-cadence-tile.is-missing .ppt-cadence-meter span { background: var(--obs-red); } .ppt-cadence-meta { color: var(--obs-muted); font-size: var(--momo-text-caption, 12px); } .ppt-cadence-tile > small { display: block; margin-top: var(--momo-space-2, 8px); line-height: 1.5; } .ppt-coverage-score { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--momo-space-3, 12px); } .ppt-coverage-score > div, .ppt-coverage-row { border: 1px solid var(--obs-line); border-radius: var(--momo-radius-md, 6px); background: rgba(255, 255, 255, 0.54); } .ppt-coverage-score > div { padding: var(--momo-space-3, 12px); } .ppt-coverage-score strong { display: block; margin-top: var(--momo-space-1, 4px); color: var(--obs-ink); font-size: var(--momo-text-headline, 22px); line-height: 1.1; } .ppt-coverage-list { display: grid; grid-template-columns: 1fr; gap: var(--momo-space-2, 8px); } .ppt-coverage-list-head { display: flex; align-items: center; justify-content: space-between; gap: var(--momo-space-3, 12px); padding: var(--momo-space-1, 4px) var(--momo-space-1, 4px) 0; } .ppt-coverage-list-head small { color: var(--obs-muted); font-size: var(--momo-text-caption, 12px); } .ppt-coverage-row { display: grid; grid-template-columns: minmax(180px, 0.9fr) minmax(300px, 1.1fr) auto; align-items: center; gap: var(--momo-space-3, 12px); min-height: 72px; padding: var(--momo-space-3, 12px); } .ppt-coverage-row.is-ready { border-left: 3px solid rgba(76, 137, 91, 0.72); } .ppt-coverage-row.is-partial, .ppt-coverage-row.is-planned, .ppt-coverage-row.is-missing { border-left: 3px solid rgba(184, 121, 47, 0.72); } .ppt-coverage-row.is-error, .ppt-coverage-row.is-missing_file { border-left: 3px solid rgba(196, 84, 75, 0.72); } .ppt-coverage-main, .ppt-coverage-actions { min-width: 0; } .ppt-coverage-row strong { display: block; color: var(--obs-ink); font-size: var(--momo-text-body, 14px); } .ppt-coverage-row small { display: block; color: var(--obs-muted); font-size: var(--momo-text-caption, 12px); line-height: 1.45; } .ppt-coverage-row code { color: var(--obs-ink); font-family: var(--momo-font-mono, "IBM Plex Mono", monospace); font-size: var(--momo-text-caption, 12px); overflow-wrap: anywhere; } .ppt-coverage-signals { display: grid; grid-template-columns: repeat(4, minmax(72px, 1fr)); gap: var(--momo-space-1, 4px); min-width: 0; } .ppt-coverage-signals .ppt-run-status { justify-content: center; width: 100%; } .ppt-coverage-actions { display: flex; justify-content: flex-end; gap: var(--momo-space-2, 8px); flex-wrap: wrap; } .ppt-coverage-actions .btn { display: inline-flex; align-items: center; min-height: 32px; } .ppt-run-log { border-top: 1px solid var(--obs-line); padding-top: var(--momo-space-4, 16px); } .ppt-run-log-head h3 { margin: var(--momo-space-1, 4px) 0 0; font-size: var(--momo-text-body, 14px); font-weight: var(--momo-font-weight-black, 800); } .ppt-run-list { display: grid; gap: var(--momo-space-2, 8px); margin-top: var(--momo-space-3, 12px); } .ppt-run-row { padding: var(--momo-space-2, 8px) var(--momo-space-3, 12px); border: 1px solid var(--obs-line); border-radius: var(--momo-radius-md, 6px); background: rgba(255, 255, 255, 0.5); } .ppt-run-kind, .ppt-run-status { display: inline-flex; align-items: center; min-height: 24px; padding: 0 var(--momo-space-2, 8px); border-radius: 999px; border: 1px solid var(--obs-line); color: var(--obs-accent); font-size: var(--momo-text-caption, 12px); font-weight: var(--momo-font-weight-bold, 700); } .ppt-run-status.is-ready { color: var(--obs-green); border-color: rgba(76, 137, 91, 0.35); } .ppt-run-status.is-partial { color: var(--obs-blue); border-color: rgba(72, 108, 149, 0.35); } .ppt-run-status.is-missing, .ppt-run-status.is-planned { color: var(--obs-amber); border-color: rgba(184, 121, 47, 0.35); } .ppt-run-status.is-error, .ppt-run-status.is-missing_file { color: var(--obs-red); border-color: rgba(196, 84, 75, 0.35); } .ppt-run-target { color: var(--obs-muted); min-width: 0; } .ppt-empty { border: 1px dashed var(--obs-line); border-radius: var(--momo-radius-lg, 8px); background: radial-gradient(circle, rgba(45, 40, 32, 0.08) 1px, transparent 1.2px), rgba(255, 255, 255, 0.38); background-size: 10px 10px, auto; color: var(--obs-muted); } .ppt-run-empty { margin-top: var(--momo-space-3, 12px); padding: var(--momo-space-3, 12px); } .ppt-mini, .fix-card { padding: var(--momo-space-3, 12px); border: 1px solid var(--obs-line); border-radius: var(--momo-radius-lg, 8px); background: rgba(255, 255, 255, 0.58); } .fix-card { margin-bottom: var(--momo-space-3, 12px); } .ppt-mini strong { display: block; margin-top: var(--momo-space-1, 4px); font-size: var(--momo-text-headline, 22px); letter-spacing: 0; } .status-good { color: var(--obs-green); } .status-warn { color: var(--obs-amber); } .status-bad { color: var(--obs-red); } .status-blue { color: var(--obs-blue); } .ppt-file-actions { display: flex; gap: var(--momo-space-2, 8px); flex-wrap: wrap; } .ppt-file-actions .btn { display: inline-flex; align-items: center; gap: var(--momo-space-1, 4px); } @media (max-width: 1180px) { .ppt-hero-grid { grid-template-columns: 1fr; } .ppt-command { grid-template-columns: repeat(3, minmax(0, 1fr)); } .ppt-diagnostic-strip, .ppt-aider-status, .ppt-vision-status, .ppt-health-board, .ppt-pipeline-layout { grid-template-columns: 1fr; } .ppt-diagnostic-checks { grid-template-columns: repeat(3, minmax(0, 1fr)); } .ppt-stage-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .ppt-action-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .ppt-issue-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .ppt-deck-rail { grid-template-columns: repeat(2, minmax(0, 1fr)); } .ppt-auto-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .ppt-grid { grid-template-columns: 1fr; } .ppt-coverage-row { grid-template-columns: minmax(180px, 0.8fr) minmax(280px, 1fr); } .ppt-coverage-actions { grid-column: 1 / -1; justify-content: flex-start; } } @media (max-width: 760px) { .ppt-hero { padding: 14px; } .ppt-hero-grid { gap: var(--momo-space-3, 12px); } .ppt-subtitle { margin-bottom: 0; line-height: 1.5; } .ppt-hero-note { font-size: var(--momo-text-caption, 12px); line-height: 1.4; } .ppt-hero-actions { margin-top: var(--momo-space-3, 12px); } .ppt-hero-deck { min-height: 0; gap: var(--momo-space-2, 8px); padding: var(--momo-space-3, 12px); } .ppt-hero-deck-run { padding-top: var(--momo-space-2, 8px); } .ppt-auto-grid, .ppt-mini-grid, .ppt-deck-rail, .ppt-stage-grid, .ppt-action-grid, .ppt-issue-grid, .ppt-coverage-score, .ppt-coverage-list { grid-template-columns: 1fr; } .ppt-command--compact { grid-template-columns: repeat(2, minmax(0, 1fr)); } .ppt-command { gap: var(--momo-space-2, 8px); margin-top: var(--momo-space-3, 12px); } .ppt-signal { min-height: 96px; padding: var(--momo-space-2, 8px); } .ppt-value { font-size: var(--momo-text-title, 18px); } .ppt-toolbar { grid-template-columns: 1fr; } .ppt-type-tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); } .ppt-panel-head, .ppt-panel-actions, .ppt-table-title, .ppt-workbench-head, .ppt-workbench-actions, .ppt-issue-metrics, .ppt-preview-head, .ppt-run-log-head, .ppt-run-row { flex-direction: column; align-items: flex-start; } .ppt-coverage-list-head, .ppt-coverage-row { align-items: stretch; } .ppt-coverage-list-head { flex-direction: column; gap: 0; } .ppt-coverage-row { grid-template-columns: 1fr; min-height: 0; } .ppt-coverage-signals { grid-template-columns: repeat(2, minmax(0, 1fr)); } .ppt-diagnostic-checks { grid-template-columns: 1fr; } .ppt-preview-modal { padding: 0; } .ppt-preview-dialog { width: 100%; height: 100%; max-height: none; border-radius: 0; } .ppt-preview-actions { justify-content: flex-start; } .ppt-preview-frame-wrap iframe { min-height: calc(100vh - 168px); } .ppt-aider-job, .ppt-vision-job { grid-template-columns: 1fr; } }