:root { --ink: #080d0c; --jade: #101d19; --jade-2: #172923; --paper: #f5ecd8; --paper-dim: #c8b99a; --gold: #d5a855; --gold-soft: rgba(213, 168, 85, 0.16); --cyan: #36d8bd; --cyan-soft: rgba(54, 216, 189, 0.13); --line: rgba(245, 236, 216, 0.12); --danger: #ff856d; } * { box-sizing: border-box; } html { background: var(--ink); color: var(--paper); } body { margin: 0; min-height: 100vh; font-family: "Songti SC", "Noto Serif SC", "STSong", ui-serif, Georgia, serif; background: radial-gradient(circle at 14% 0%, rgba(213, 168, 85, 0.13), transparent 26rem), radial-gradient(circle at 82% 8%, rgba(54, 216, 189, 0.11), transparent 24rem), linear-gradient(135deg, rgba(245, 236, 216, 0.035) 0 1px, transparent 1px 34px), var(--ink); } button, input, select { font: inherit; } button { cursor: pointer; } h1, h2, h3, h4, p { margin: 0; } .shell { width: min(1120px, calc(100% - 40px)); min-height: 100vh; margin: 0 auto; padding: 24px 0 96px; } .app-topbar { position: sticky; top: 0; z-index: 20; display: flex; align-items: center; justify-content: space-between; padding: 12px 0 18px; backdrop-filter: blur(18px); } .brand { display: flex; align-items: center; gap: 12px; } .compact-button { border: 0; color: var(--paper); text-align: left; background: transparent; } .seal { display: grid; width: 48px; height: 48px; place-items: center; border: 1px solid var(--gold); border-radius: 50%; color: var(--gold); font-size: 24px; box-shadow: 0 0 30px var(--gold-soft); } .brand small, .kicker, .eyebrow, .section-label { display: block; color: var(--gold); font-family: ui-sans-serif, system-ui, sans-serif; font-size: 11px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; } .brand strong { display: block; margin-top: 2px; font-size: 22px; letter-spacing: 0.08em; } .desktop-nav { display: flex; gap: 8px; padding: 6px; border: 1px solid var(--line); border-radius: 999px; background: rgba(8, 13, 12, 0.6); } .desktop-nav button { min-width: 78px; min-height: 38px; border: 0; border-radius: 999px; color: var(--paper-dim); background: transparent; } .desktop-nav .active { color: #160f07; background: linear-gradient(135deg, #f0d38c, var(--gold)); } .job-banner { position: sticky; top: 78px; z-index: 19; display: flex; align-items: center; gap: 12px; width: 100%; margin-bottom: 18px; padding: 14px 16px; border: 1px solid rgba(54, 216, 189, 0.28); border-radius: 16px; color: var(--paper); text-align: left; background: rgba(17, 36, 31, 0.94); box-shadow: 0 14px 42px rgba(0, 0, 0, 0.24); } .job-banner span:nth-child(2) { flex: 1; color: var(--paper-dim); } .job-banner strong { color: var(--cyan); white-space: nowrap; } .pulse-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--cyan); box-shadow: 0 0 0 0 rgba(54, 216, 189, 0.55); animation: pulse 1.4s infinite; } .home-screen { display: grid; grid-template-columns: minmax(0, 0.95fr) minmax(420px, 1.05fr); gap: 28px; align-items: stretch; min-height: calc(100vh - 150px); padding: 38px; border: 1px solid var(--line); border-radius: 28px; background: linear-gradient(135deg, rgba(16, 29, 25, 0.96), rgba(8, 13, 12, 0.82)), repeating-radial-gradient(circle at 82% 34%, rgba(213, 168, 85, 0.12) 0 1px, transparent 1px 26px); box-shadow: 0 28px 90px rgba(0, 0, 0, 0.32); } .hero-copy { max-width: 620px; } .hero-copy h1 { margin-top: 16px; font-size: clamp(46px, 7vw, 88px); line-height: 1.05; letter-spacing: 0.03em; } .hero-copy p:last-child { margin-top: 20px; color: var(--paper-dim); font-size: 18px; line-height: 1.8; } .service-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; align-self: stretch; } .service-card { display: grid; min-height: 260px; padding: 20px; border: 1px solid rgba(213, 168, 85, 0.22); border-radius: 22px; color: var(--paper); text-align: left; background: linear-gradient(180deg, rgba(213, 168, 85, 0.12), rgba(54, 216, 189, 0.05)), rgba(8, 13, 12, 0.42); } .service-card span { justify-self: start; align-self: start; padding: 6px 10px; border-radius: 999px; color: var(--cyan); font: 700 12px ui-sans-serif, system-ui, sans-serif; background: var(--cyan-soft); } .service-card strong { align-self: end; color: var(--gold); font-size: 44px; line-height: 1; } .service-card em { color: var(--paper); font-size: 20px; font-style: normal; } .service-card small { color: var(--paper-dim); font-size: 14px; line-height: 1.65; } .service-card.muted { opacity: 0.68; } .home-stats { display: grid; grid-column: 1 / -1; grid-template-columns: minmax(220px, 0.75fr) minmax(0, 1.25fr); align-items: center; gap: 18px; padding: 18px; border: 1px solid rgba(54, 216, 189, 0.18); border-radius: 22px; background: rgba(8, 13, 12, 0.32); } .home-stats h2 { margin-top: 8px; font-size: 28px; } .workspace { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 18px; } .upload-card, .side-panel, .archive-screen, .report-panel, .mini-card { border: 1px solid var(--line); border-radius: 24px; background: rgba(16, 29, 25, 0.86); box-shadow: 0 18px 54px rgba(0, 0, 0, 0.24); } .upload-card, .archive-screen, .report-panel, .mini-card { padding: 24px; } .side-panel { display: grid; gap: 14px; align-content: start; border: 0; background: transparent; box-shadow: none; } .upload-card h2, .archive-head h2, .report-panel h3 { margin-top: 10px; font-size: 34px; } .upload-card > p, .mini-card p { margin-top: 10px; color: var(--paper-dim); line-height: 1.75; } .drop-zone { position: relative; display: grid; min-height: 360px; margin-top: 20px; place-items: center; border: 1px dashed rgba(213, 168, 85, 0.5); border-radius: 22px; background: linear-gradient(135deg, rgba(213, 168, 85, 0.08), rgba(54, 216, 189, 0.04)), rgba(8, 13, 12, 0.54); overflow: hidden; } .drop-zone input { position: absolute; inset: 0; opacity: 0; cursor: pointer; } .drop-zone span { display: grid; gap: 8px; text-align: center; } .drop-zone strong { color: var(--gold); font-size: 24px; } .drop-zone small { color: var(--paper-dim); font: 600 13px ui-sans-serif, system-ui, sans-serif; } .drop-zone img { width: 100%; height: 100%; max-height: 460px; object-fit: cover; } .segmented { display: flex; gap: 10px; margin-top: 16px; } .segmented button, .primary-action, .ghost-action, .delete-action { min-height: 46px; border: 1px solid var(--line); border-radius: 999px; color: var(--paper); background: rgba(245, 236, 216, 0.045); } .segmented button { flex: 1; } .segmented .active, .primary-action { border-color: rgba(213, 168, 85, 0.82); color: #180f06; font-weight: 700; background: linear-gradient(135deg, #f0d38c, var(--gold)); } .primary-action, .ghost-action { padding: 0 22px; } .upload-card .primary-action { width: 100%; margin-top: 16px; } .form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-top: 20px; } .field, .checkbox-line { display: grid; gap: 8px; } .field-wide { grid-column: 1 / -1; } .field span { color: var(--gold); font: 700 12px ui-sans-serif, system-ui, sans-serif; letter-spacing: 0.08em; } .field input, .field select { width: 100%; min-height: 46px; border: 1px solid var(--line); border-radius: 14px; color: var(--paper); background: rgba(8, 13, 12, 0.48); padding: 0 13px; } .field input:disabled { color: rgba(245, 236, 216, 0.42); } .checkbox-line { align-content: end; grid-template-columns: auto 1fr; align-items: center; min-height: 46px; color: var(--paper-dim); } .checkbox-line input { width: 18px; height: 18px; accent-color: var(--gold); } .primary-action:disabled { opacity: 0.72; cursor: wait; } .ghost-action { border-color: rgba(54, 216, 189, 0.24); color: var(--cyan); } .error { margin-top: 14px; color: var(--danger); line-height: 1.6; } .stats { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; } .stat { padding: 16px; border: 1px solid var(--line); border-radius: 18px; background: rgba(245, 236, 216, 0.04); } .stat strong { display: block; color: var(--cyan); font-size: 32px; } .stat span, .empty { color: var(--paper-dim); } .archive-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 18px; } .report-list { display: grid; gap: 12px; } .archive-item { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: stretch; gap: 10px; border: 1px solid var(--line); border-radius: 18px; background: rgba(8, 13, 12, 0.44); overflow: hidden; } .archive-item.is-failed { border-color: rgba(255, 107, 74, 0.28); } .archive-open { display: flex; justify-content: space-between; gap: 18px; width: 100%; padding: 16px; border: 0; color: var(--paper); text-align: left; background: transparent; } .archive-open strong, .archive-open small, .archive-open b { display: block; } .archive-open small { margin-top: 5px; color: var(--paper-dim); } .archive-open b { max-width: 760px; margin-top: 8px; color: rgba(245, 236, 216, 0.76); font-weight: 400; line-height: 1.55; } .archive-actions { display: grid; align-content: center; justify-items: end; gap: 8px; padding: 14px 16px 14px 0; } .archive-actions em { padding: 6px 10px; border: 1px solid rgba(54, 216, 189, 0.18); border-radius: 999px; color: var(--cyan); background: rgba(54, 216, 189, 0.08); font-style: normal; font-weight: 700; white-space: nowrap; } .archive-item.is-failed .archive-actions em { border-color: rgba(255, 107, 74, 0.2); color: #ff8a70; background: rgba(255, 107, 74, 0.08); } .archive-delete { min-height: 30px; padding: 0 10px; border: 1px solid transparent; border-radius: 999px; color: rgba(245, 236, 216, 0.42); background: transparent; font-weight: 700; opacity: 0.72; } .archive-delete:hover { border-color: rgba(255, 107, 74, 0.24); color: #ffad9d; background: rgba(255, 107, 74, 0.08); opacity: 1; } .report-panel { margin-top: 18px; } .report-hero { display: grid; grid-template-columns: 1fr 160px; gap: 22px; padding: 22px; border: 1px solid rgba(213, 168, 85, 0.22); border-radius: 20px; background: linear-gradient(135deg, rgba(213, 168, 85, 0.1), rgba(54, 216, 189, 0.06)); } .report-hero p:not(.section-label) { margin-top: 14px; color: var(--paper-dim); font-size: 17px; line-height: 1.8; } .score { display: grid; place-content: center; aspect-ratio: 1; border: 1px solid rgba(54, 216, 189, 0.3); border-radius: 50%; color: var(--cyan); text-align: center; } .score strong { font-size: 56px; line-height: 1; } .score span { color: var(--paper-dim); } .keywords, .observations { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 16px; } .keywords span, .observations span { padding: 7px 12px; border: 1px solid rgba(54, 216, 189, 0.24); border-radius: 999px; color: var(--cyan); background: var(--cyan-soft); } .bazi-chart { margin-top: 18px; padding: 18px; border: 1px solid rgba(213, 168, 85, 0.2); border-radius: 18px; background: rgba(15, 22, 19, 0.62); } .bazi-chart-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; } .bazi-chart-head h4 { color: var(--paper); font-size: 22px; } .bazi-chart-head > span { padding: 7px 12px; border: 1px solid rgba(213, 168, 85, 0.24); border-radius: 999px; color: var(--gold); background: var(--gold-soft); } .pillar-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 14px; } .pillar { padding: 14px; border: 1px solid var(--line); border-radius: 14px; text-align: center; background: rgba(8, 13, 12, 0.42); } .pillar span, .chart-facts span, .wuxing-bar span, .wuxing-bar em { color: var(--paper-dim); } .pillar strong { display: block; margin-top: 6px; color: var(--paper); font-size: 24px; letter-spacing: 0; } .chart-facts { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; } .chart-facts span { padding: 7px 10px; border-radius: 10px; background: rgba(245, 236, 216, 0.06); } .wuxing-bars { display: grid; gap: 9px; margin-top: 14px; } .wuxing-bar { display: grid; grid-template-columns: 28px 1fr 20px; align-items: center; gap: 10px; } .wuxing-bar i { display: block; height: 8px; border-radius: 999px; background: linear-gradient(90deg, var(--gold), var(--cyan)); } .dimension-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-top: 18px; } .dimension-card, .summary-list { border: 1px solid var(--line); border-radius: 18px; background: rgba(8, 13, 12, 0.38); } .dimension-card { padding: 18px; } .dimension-head { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 10px; } .dimension-head span { color: rgba(245, 236, 216, 0.42); } .dimension-head strong { font-size: 21px; } .dimension-head em { color: var(--cyan); font-style: normal; } .dimension-card p { margin-top: 12px; color: var(--paper-dim); line-height: 1.72; } .advice { margin-top: 14px; padding: 13px; border-radius: 14px; color: #f0d9a6; line-height: 1.65; background: var(--gold-soft); } .summary-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-top: 16px; } .summary-list { padding: 16px; } .summary-list h4 { color: var(--gold); font-size: 18px; } .summary-list p { margin-top: 10px; color: var(--paper-dim); line-height: 1.65; } .disclaimer { margin-top: 16px; color: rgba(245, 236, 216, 0.56); line-height: 1.7; } .delete-action { margin-top: 14px; padding: 0 18px; color: var(--danger); } .mobile-tabbar { display: none; } @keyframes pulse { 70% { box-shadow: 0 0 0 10px rgba(54, 216, 189, 0); } 100% { box-shadow: 0 0 0 0 rgba(54, 216, 189, 0); } } @media (max-width: 920px) { .home-screen, .workspace, .report-hero, .dimension-grid, .summary-grid { grid-template-columns: 1fr; } .home-screen { min-height: auto; } .home-stats { grid-template-columns: 1fr; } .service-grid { grid-template-columns: repeat(3, minmax(180px, 1fr)); overflow-x: auto; padding-bottom: 4px; } .score { width: 150px; } } @media (max-width: 640px) { body { background: radial-gradient(circle at 16% 0%, rgba(213, 168, 85, 0.12), transparent 16rem), radial-gradient(circle at 86% 4%, rgba(54, 216, 189, 0.1), transparent 14rem), var(--ink); } .shell { width: 100%; padding: 0 12px 82px; } .app-topbar { padding: 12px 4px; } .desktop-nav { display: none; } .seal { width: 42px; height: 42px; font-size: 20px; } .brand strong { font-size: 19px; } .job-banner { top: 66px; margin: 0 0 12px; padding: 12px; border-radius: 14px; font-size: 13px; } .job-banner strong { display: none; } .home-screen { display: flex; min-height: calc(100vh - 154px); flex-direction: column; justify-content: space-between; gap: 18px; padding: 22px 16px; border-radius: 24px; } .hero-copy h1 { margin-top: 14px; font-size: 42px; line-height: 1.12; } .hero-copy p:last-child { margin-top: 14px; font-size: 15px; line-height: 1.72; } .service-grid { display: grid; grid-template-columns: 1fr; gap: 10px; overflow: visible; } .service-card { min-height: auto; grid-template-columns: auto 1fr auto; align-items: center; gap: 12px; padding: 15px; border-radius: 18px; } .service-card span { grid-column: 3; grid-row: 1 / 3; } .service-card strong { grid-column: 1; grid-row: 1 / 3; font-size: 30px; } .service-card em, .service-card small { grid-column: 2; } .service-card small { display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 2; } .home-stats { gap: 12px; padding: 15px; border-radius: 18px; } .home-stats h2 { font-size: 24px; } .workspace { gap: 12px; } .upload-card, .archive-screen, .report-panel, .mini-card { padding: 16px; border-radius: 20px; } .side-panel { gap: 12px; } .upload-card h2, .archive-head h2, .report-panel h3 { font-size: 28px; } .upload-card > p, .mini-card p { font-size: 14px; } .drop-zone { min-height: 250px; margin-top: 16px; border-radius: 18px; } .drop-zone img { max-height: 320px; } .segmented { gap: 8px; } .segmented button, .primary-action, .ghost-action, .delete-action { min-height: 44px; font-size: 14px; } .form-grid { grid-template-columns: 1fr; gap: 12px; } .field-wide { grid-column: auto; } .field input, .field select { min-height: 44px; font-size: 14px; } .archive-head { align-items: flex-start; } .archive-head .ghost-action { padding: 0 14px; white-space: nowrap; } .archive-open { padding: 14px 0 14px 14px; } .archive-open b { display: none; } .archive-open small, .archive-actions em { font-size: 12px; } .archive-actions { padding: 12px 12px 12px 0; } .archive-delete { min-height: 28px; padding: 0 9px; font-size: 12px; } .report-panel { margin-top: 12px; } .report-hero { gap: 16px; padding: 16px; border-radius: 18px; } .report-hero p:not(.section-label) { font-size: 15px; line-height: 1.72; } .score { width: 126px; } .score strong { font-size: 46px; } .dimension-card, .summary-list { padding: 15px; } .bazi-chart { padding: 15px; } .bazi-chart-head { display: grid; } .pillar-row { grid-template-columns: repeat(2, minmax(0, 1fr)); } .pillar strong { font-size: 21px; } .dimension-head { grid-template-columns: auto 1fr; } .dimension-head em { grid-column: 2; justify-self: start; font-size: 13px; } .dimension-card p, .summary-list p, .advice, .disclaimer { font-size: 14px; line-height: 1.7; } .mobile-tabbar { position: fixed; right: 12px; bottom: 12px; left: 12px; z-index: 30; display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; padding: 8px; border: 1px solid var(--line); border-radius: 22px; background: rgba(8, 13, 12, 0.92); box-shadow: 0 18px 46px rgba(0, 0, 0, 0.36); backdrop-filter: blur(18px); } .mobile-tabbar button { display: grid; gap: 2px; min-height: 48px; place-items: center; border: 0; border-radius: 16px; color: var(--paper-dim); background: transparent; font: 700 11px ui-sans-serif, system-ui, sans-serif; } .mobile-tabbar span { font-family: "Songti SC", "STSong", ui-serif, Georgia, serif; font-size: 18px; } .mobile-tabbar .active { color: #160f07; background: linear-gradient(135deg, #f0d38c, var(--gold)); } }