:root { --bg: #f4efe6; --panel: rgba(255, 251, 245, 0.88); --panel-border: rgba(96, 65, 35, 0.12); --ink: #1d1b19; --muted: #665a4b; --accent: #aa4b1d; --accent-strong: #7d2f0c; --accent-soft: #f0d4c0; --success: #215f3f; --warning: #9d620e; --error: #9f2d2d; --shadow: 0 18px 60px rgba(40, 26, 13, 0.14); } * { box-sizing: border-box; } body { margin: 0; min-height: 100vh; font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; color: var(--ink); background: radial-gradient(circle at top left, rgba(205, 114, 54, 0.24), transparent 30%), radial-gradient(circle at top right, rgba(155, 90, 40, 0.16), transparent 25%), linear-gradient(180deg, #faf6ef 0%, #efe5d7 100%); } .page-shell { width: min(1200px, calc(100% - 32px)); margin: 0 auto; padding: 32px 0 48px; } .hero { display: grid; grid-template-columns: 1.4fr 0.9fr; gap: 20px; margin-bottom: 24px; } .hero-copy, .hero-note, .panel { border: 1px solid var(--panel-border); border-radius: 24px; background: var(--panel); backdrop-filter: blur(12px); box-shadow: var(--shadow); } .hero-copy { padding: 28px; } .hero-note { padding: 24px; display: flex; flex-direction: column; justify-content: flex-end; gap: 8px; color: var(--muted); } .eyebrow { margin: 0 0 12px; color: var(--accent-strong); font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; } h1 { margin: 0; font-size: clamp(2rem, 4vw, 3.4rem); line-height: 1.02; } .hero-text { margin: 18px 0 0; max-width: 52rem; color: var(--muted); line-height: 1.65; } .grid { display: grid; grid-template-columns: 0.92fr 1.08fr; gap: 20px; } .panel { padding: 22px; } .panel-chat { grid-column: 1 / -1; } .panel-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 18px; } .panel-head h2, .result-block h3 { margin: 0; } .badge { padding: 6px 10px; border-radius: 999px; background: var(--accent-soft); color: var(--accent-strong); font-size: 0.85rem; } .mono { font-family: "Consolas", "SFMono-Regular", monospace; font-size: 0.78rem; color: var(--muted); } .stack { display: grid; gap: 14px; } .field { display: grid; gap: 8px; } .field span { font-weight: 600; } select, input[type="file"], textarea, button { border-radius: 16px; border: 1px solid rgba(79, 56, 35, 0.16); font: inherit; } select, textarea, input[type="file"] { width: 100%; padding: 14px 16px; background: rgba(255, 255, 255, 0.78); } .upload-box { padding: 14px; border: 1px dashed rgba(106, 69, 35, 0.3); border-radius: 18px; background: rgba(255, 247, 240, 0.72); } .upload-box small { color: var(--muted); } button { padding: 14px 18px; background: linear-gradient(135deg, var(--accent) 0%, var(--accent-strong) 100%); color: #fff8f3; font-weight: 700; cursor: pointer; transition: transform 140ms ease, opacity 140ms ease; } button:hover:not(:disabled) { transform: translateY(-1px); } button:disabled, textarea:disabled { opacity: 0.6; cursor: not-allowed; } .status-card { margin-top: 16px; padding: 16px; border-radius: 18px; border: 1px solid transparent; } .status-card p { margin: 8px 0 0; } .status-card.muted { background: rgba(126, 112, 97, 0.08); border-color: rgba(126, 112, 97, 0.16); } .status-card.running { background: rgba(200, 146, 39, 0.1); border-color: rgba(200, 146, 39, 0.22); } .status-card.success { background: rgba(33, 95, 63, 0.09); border-color: rgba(33, 95, 63, 0.18); } .status-card.error { background: rgba(159, 45, 45, 0.09); border-color: rgba(159, 45, 45, 0.18); } .scores-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; } .score-card { padding: 14px; border-radius: 18px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.74), rgba(244, 233, 220, 0.88)); border: 1px solid rgba(96, 65, 35, 0.1); } .score-card span { display: block; color: var(--muted); margin-bottom: 8px; } .score-card strong { font-size: 1.8rem; } .result-block { margin-top: 18px; } .chips { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 12px; } .chip { padding: 8px 12px; border-radius: 999px; background: #fffaf5; border: 1px solid rgba(96, 65, 35, 0.1); } .empty { color: var(--muted); } .answer-box { white-space: pre-wrap; margin-top: 12px; padding: 16px; border-radius: 18px; background: rgba(255, 255, 255, 0.75); border: 1px solid rgba(96, 65, 35, 0.1); font: inherit; line-height: 1.7; } .chat-log { min-height: 240px; max-height: 460px; overflow-y: auto; display: grid; gap: 12px; padding: 4px 0; } .message { max-width: min(88%, 760px); padding: 14px 16px; border-radius: 18px; line-height: 1.65; } .message-system { background: rgba(125, 47, 12, 0.08); } .message-user { justify-self: end; background: rgba(170, 75, 29, 0.12); } .message-assistant { background: rgba(255, 255, 255, 0.78); border: 1px solid rgba(96, 65, 35, 0.12); } .chat-form { display: grid; gap: 12px; margin-top: 18px; } @media (max-width: 960px) { .hero, .grid { grid-template-columns: 1fr; } .scores-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 640px) { .page-shell { width: min(100% - 20px, 1000px); padding-top: 16px; } .hero-copy, .hero-note, .panel { border-radius: 18px; } .scores-grid { grid-template-columns: 1fr 1fr; } }