:root { --bg-1: #f5f1e7; --bg-2: #eedad5; --bg-3: #e7efe8; --ink: #2b1f1f; --ink-soft: #4b3d3d; --accent: #bf3a2b; --accent-dark: #8f2b22; --sand: #f9f4ec; --shadow: rgba(34, 26, 26, 0.12); --border: rgba(45, 33, 33, 0.18); } * { box-sizing: border-box; } body { margin: 0; min-height: 100vh; color: var(--ink); background: radial-gradient(circle at 10% 20%, var(--bg-3), transparent 55%), radial-gradient(circle at 80% 10%, var(--bg-2), transparent 50%), linear-gradient(140deg, var(--bg-1), #fff8f2 60%, #f0e2d8 100%); font-family: "Iowan Old Style", "Palatino", "Book Antiqua", "Times New Roman", serif; } .background-orbit { position: fixed; inset: -30% 10% auto auto; width: 60vw; height: 60vw; background: conic-gradient(from 120deg, rgba(191, 58, 43, 0.2), transparent, rgba(91, 44, 120, 0.18)); border-radius: 50%; filter: blur(10px); opacity: 0.6; z-index: 0; animation: slow-spin 40s linear infinite; } .background-glow { position: fixed; inset: auto auto -15% -10%; width: 55vw; height: 55vw; background: radial-gradient(circle, rgba(191, 58, 43, 0.18), transparent 70%); border-radius: 50%; filter: blur(20px); z-index: 0; } @keyframes slow-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .hero { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(280px, 1.2fr) minmax(280px, 0.9fr); gap: 32px; padding: 72px 8vw 48px; align-items: center; } .hero-copy h1 { font-family: "Futura", "Gill Sans", "Optima", "Trebuchet MS", sans-serif; font-size: clamp(2.2rem, 4vw, 3.4rem); margin: 0 0 12px; letter-spacing: 0.02em; } .hero-kicker { text-transform: uppercase; letter-spacing: 0.18em; font-size: 0.75rem; font-weight: 600; color: var(--accent-dark); margin: 0 0 12px; } .hero-sub { font-size: 1.05rem; line-height: 1.7; color: var(--ink-soft); max-width: 36ch; } .hero-card { background: rgba(255, 255, 255, 0.75); border: 1px solid var(--border); border-radius: 24px; padding: 28px; box-shadow: 0 24px 60px var(--shadow); backdrop-filter: blur(8px); animation: rise-in 0.8s ease; } @keyframes rise-in { from { transform: translateY(16px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .file-drop { display: flex; flex-direction: column; gap: 8px; padding: 24px; border: 1.5px dashed var(--accent); border-radius: 18px; background: var(--sand); cursor: pointer; transition: transform 0.2s ease, box-shadow 0.2s ease; } .file-drop:hover { transform: translateY(-2px); box-shadow: 0 10px 20px rgba(191, 58, 43, 0.15); } .file-drop input { display: none; } .file-title { font-size: 1.1rem; font-weight: 600; } .file-hint { font-size: 0.9rem; color: var(--ink-soft); } .controls { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 16px; margin: 20px 0; } .controls label { display: flex; flex-direction: column; gap: 6px; font-size: 0.9rem; color: var(--ink-soft); } select { border: 1px solid var(--border); border-radius: 12px; padding: 10px 12px; font-size: 0.95rem; background: white; color: var(--ink); } .primary { width: 100%; border: none; border-radius: 14px; padding: 12px 16px; font-size: 1rem; font-weight: 600; color: white; background: linear-gradient(120deg, var(--accent), #e25f4f); cursor: pointer; transition: transform 0.2s ease, box-shadow 0.2s ease; } .primary:hover { transform: translateY(-1px); box-shadow: 0 12px 24px rgba(191, 58, 43, 0.25); } .status { margin-top: 12px; font-size: 0.9rem; color: var(--ink-soft); } .content { position: relative; z-index: 1; padding: 0 8vw 80px; display: flex; flex-direction: column; gap: 28px; } .preview, .result { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 24px; } .panel { background: rgba(255, 255, 255, 0.78); border-radius: 20px; border: 1px solid var(--border); padding: 20px; box-shadow: 0 18px 40px rgba(43, 31, 31, 0.08); backdrop-filter: blur(6px); } .panel h2 { margin: 0 0 12px; font-family: "Futura", "Gill Sans", "Optima", "Trebuchet MS", sans-serif; } .panel-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; } .ghost { text-decoration: none; font-size: 0.85rem; color: var(--accent-dark); border: 1px solid var(--border); padding: 6px 10px; border-radius: 999px; background: white; } .image-frame { position: relative; border-radius: 16px; overflow: hidden; background: #f6efea; min-height: 260px; display: grid; place-items: center; } .image-frame img { width: 100%; height: auto; display: none; } .image-frame.show img { display: block; } .placeholder { color: var(--ink-soft); font-size: 0.95rem; } pre { background: #1f1717; color: #f7ece8; padding: 16px; border-radius: 16px; min-height: 240px; overflow: auto; font-size: 0.85rem; line-height: 1.6; } .tips ul { margin: 0; padding-left: 0; list-style: none; color: var(--ink-soft); line-height: 1.7; } .tips li + li { margin-top: 4px; } @media (max-width: 960px) { .hero { grid-template-columns: 1fr; padding: 56px 6vw 36px; } .hero-copy h1 { font-size: 2.4rem; } }