diff --git a/public/assets/qr-contact.png b/public/assets/qr-contact.png new file mode 100644 index 0000000..eaad566 Binary files /dev/null and b/public/assets/qr-contact.png differ diff --git a/src/App.css b/src/App.css index 3507dba..100eb56 100644 --- a/src/App.css +++ b/src/App.css @@ -1188,6 +1188,14 @@ blockquote cite { font-weight: 800; } +.contact-phone { + display: inline-block; + text-decoration: none; + -webkit-tap-highlight-color: rgba(241, 217, 154, 0.35); + touch-action: manipulation; + cursor: pointer; +} + .qr-card { display: grid; justify-items: center; @@ -2056,7 +2064,7 @@ blockquote cite { .stage-dots { display: none; } -}\n +} /* ===== Viewport fit: lock each screen to 100vw x 100vh ===== */ .page-section { @@ -2796,3 +2804,365 @@ body.stage-mode { transform: none !important; } } + +/* ===== Mobile (≤760px): each section = one screen; PC/stage unchanged ===== */ +@media (max-width: 760px) { + .site:not(.is-stage) .page-section { + height: 100vh !important; + height: 100svh !important; + max-height: 100vh !important; + max-height: 100svh !important; + min-height: 100vh !important; + min-height: 100svh !important; + overflow-x: hidden !important; + overflow-y: auto !important; + align-content: center !important; + align-content: safe center !important; + justify-items: stretch !important; + align-items: stretch !important; + gap: 1.1rem !important; + padding: 5rem 1.15rem 2rem !important; + scroll-snap-align: start; + scroll-snap-stop: always; + -webkit-overflow-scrolling: touch; + } + + .site:not(.is-stage) .page-section > *:not(.ink-cloud):not(.tech-orbit) { + min-height: 0; + max-width: 100%; + min-width: 0; + } + + /* Wrap-friendly typography on narrow screens */ + .site:not(.is-stage) .brand-main { + letter-spacing: 0.12em !important; + overflow-wrap: anywhere; + word-break: break-word; + } + + .site:not(.is-stage) .brand-sub, + .site:not(.is-stage) .eyebrow { + letter-spacing: 0.16em !important; + white-space: normal !important; + overflow-wrap: anywhere; + } + + .site:not(.is-stage) .hero-copy h1, + .site:not(.is-stage) .section-heading h2, + .site:not(.is-stage) .poetry-main-card h2, + .site:not(.is-stage) .craft-card h3 { + letter-spacing: 0.02em !important; + overflow-wrap: anywhere; + word-break: break-word; + line-height: 1.25 !important; + } + + .site:not(.is-stage) .hero-text, + .site:not(.is-stage) .section-heading p, + .site:not(.is-stage) .poetry-main-card p, + .site:not(.is-stage) .lead, + .site:not(.is-stage) .closing-line, + .site:not(.is-stage) .closing-inline, + .site:not(.is-stage) .loop-line, + .site:not(.is-stage) .mode-line, + .site:not(.is-stage) .footnote, + .site:not(.is-stage) .dark-footnote, + .site:not(.is-stage) .mission-line, + .site:not(.is-stage) .product-tag, + .site:not(.is-stage) .contact-hint, + .site:not(.is-stage) .contact-role { + max-width: 100% !important; + white-space: normal !important; + overflow-wrap: anywhere; + word-break: break-word; + line-height: 1.6 !important; + } + + .site:not(.is-stage) .section-heading, + .site:not(.is-stage) .hero-copy { + width: 100%; + max-width: 100%; + min-width: 0; + } + + .site:not(.is-stage) .paper-card span, + .site:not(.is-stage) .three-columns span, + .site:not(.is-stage) .position-grid h3, + .site:not(.is-stage) .partner-list span { + letter-spacing: 0.08em !important; + white-space: normal !important; + overflow-wrap: anywhere; + } + + .site:not(.is-stage) .data-band strong { + letter-spacing: 0.02em !important; + overflow-wrap: anywhere; + word-break: break-word; + } + + .site:not(.is-stage) .data-band span, + .site:not(.is-stage) .data-band small, + .site:not(.is-stage) .paper-card p, + .site:not(.is-stage) .three-columns p, + .site:not(.is-stage) .tech-grid p, + .site:not(.is-stage) .ports-grid p, + .site:not(.is-stage) .system-grid p, + .site:not(.is-stage) .subsidy-points p, + .site:not(.is-stage) .partner-detail-grid p, + .site:not(.is-stage) .position-grid p { + white-space: normal !important; + overflow-wrap: anywhere; + word-break: break-word; + } + + .site:not(.is-stage) .primary-button, + .site:not(.is-stage) .secondary-button, + .site:not(.is-stage) .nav-cta { + white-space: normal !important; + text-align: center; + line-height: 1.35; + } + + /* Qingxiang: single column, spacing, no overlap */ + .site:not(.is-stage) .qingxiang-section .feature-layout { + grid-template-columns: 1fr !important; + max-height: none !important; + gap: 1.5rem !important; + } + + .site:not(.is-stage) .qingxiang-section .data-band { + grid-template-columns: 1fr !important; + gap: 0 !important; + } + + .site:not(.is-stage) .qingxiang-section .data-band div { + padding: 1rem 0 !important; + border: none !important; + border-bottom: 1px solid rgba(167, 25, 34, 0.18) !important; + } + + .site:not(.is-stage) .qingxiang-section .data-band div:last-child { + border-bottom: none !important; + } + + .site:not(.is-stage) .qingxiang-section .data-band strong { + font-size: clamp(1.75rem, 8vw, 2.5rem) !important; + line-height: 1.15; + } + + .site:not(.is-stage) .qingxiang-section .data-band span, + .site:not(.is-stage) .qingxiang-section .data-band small { + font-size: 0.8125rem !important; + line-height: 1.55 !important; + margin-top: 0.35rem; + } + + .site:not(.is-stage) .qingxiang-section .section-heading p { + display: block !important; + -webkit-line-clamp: unset; + overflow: visible !important; + } + + .site:not(.is-stage) .qingxiang-section .position-grid { + grid-template-columns: 1fr !important; + gap: 0.75rem !important; + margin-top: 0.25rem; + } + + .site:not(.is-stage) .qingxiang-section .position-grid article { + min-height: 0 !important; + padding: 0.75rem 0 0.75rem 0.85rem !important; + } + + .site:not(.is-stage) .qingxiang-section .position-grid h3 { + font-size: 1rem !important; + } + + .site:not(.is-stage) .qingxiang-section .position-grid p { + font-size: 0.875rem !important; + line-height: 1.55 !important; + } + + .site:not(.is-stage) .qingxiang-section .craft-card { + padding: 0 !important; + overflow: visible !important; + } + + .site:not(.is-stage) .qingxiang-section .craft-card h3 { + font-size: 1.5rem !important; + } + + .site:not(.is-stage) .qingxiang-section .craft-card > p:not(.craft-extra):not(.mission-line):not(.product-tag) { + display: block !important; + font-size: 0.875rem !important; + line-height: 1.6 !important; + -webkit-line-clamp: unset; + overflow: visible !important; + } + + .site:not(.is-stage) .qingxiang-section .tasting-detail { + grid-template-columns: 1fr !important; + gap: 0 !important; + margin-top: 0.75rem !important; + } + + .site:not(.is-stage) .qingxiang-section .tasting-detail div { + display: flex !important; + align-items: center; + gap: 0.75rem; + padding: 0.75rem 0 !important; + border: none !important; + border-bottom: 1px solid rgba(122, 75, 38, 0.14) !important; + } + + .site:not(.is-stage) .qingxiang-section .tasting-detail div:last-child { + border-bottom: none !important; + } + + .site:not(.is-stage) .qingxiang-section .tasting-detail strong { + width: 2.25rem !important; + height: 2.25rem !important; + margin: 0 !important; + flex-shrink: 0; + font-size: 1rem !important; + } + + .site:not(.is-stage) .qingxiang-section .tasting-detail p, + .site:not(.is-stage) .qingxiang-section .mission-line, + .site:not(.is-stage) .qingxiang-section .product-tag { + font-size: 0.8125rem !important; + line-height: 1.5 !important; + } + + .site:not(.is-stage) .qingxiang-section .store-figure, + .site:not(.is-stage) .qingxiang-section .footnote, + .site:not(.is-stage) .qingxiang-section .craft-extra, + .site:not(.is-stage) .qingxiang-section .ornament { + display: none !important; + } + + /* Hero */ + .site:not(.is-stage) .hero-section { + grid-template-columns: 1fr !important; + } + + .site:not(.is-stage) .hero-visual { + height: auto !important; + max-height: none !important; + min-height: 16rem; + margin-block: 0.5rem 1rem; + } + + .site:not(.is-stage) .hero-bottle { + height: min(42vh, 18rem) !important; + max-width: min(70vw, 14rem) !important; + } + + .site:not(.is-stage) .hero-actions { + flex-direction: column; + align-items: stretch; + } + + /* Brand / poetry / other grids */ + .site:not(.is-stage) .brand-layout { + grid-template-columns: 1fr !important; + max-height: none !important; + } + + .site:not(.is-stage) .heritage-figure { + display: none; + } + + .site:not(.is-stage) .heritage-grid, + .site:not(.is-stage) .timeline, + .site:not(.is-stage) .three-columns, + .site:not(.is-stage) .tech-grid, + .site:not(.is-stage) .ports-grid, + .site:not(.is-stage) .system-grid, + .site:not(.is-stage) .subsidy-points, + .site:not(.is-stage) .partner-detail-grid, + .site:not(.is-stage) .partner-list, + .site:not(.is-stage) .data-band { + grid-template-columns: 1fr !important; + } + + .site:not(.is-stage) .feature-layout { + max-height: none !important; + grid-template-columns: 1fr !important; + } + + .site:not(.is-stage) .paper-card, + .site:not(.is-stage) .three-columns article, + .site:not(.is-stage) .tech-grid article, + .site:not(.is-stage) .ports-grid article, + .site:not(.is-stage) .partner-detail-grid article, + .site:not(.is-stage) .system-grid article, + .site:not(.is-stage) .subsidy-points article { + overflow: visible !important; + min-height: 0 !important; + } + + .site:not(.is-stage) .paper-card p, + .site:not(.is-stage) .three-columns p, + .site:not(.is-stage) .tech-grid p, + .site:not(.is-stage) .ports-grid p, + .site:not(.is-stage) .partner-detail-grid p, + .site:not(.is-stage) .subsidy-points p, + .site:not(.is-stage) .system-grid p { + display: block !important; + -webkit-line-clamp: unset; + overflow: visible !important; + font-size: 0.875rem !important; + line-height: 1.55 !important; + } + + .site:not(.is-stage) .poetry-section { + grid-template-columns: 1fr !important; + } + + .site:not(.is-stage) .poetry-tags { + display: none; + } + + .site:not(.is-stage) .contact-section { + grid-template-columns: 1fr !important; + } + + .site:not(.is-stage) .contact-person { + flex-direction: column; + align-items: flex-start; + gap: 0.5rem; + } + + .site:not(.is-stage) .contact-phone { + padding: 0.35rem 0; + border-bottom: 1px solid rgba(241, 217, 154, 0.45); + color: var(--gold-light); + font-size: clamp(1.35rem, 6vw, 1.85rem) !important; + letter-spacing: 0.04em; + pointer-events: auto; + position: relative; + z-index: 2; + } + + .site:not(.is-stage) .qr-card { + margin-block: 1rem !important; + padding: 1.75rem 1.25rem !important; + width: 100%; + max-width: 20rem; + justify-self: center; + } + + .site:not(.is-stage) .qr-card img { + width: min(70vw, 14rem) !important; + height: min(70vw, 14rem) !important; + } + + .site:not(.is-stage) .footer.in-section { + margin-top: 1.5rem; + } + + .site:not(.is-stage) .subsidy-number { + font-size: clamp(4rem, 22vw, 7rem) !important; + } +} diff --git a/src/App.tsx b/src/App.tsx index 3499c50..8a351d8 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -527,11 +527,13 @@ function App() {
杜康好客 · 项目负责人
扫一扫上方二维码,添加项目负责人微信