:root { --aimo-bg: #eef4fb; --aimo-card: rgba(255, 255, 255, 0.94); --aimo-card-strong: #ffffff; --aimo-line: rgba(191, 219, 254, 0.65); --aimo-ink: #0f172a; --aimo-copy: #475569; --aimo-brand: #1d4ed8; --aimo-brand-strong: #0f172a; --aimo-good: #047857; --aimo-warn: #b45309; --aimo-bad: #b91c1c; } * { box-sizing: border-box; } html, body { margin: 0; min-height: 100%; background: radial-gradient(circle at top left, rgba(125, 211, 252, 0.18), transparent 24%), radial-gradient(circle at top right, rgba(59, 130, 246, 0.12), transparent 18%), linear-gradient(180deg, #f8fbff 0%, var(--aimo-bg) 100%); color: var(--aimo-ink); font-family: Arial, sans-serif; } body { padding: 22px 16px 40px; } .app-shell { width: min(1760px, calc(100vw - 32px)); margin: 0 auto; display: flex; flex-direction: column; gap: 22px; } .hero { display: flex; flex-direction: row; align-items: center; gap: 14px; justify-content: center; text-align: center; } .hero-logo { width: 68px; height: 68px; object-fit: contain; } .hero-title { font: 800 46px/1.02 "Trebuchet MS", Arial, sans-serif; letter-spacing: -0.04em; } .notice { position: relative; overflow: visible; width: min(50%, 800px); margin: 0 auto; border: 1px solid rgba(251, 191, 36, 0.42); border-radius: 22px; background: linear-gradient(120deg, rgba(255, 251, 235, 0.98), rgba(254, 243, 199, 0.96)); box-shadow: 0 20px 60px rgba(234, 179, 8, 0.12); padding: 17px 22px; text-align: center; color: #92400e; font: 700 15px/1.6 Arial, sans-serif; will-change: box-shadow; } .notice::before { content: ""; position: absolute; inset: 0; border-radius: inherit; background: inherit; border: inherit; box-shadow: inherit; z-index: 0; transform-origin: center center; animation: noticeFramePulse 4.8s ease-in-out infinite; pointer-events: none; } .notice > * { position: relative; z-index: 1; } .heart-mark { color: #dc2626; } @keyframes noticeFramePulse { 0% { transform: translateY(0) scale(1); box-shadow: 0 20px 60px rgba(234, 179, 8, 0.12); } 50% { transform: translateY(-4px) scale(1.015); box-shadow: 0 24px 72px rgba(234, 179, 8, 0.18); } 100% { transform: translateY(0) scale(1); box-shadow: 0 20px 60px rgba(234, 179, 8, 0.12); } } .main-grid { display: grid; grid-template-columns: minmax(460px, 560px) minmax(860px, 1fr); gap: 22px; align-items: stretch; } .card { border: 1px solid var(--aimo-line); border-radius: 28px; background: var(--aimo-card); box-shadow: 0 28px 80px rgba(15, 23, 42, 0.09); overflow: hidden; backdrop-filter: blur(8px); } .left-card { padding: 22px; display: flex; flex-direction: column; gap: 16px; } .right-card { padding: 16px; min-height: 800px; display: flex; flex-direction: column; gap: 12px; } .output-label { padding: 6px 10px 0; color: var(--aimo-copy); font: 700 16px/1.2 Arial, sans-serif; } .section-title { margin: 0; color: var(--aimo-ink); font: 700 17px/1.3 Arial, sans-serif; } .section-title.small { font-size: 15px; } .section-copy { margin: 0; color: var(--aimo-copy); font: 500 14px/1.7 Arial, sans-serif; } .input-card { border: 1px solid rgba(191, 219, 254, 0.62); border-radius: 24px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(248, 250, 252, 0.92)); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.8); padding: 16px; display: flex; flex-direction: column; gap: 14px; } .preview-frame { position: relative; min-height: 360px; border-radius: 22px; overflow: hidden; border: 1px solid rgba(226, 232, 240, 0.95); background: linear-gradient(180deg, #f8fafc, #e2e8f0); } .preview-frame video { display: block; width: 100%; height: 360px; object-fit: contain; object-position: center; background: #0f172a; } .preview-empty { min-height: 360px; display: flex; align-items: center; justify-content: center; text-align: center; padding: 26px; color: #475569; font: 600 16px/1.7 Arial, sans-serif; } .preview-toolbar { position: absolute; top: 12px; right: 12px; display: flex; gap: 8px; } .ghost-button, .pill-button, .cta-button, .primary-button { appearance: none; border: 0; border-radius: 999px; font: 700 15px/1 Arial, sans-serif; cursor: pointer; transition: transform 120ms ease, opacity 120ms ease, box-shadow 120ms ease; } .ghost-button, .pill-button { padding: 11px 16px; } .ghost-button { background: rgba(255, 255, 255, 0.92); color: #0f172a; box-shadow: 0 10px 24px rgba(15, 23, 42, 0.12); } .ghost-button[disabled], .pill-button[disabled], .primary-button[disabled] { opacity: 0.5; cursor: not-allowed; transform: none; } .upload-row { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; } .pill-button { background: #eef2ff; color: #1e3a8a; } .pill-button.file-label { position: relative; overflow: hidden; } .pill-button.file-label input { position: absolute; inset: 0; opacity: 0; cursor: pointer; } .targets { display: flex; gap: 16px; } .target-chip { flex: 1 1 0; border: 1px solid rgba(203, 213, 225, 0.92); border-radius: 16px; background: rgba(255, 255, 255, 0.84); padding: 14px 16px; display: flex; align-items: center; gap: 10px; font: 600 15px/1.3 Arial, sans-serif; } .target-chip.is-required { opacity: 0.92; } .target-chip input { width: 16px; height: 16px; } .start-row { display: flex; gap: 12px; align-items: center; justify-content: center; } .primary-button { min-height: 56px; min-width: 196px; padding: 0 24px; display: inline-flex; align-items: center; justify-content: center; text-align: center; background: linear-gradient(90deg, var(--aimo-brand-strong), var(--aimo-brand)); color: #f8fafc; box-shadow: 0 18px 36px rgba(29, 78, 216, 0.2); } .status-card { border-radius: 16px; border: 1px solid rgba(148, 163, 184, 0.24); background: rgba(241, 245, 249, 0.96); color: #1e293b; padding: 16px 18px; font: 500 15px/1.65 Arial, sans-serif; } .status-card.is-success { background: rgba(236, 253, 245, 0.98); color: var(--aimo-good); border-color: rgba(16, 185, 129, 0.18); } .status-card.is-warning { background: rgba(255, 247, 237, 0.98); color: var(--aimo-warn); border-color: rgba(251, 146, 60, 0.18); } .status-card.is-error { background: rgba(254, 242, 242, 0.98); color: var(--aimo-bad); border-color: rgba(248, 113, 113, 0.18); } .examples-scroller { display: flex; gap: 12px; overflow-x: auto; overflow-y: hidden; padding-bottom: 4px; } .example-card { position: relative; flex: 0 0 104px; width: 104px; min-width: 104px; height: 96px; border-radius: 18px; overflow: hidden; border: 1px solid rgba(191, 219, 254, 0.68); background: rgba(255, 255, 255, 0.96); box-shadow: 0 16px 30px rgba(15, 23, 42, 0.06); cursor: pointer; } .example-card img { display: block; width: 100%; height: 100%; object-fit: cover; } .example-card.is-selected { border-color: rgba(37, 99, 235, 0.85); box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.18), 0 16px 30px rgba(15, 23, 42, 0.06); } .example-card.is-selected::after { content: "\2713"; position: absolute; top: 8px; left: 8px; width: 22px; height: 22px; border-radius: 999px; background: rgba(15, 23, 42, 0.92); color: #f8fafc; display: flex; align-items: center; justify-content: center; font: 700 14px/1 Arial, sans-serif; box-shadow: 0 8px 18px rgba(15, 23, 42, 0.18); } .viewer-shell { position: relative; min-height: 840px; height: 840px; flex: 1 1 auto; border: 1px solid rgba(191, 219, 254, 0.52); border-radius: 28px; background: linear-gradient(180deg, #ffffff, #eff6ff); box-shadow: 0 30px 90px rgba(15, 23, 42, 0.09); overflow: hidden; } .viewer-frame { width: 100%; height: 100%; border: 0; background: #020617; display: none; } .viewer-frame.is-visible { display: block; } .viewer-overlay { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; text-align: center; padding: 24px; color: #334155; font: 600 16px/1.75 Arial, sans-serif; background: radial-gradient(circle at top, rgba(125, 211, 252, 0.15), transparent 30%), linear-gradient(180deg, #f8fafc, #e2e8f0); } .cta { border: 1px solid rgba(191, 219, 254, 0.5); border-radius: 28px; background: radial-gradient(circle at top left, rgba(125, 211, 252, 0.24), transparent 34%), linear-gradient(135deg, rgba(255, 255, 255, 0.96), rgba(239, 246, 255, 0.96)); box-shadow: 0 28px 80px rgba(15, 23, 42, 0.09); margin-top: 10px; padding: 26px 28px; text-align: center; } .cta h2 { margin: 0; font: 700 24px/1.1 "Trebuchet MS", Arial, sans-serif; } .cta p { margin: 12px auto 18px; max-width: 760px; color: var(--aimo-copy); font: 500 14px/1.7 Arial, sans-serif; } .cta-button { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-width: 192px; padding: 13px 22px; background: #0f172a; color: #f8fafc; text-decoration: none; box-shadow: 0 14px 28px rgba(15, 23, 42, 0.18); } .cta-button-icon { display: inline-flex; align-items: center; justify-content: center; font-size: 16px; line-height: 1; } .cta-button-label { display: inline-flex; align-items: center; } .modal-backdrop { position: fixed; inset: 0; z-index: 12000; display: flex; align-items: center; justify-content: center; padding: 24px; background: rgba(15, 23, 42, 0.48); backdrop-filter: blur(8px); } .modal-card { width: min(100%, 460px); border-radius: 24px; border: 1px solid rgba(148, 163, 184, 0.22); background: rgba(255, 255, 255, 0.98); box-shadow: 0 32px 80px rgba(15, 23, 42, 0.28); padding: 20px; color: #0f172a; display: flex; flex-direction: column; } .modal-card.is-warning { border-color: rgba(251, 146, 60, 0.3); } .modal-card.is-error { border-color: rgba(248, 113, 113, 0.3); } .modal-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; } .modal-close { width: 38px; min-width: 38px; height: 38px; padding: 0; border-radius: 999px; box-shadow: none; font: 700 24px/1 Arial, sans-serif; } .modal-body { margin: 14px 0 0; } .modal-body p { margin: 0; } .modal-actions { display: flex; justify-content: center; align-items: center; width: 100%; gap: 10px; flex-wrap: wrap; margin-top: 18px; } .modal-cta { display: inline-flex; align-items: center; justify-content: center; text-decoration: none; } @media (max-width: 1220px) { .app-shell { width: min(1420px, calc(100vw - 20px)); } .notice { width: min(100%, 780px); } .main-grid { grid-template-columns: 1fr; } .right-card, .viewer-shell, .viewer-frame { min-height: clamp(520px, 72vh, 700px); height: clamp(520px, 72vh, 700px); } } @media (max-width: 768px) { body { padding: 16px 10px 28px; } .app-shell { width: min(100vw - 20px, 100%); gap: 16px; } .hero { flex-direction: column; gap: 8px; } .hero-title { font-size: 38px; } .notice { width: min(100%, 560px); padding: 15px 16px; } .left-card, .right-card { padding: 14px; } .right-card { min-height: auto; } .viewer-shell { min-height: min(70vh, 580px); height: min(70vh, 580px); border-radius: 22px; } .viewer-frame { height: 100%; } .preview-frame, .preview-frame video, .preview-empty { min-height: 260px; height: 260px; } .targets { flex-direction: column; } .target-chip { width: 100%; } .start-row { flex-direction: column; align-items: stretch; } .primary-button { width: 100%; } .cta-button { width: 100%; } }