Files
sechskies/assets/css/concert.css
T

519 lines
12 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
body.concert-page {
background-color: var(--deep-black, #0a0a0a);
margin: 0;
padding: 0;
}
/* 頂部 banner 主標/副標:style.css .site-header-innerHTML 加在 .header-inner 上) */
.concert-page .concert-container {
padding: 50px 0;
font-family: "PingFang TC", "Microsoft JhengHei", sans-serif;
}
/* CSS 效果 */
/* 1. 搜尋區塊容器:負責置中 */
.search-section {
width: 100%;
/* 撐滿寬度 */
display: flex;
/* 使用 Flexbox 佈局 */
justify-content: center;
/* 水平置中 */
margin: 40px 0;
/* 上下留白,讓視覺不擁擠 */
}
/* 2. 搜尋輸入框本體 */
.search-input {
width: 80%;
/* 行動裝置下佔 80% */
max-width: 400px;
/* 電腦版最大寬度 */
padding: 12px 25px;
/* 內縮,讓文字不貼邊 */
border: 2px solid #ddd;
/* 預設淺灰邊框 */
border-radius: 30px;
/* 膠囊造型圓角 */
font-size: 1rem;
outline: none;
/* 重要!移除瀏覽器預設的藍色外框 */
transition: all 0.3s ease;
/* 讓接下來的 focus 變化變平滑 */
background-color: #fff;
color: #333;
}
/* 3. 練習重點::focus (當滑鼠點擊準備打字時) */
.search-input:focus {
border-color: #ffcc00;
/* 變成代表色:水晶黃 */
box-shadow: 0 4px 15px rgba(255, 204, 0, 0.25);
/* 增加黃色柔和發光 */
width: 85%;
/* 點擊時微幅變長,增加回饋感 */
transform: translateY(-2px);
/* 輕微往上浮動 */
}
/* 4. 練習重點::hover (滑鼠只是滑過去,還沒點擊) */
.search-input:hover {
border-color: #bbb;
/* 邊框顏色稍微加深 */
}
.search-input {
width: 200px;
margin: 0 auto;
padding: 8px 15px;
border: 2px solid #eee;
border-radius: 20px;
transition: all 0.4s ease;
/* 平滑過渡 */
outline: none;
}
/* 當滑鼠點擊輸入框時 */
.search-input:focus {
width: 300px;
/* 輸入框變長 */
border-color: #ffcc00;
/* 變成水晶黃 */
box-shadow: 0 0 10px rgba(255, 204, 0, 0.2);
/* 淡淡的發光感 */
background-color: #fff;
}
.concert-container {
max-width: 1200px;
margin: 0 auto;
padding: 0 20px;
}
/* 第一層:演唱會卡片外殼 */
.con-1,
.con-2,
.con-3,
.con-4,
#yellownote-stage {
display: flex;
flex-direction: column;
background-color: #fff;
border-radius: 16px;
padding: 50px 100px;
margin-bottom: 50px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
border: 1px solid rgba(0, 0, 0, 0.02);
position: relative;
/* 關鍵:拿掉 overflow: hidden,改用子元素控制裁切 */
overflow: hidden;
}
img {
width: 50%;
margin: 0 auto;
align-items: center;
}
/* 重逢區:大卡垂直堆疊,錨點落在區塊頂端 */
#stage-now {
display: flex;
flex-direction: column;
gap: 0;
}
#yellownote-stage .yellownote-tagline {
margin: -1.5rem auto 1.75rem;
padding: 0 1rem;
text-align: center;
font-size: clamp(0.9rem, 1.8vw, 1rem);
font-weight: 650;
color: #555;
letter-spacing: 0.04em;
}
/* 右上角緞帶:改用獨立 div 或確保不被裁切 */
[data-tour]::after {
content: attr(data-tour);
position: absolute;
width: 200px;
text-align: center;
top: 30px;
right: -40px;
background: #eee;
color: #999;
font-size: 0.8rem;
padding: 10px 0;
transform: rotate(45deg);
z-index: 1;
/* 如果擔心緞帶超出卡片太醜,可將此設為透明或微調位置 */
}
.title {
display: block;
font-size: 1.5rem;
font-weight: 900;
margin: 50px;
text-align: center;
color: #333;
}
/* 暫隱:九十年代「燦爛的最初」整區;要對外顯示時刪除此規則即可 */
#stage-past {
display: none !important;
}
/* 燦爛的最初:小節標(對齊隔壁「一張大卡+多個場次列」) */
#stage-past .stage-past-era {
margin-top: 2.25rem;
}
#stage-past .stage-past-era:first-of-type {
margin-top: 0;
}
#stage-past .tour-era-heading {
display: block;
margin: 0 0 0.5rem;
padding: 0 1rem;
font-size: clamp(1rem, 2vw, 1.12rem);
font-weight: 800;
text-align: center;
color: #333;
}
#stage-past .tour-era-meta {
opacity: 0.9;
font-size: 0.92rem;
margin: 0 0 0.85rem;
padding: 0 1rem;
text-align: center;
color: #555;
}
/* 第二層:地點區塊 (通用選擇器) — con-X-X,不加左側直線(版面乾淨) */
[class*="con-"][class*="-"] {
padding: 10px 0 30px 20px;
margin: 15px 0 15px 10px;
position: relative;
background: linear-gradient(to right, #fffdf5, #fff);
border-radius: 4px;
counter-reset: track-counter;
}
/* 第三層:曲目 */
[class*="con-"]>div div {
padding-left: 35px;
font-size: 0.9rem;
color: #777;
margin: 5px 0;
/* 關鍵:拿掉因為 class 包含 "con-" 而被誤加的左邊線 */
border-left: none !important;
position: relative;
}
/* 針對曲目前方的圖示進行替換 */
[class*="con-"]>div div::before {
/* 1. 使用 Font Awesome 的音樂符號 Unicode (f001 是音樂符號) */
content: "\f001";
/* 2. 指定字體系列與粗細 (這是顯示圖示的關鍵) */
font-family: "Font Awesome 6 Free";
font-weight: 900;
/* 3. 顏色與大小微調 */
color: #ffcc00;
/* 使用你的水晶黃 */
font-size: 0.8rem;
/* 4. 位置修正:取代原本的 margin-left */
display: inline-block;
width: 25px;
/* 固定寬度讓文字對齊 */
margin-right: 5px;
/* 圖示與歌名間距 */
text-align: center;
/* 如果你堅持要保留原本的 30px 偏移,可以加在這裡 */
margin-left: 30px;
}
/* 修改:確保計數器能抓到這些 div */
[class*="con-"]>div div::after {
counter-increment: track-counter;
content: " #" counter(track-counter);
font-size: 0.7rem;
color: #ccc;
margin-left: 5px;
vertical-align: super;
}
/* 1. 針對 track-list 容器本身:關閉符號與計數 */
.track-list::before,
.track-list::after {
display: none !important;
content: none !important;
counter-increment: none !important;
}
/* 2. 針對 track-list 容器本身:拿掉縮排與邊框 */
.track-list {
padding: 0 !important;
margin: 0 !important;
border: none !important;
}
/* 3. 確保真正的曲目 (track-item) 正常顯示 */
.track-item {
display: block;
white-space: nowrap;
/* 強制不換行 */
overflow: hidden;
/* 隱藏超出部分 */
text-overflow: ellipsis;
/* 超出部分顯示 ... */
max-width: 85%;
/* 留空間給右邊的序號 */
position: relative;
padding-left: 35px;
/* 這裡留給 🎵 圖標 */
}
/* 進階:滑鼠移上去顯示完整文字 */
.track-item:hover {
overflow: visible;
white-space: normal;
background: #fff;
z-index: 10;
position: relative;
}
/* 地點圖示 */
.location::before {
/* 1. 使用 Unicode 編碼代替貼圖 */
content: "\f3c5";
/* 2. 指定字體系列 (重要!沒寫會變亂碼) */
font-family: "Font Awesome 6 Free";
/* 3. 指定字體粗細 (Solid 圖標通常需要 900) */
font-weight: 900;
/* 4. 原有的樣式調整 */
margin-right: 8px;
/* 這裡改用 margin-right 讓圖示在文字左邊 */
margin-left: 0;
/* 清除原本可能有的 margin-left */
color: #ffcc00;
/* 讓圖示顏色跟你的水晶黃對齊 */
font-size: 1.1rem;
display: inline-block;
margin-left: 30px;
}
/* --- 日期蓋章:全自動定位 --- */
/* 使用屬性選擇器,確保 con-1-1, 1-3, 2-1 都能顯示 */
.attended::before,
.attended::after {
position: absolute;
left: -20px;
/* 壓在黃線上 */
width: 45px;
text-align: center;
background-color: #ffcc00;
color: #333;
font-size: 9px;
font-weight: bold;
padding: 2px 4px;
border-radius: 4px;
box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.1);
z-index: 100;
border: 2px solid #fff;
/* 增加白邊避免被背景吃掉 */
}
/* 第一個日期 */
.attended::before {
content: attr(data-date1);
top: 5px;
transform: rotate(-12deg);
}
/* 第二個日期 (如果有) */
.attended::after {
content: attr(data-date2);
top: 28px;
transform: rotate(8deg);
background-color: #fceea7;
}
/* 如果沒有第二個日期,就隱藏框框 */
.attended:not([data-date2])::after {
display: none;
}
/* 針對單日參加 (只有 data-date 沒有序號) 的特殊處理 */
.attended[data-date]::before {
content: attr(data-date);
}
/* 1. 隱藏 checkbox 本身 */
.expand-trigger {
display: none;
}
/* 2. 預設隱藏第 2 個之後的 track-item */
.track-list .track-item:nth-child(n+3) {
display: none;
opacity: 0;
transition: opacity 0.5s ease;
}
/* 3. 當 Checkbox 被選中時,顯示所有曲目 */
.expand-trigger:checked+.track-list .track-item:nth-child(n+6) {
display: block;
opacity: 1;
}
/* 4. 設計「展開/收合」按鈕樣式 */
.expand-btn {
display: inline-block;
margin-top: 10px;
margin-left: 35px;
padding: 5px 15px;
background-color: #f5f5f5;
color: #999;
font-size: 0.8rem;
border-radius: 20px;
cursor: pointer;
transition: all 0.3s ease;
}
/* 5. 利用偽元素設定按鈕文字內容 */
.expand-btn::before {
content: "↓ 展開完整曲目";
}
.expand-trigger:checked~.expand-btn::before {
content: "↑ 收合曲目";
}
/* 懸停效果 */
.expand-btn:hover {
background-color: #ffcc00;
color: #333;
}
/* --- 2020 ACCESS:與其餘大卡同層級(title → img → con-X-1);::after=緞帶,CANCELED 水印用 ::before --- */
.con-4.con-access-denied[data-tour="ACCESS"] {
overflow: visible;
}
.con-4[data-tour="ACCESS"]::after {
background: #4a4a4a;
color: #fff;
z-index: 5;
}
.con-4.con-access-denied {
filter: grayscale(80%);
opacity: 0.7;
position: relative;
}
.con-access-denied .location::before {
color: #999 !important;
}
.con-access-denied .canceled::before,
.con-access-denied .canceled::after {
position: absolute;
left: -20px;
width: 45px;
text-align: center;
font-size: 9px;
font-weight: bold;
padding: 2px 4px;
border-radius: 4px;
box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.1);
z-index: 100;
border: 2px solid #fff;
background-color: #999 !important;
color: #fff !important;
text-decoration: line-through;
transform: rotate(0deg);
}
.con-access-denied .canceled::before {
content: attr(data-date1);
top: 5px;
}
.con-access-denied .canceled::after {
content: attr(data-date2);
top: 28px;
}
.con-access-denied .canceled:not([data-date2])::after {
display: none;
}
.con-access-denied .denied-text {
font-family: "Courier New", Courier, monospace;
color: #cc0000 !important;
font-size: 0.85rem;
font-style: italic;
padding-left: 35px;
}
.con-access-denied .track-item.denied-text {
white-space: normal;
max-width: 100%;
overflow: visible;
}
.con-access-denied .track-item.denied-text::before {
content: "\f071" !important;
font-family: "Font Awesome 6 Free" !important;
font-weight: 900 !important;
color: #cc0000 !important;
font-size: 0.8rem !important;
font-style: normal !important;
display: inline-block;
width: 25px;
margin-right: 5px;
text-align: center;
margin-left: 30px;
}
.con-access-denied .track-item.denied-text::after {
content: none !important;
display: none !important;
}
.con-access-denied .track-list .track-item {
display: block !important;
opacity: 1 !important;
}
.con-4.con-access-denied[data-tour="ACCESS"]::before {
content: "CANCELED";
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) rotate(-15deg);
font-size: clamp(2rem, 10vw, 4.5rem);
font-weight: 900;
color: rgba(204, 0, 0, 0.1);
border: 8px solid rgba(204, 0, 0, 0.1);
padding: 10px 30px;
letter-spacing: 10px;
pointer-events: none;
z-index: 2;
white-space: nowrap;
}