diff --git a/assets/css/concert.css b/assets/css/concert.css index d3fe48d..cd1cf3c 100644 --- a/assets/css/concert.css +++ b/assets/css/concert.css @@ -1,30 +1,10 @@ -body { - background-color: var(--); -} - -.concert-page { - background-color: var(--deep-black); +body.concert-page { + background-color: var(--deep-black, #0a0a0a); margin: 0; padding: 0; } -.concert-archive-header { - width: 100%; - height: 100vh; - min-height: 100dvh; - background-image: url('../images/header.jpg'); - background-position: center center; - background-repeat: no-repeat; - background-size: 108%; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - text-align: center; - padding: 0 20px; - overflow: hidden; - position: relative; -} +/* 頂部 banner 版面見 style.css .concert-archive-header(與 .map-archive-header 共用) */ .main-title { font-size: 3.5rem; @@ -60,10 +40,7 @@ body { margin: 0 25px; } -body { - background-color: #fcfaf2; - /* 溫潤米白背景 */ - margin: 0; +.concert-page .concert-container { padding: 50px 0; font-family: "PingFang TC", "Microsoft JhengHei", sans-serif; } diff --git a/assets/css/style.css b/assets/css/style.css index ae38092..6ffb33b 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -44,7 +44,8 @@ body { line-height: 1.6; } -header { +/* 首頁 Hero 全屏;內頁 banner 見 .map-archive-header/.concert-archive-header */ +header#origin { width: 100%; height: 100vh; min-height: 100dvh; @@ -102,23 +103,43 @@ nav a { .portal-nav li { position: relative; +} + +/* 主欄每項同高墊腳(含無子選單的「完整的六顆」),避免僅 :has 子選單者才墊高而單項偏低 */ +.portal-nav>ul>li { padding-bottom: 8px; } +.portal-nav .logo { + align-self: center; + flex-shrink: 0; + transform: translateY(3px); +} + +/* 全站頂欄:對齊 concert.html — 全寬黑底、黏頂、較高層(site-guide 僅連結開放邏輯不同,見 portal-nav.js) */ .portal-nav { - position: relative; - z-index: 60; + width: 100%; + margin: 0 0 14px; + padding: 0.8rem 100px; + background-color: var(--black); + border-radius: 0; + box-shadow: none; + overflow: visible; + position: sticky; + top: 0; + z-index: 100; display: flex; flex-wrap: wrap; - align-items: flex-end; + align-items: center; justify-content: space-between; gap: 0.5rem 1rem; + box-sizing: border-box; } .portal-nav>ul { display: flex; flex-wrap: wrap; - align-items: flex-end; + align-items: center; justify-content: flex-end; gap: clamp(8px, 1.4vw, 18px); list-style: none; @@ -130,7 +151,7 @@ nav a { .portal-nav>ul>li:hover, .portal-nav>ul>li:focus-within { - z-index: 70; + z-index: 105; } .portal-nav>ul>li>a { @@ -467,8 +488,8 @@ a.btn[data-coming-soon="true"], pointer-events: none; } -header, -nav, +header:not(.map-archive-header):not(.concert-archive-header), +nav:not(.portal-nav), .container, footer { position: relative; @@ -1342,9 +1363,7 @@ footer a .mark_b { color: var(--primary); } -/* map.html */ -.map-page .map-archive-header, -.map-page .portal-nav, +/* map.html — 主內容層;頂欄見全站 .portal-nav */ .map-page .member-tabs, .map-page #itinerary-search, .map-page .map-layout, @@ -1353,7 +1372,6 @@ footer a .mark_b { z-index: 1; } -.concert-page .concert-archive-header, .concert-page .search-section, .concert-page .concert-container, .concert-page footer { @@ -1361,38 +1379,6 @@ footer a .mark_b { z-index: 1; } -/* 演唱會頁:勿與主內容同層 z-index:1(會被後方 DOM 蓋住);對齊 map-page 黏頂+較高層 */ -.concert-page .portal-nav { - width: 100%; - margin: 0 0 14px; - padding: 0.8rem 100px; - background-color: var(--black); - border-radius: 0; - box-shadow: none; - overflow: visible; - position: sticky; - top: 0; - z-index: 100; -} - -.concert-page .portal-nav>ul>li:hover, -.concert-page .portal-nav>ul>li:focus-within { - z-index: 105; -} - -.map-page .portal-nav { - width: 100%; - margin: 0 0 14px; - padding: 0.8rem 100px; - background-color: var(--black); - border-radius: 0; - box-shadow: none; - overflow: visible; - position: sticky; - top: 0; - z-index: 30; -} - .map-page .portal-nav ul { list-style: none; margin: 0; @@ -1414,11 +1400,6 @@ footer a .mark_b { line-height: 1; } -.map-page .portal-nav>ul>li:hover, -.map-page .portal-nav>ul>li:focus-within { - z-index: 35; -} - .map-page .portal-nav>ul>li>a { display: inline-flex; flex-direction: column; @@ -1562,14 +1543,16 @@ footer a .mark_b { transform: translateY(-50%); } -.map-archive-header { +/* 內頁頂部 banner:全屏 100vh(首頁 Hero 僅 header#origin) */ +.map-archive-header, +.concert-archive-header { width: 100%; height: 100vh; min-height: 100dvh; background-image: url('../images/header.jpg'); - background-position: center center; + background-position: center 78%; background-repeat: no-repeat; - background-size: 108%; + background-size: cover; display: flex; flex-direction: column; align-items: center; @@ -1578,9 +1561,11 @@ footer a .mark_b { padding: 0 20px; overflow: hidden; position: relative; + box-sizing: border-box; } -.map-archive-header .main-title { +.map-archive-header .main-title, +.concert-archive-header .main-title { font-size: clamp(2rem, 4.5vw, 3.2rem); font-weight: 900; color: var(--yellow, var(--primary)); @@ -1590,18 +1575,22 @@ footer a .mark_b { text-shadow: 0 0 30px rgba(255, 221, 0, 0.75); } -.map-archive-header .subtitle-wrap { +.map-archive-header .subtitle-wrap, +.concert-archive-header .subtitle-wrap { margin-top: 20px; } .map-archive-header .subtitle-wrap::before, -.map-archive-header .subtitle-wrap::after { +.map-archive-header .subtitle-wrap::after, +.concert-archive-header .subtitle-wrap::before, +.concert-archive-header .subtitle-wrap::after { height: 3px; background-color: #ffcc00; max-width: 56px; } -.map-archive-header .sub-title { +.map-archive-header .sub-title, +.concert-archive-header .sub-title { font-size: 0.92rem; letter-spacing: 4px; color: #d4d4d4; @@ -1909,12 +1898,8 @@ footer a .mark_b { } @media (max-width: 920px) { - .map-archive-header { - background-size: cover; - padding: 0 16px; - } - - .map-archive-header .main-title { + .map-archive-header .main-title, + .concert-archive-header .main-title { letter-spacing: 4px; } @@ -1927,8 +1912,9 @@ footer a .mark_b { gap: 16px; } - .map-page .portal-nav { - padding: 0.8rem 16px; + .portal-nav { + padding-top: 0.8rem; + padding-bottom: 0.8rem; } .map-page .portal-nav .portal-submenu { @@ -2310,13 +2296,6 @@ body.totoga2-page .totoga2-hub-controls { flex-wrap: wrap; } -body.totoga2-page .map-archive-header { - height: auto; - min-height: clamp(15rem, 42vh, 26rem); - padding: clamp(2rem, 5vh, 3.25rem) 20px; - background-size: cover; -} - body.totoga2-page.totoga2-video-copy-page .ebook-intro.section { margin-bottom: 1.5rem; } diff --git a/assets/css/tablet.css b/assets/css/tablet.css index 1665248..9fa4b99 100644 --- a/assets/css/tablet.css +++ b/assets/css/tablet.css @@ -2,22 +2,25 @@ @media (max-width: 1180px) { - html:has(body.map-page) { + html:has(.portal-nav) { scroll-padding-top: clamp(52px, 12vw, 76px); } - nav, + nav:not(.portal-nav) { + padding-left: clamp(14px, 2vw + 10px, 32px) !important; + padding-right: clamp(14px, 2vw + 10px, 32px) !important; + } + .portal-nav { padding-left: clamp(14px, 2vw + 10px, 32px) !important; padding-right: clamp(14px, 2vw + 10px, 32px) !important; row-gap: 12px; flex-wrap: wrap; - align-items: flex-start; + align-items: center; } - .map-page .portal-nav { - padding-left: clamp(14px, 2vw + 10px, 32px) !important; - padding-right: clamp(14px, 2vw + 10px, 32px) !important; + .portal-nav>ul { + align-items: center; } .portal-nav .logo { diff --git a/assets/js/portal-nav.js b/assets/js/portal-nav.js index 2a8a150..5d69e83 100644 --- a/assets/js/portal-nav.js +++ b/assets/js/portal-nav.js @@ -46,7 +46,7 @@ /** * 首頁僅下列錨點可點;其餘(如 #story)維持籌備中,須站主同意後才可加入。 - * 空字串:連到 index.html 且無 # 片段時視為可點(淪陷瞬間 · 初心與軌跡)。 + * 空字串:連到 index.html 且無 # 片段時視為可點(淪陷瞬間主項)。 */ const INDEX_NAV_OPEN_HASHES = new Set(["", "#origin", "#start", "#mission", "#timeline"]); @@ -215,7 +215,6 @@