Spaces:
Running
Running
Download style.css from Lashtw/escapetest: direct link, hf CLI and curl.
- Browser
- Download file 28.8 kB
-
https://huggingface.co/spaces/Lashtw/escapetest/resolve/main/style.css
- Command line
-
hf download hf://spaces/Lashtw/escapetest/style.css
-
curl -L -o style.css https://huggingface.co/spaces/Lashtw/escapetest/resolve/main/style.css
28.8 kB
| @import url('https://fonts.googleapis.com/css2?family=Noto+Serif+TC:wght@400;500;600;700;900&display=swap'); | |
| :root{ | |
| --paper: #ead9b6; | |
| --paper-dark: #3a2a1a; | |
| --ink: #2b1d10; | |
| --amber: #c98a3c; | |
| --amber-dark: #8a5a20; | |
| --gold: #e0b053; | |
| --success: #4a7c3f; | |
| --danger: #a33a2c; | |
| --panel-bg: #f3e4c2; | |
| --shadow: rgba(0,0,0,.5); | |
| } | |
| *{ box-sizing: border-box; } | |
| html,body{ | |
| margin:0; padding:0; width:100%; height:100%; | |
| font-family:"Noto Serif TC", serif; | |
| background:#0d0906; | |
| color: var(--ink); | |
| overflow:hidden; | |
| } | |
| .hidden{ display:none ; } | |
| /* ---------------- 全螢幕開場/結局 ---------------- */ | |
| .fullscreen-overlay{ | |
| position:fixed; inset:0; z-index:100; | |
| background: | |
| radial-gradient(ellipse at center, rgba(60,40,20,.2), rgba(10,6,3,.92) 75%), | |
| url('assets/scenes/scene_A_desk.png') center/cover no-repeat; | |
| display:flex; align-items:center; justify-content:center; | |
| padding: 24px; | |
| } | |
| .intro-content{ | |
| max-width: 720px; | |
| background: linear-gradient(180deg, rgba(243,228,194,.97), rgba(234,217,182,.97)); | |
| border: 3px solid var(--amber-dark); | |
| border-radius: 12px; | |
| padding: 36px 40px; | |
| box-shadow: 0 20px 60px var(--shadow), inset 0 0 40px rgba(139,90,32,.15); | |
| text-align:center; | |
| max-height: 88vh; | |
| overflow-y:auto; | |
| } | |
| .intro-title{ | |
| font-family:"Noto Serif TC", serif; font-weight:900; | |
| font-size: 2.6em; | |
| color: var(--amber-dark); | |
| margin: 0 0 4px; | |
| letter-spacing: 4px; | |
| } | |
| .intro-sub{ | |
| color:#6b4a26; font-size:1.05em; margin-bottom:20px; letter-spacing:2px; | |
| } | |
| .intro-story{ | |
| text-align:left; | |
| line-height:1.9; | |
| font-size:1.02em; | |
| color: var(--ink); | |
| margin-bottom: 24px; | |
| white-space: pre-line; | |
| } | |
| .intro-story b{ color: var(--amber-dark); } | |
| .btn-primary{ | |
| background: linear-gradient(180deg, var(--gold), var(--amber-dark)); | |
| color:#2b1d10; | |
| border: none; | |
| padding: 12px 32px; | |
| font-size: 1.05em; | |
| font-weight:700; | |
| border-radius: 8px; | |
| cursor:pointer; | |
| box-shadow: 0 4px 0 #6b4114, 0 8px 16px rgba(0,0,0,.4); | |
| font-family:"Noto Serif TC", serif; | |
| letter-spacing: 2px; | |
| transition: transform .1s; | |
| } | |
| .btn-primary:hover{ transform: translateY(-2px); } | |
| .btn-primary:active{ transform: translateY(2px); box-shadow: 0 2px 0 #6b4114; } | |
| .btn-secondary{ | |
| background: rgba(139,90,32,.15); | |
| border: 1.5px solid var(--amber-dark); | |
| color: var(--amber-dark); | |
| padding: 8px 18px; | |
| border-radius: 6px; | |
| cursor:pointer; | |
| font-family:"Noto Serif TC", serif; | |
| font-weight:600; | |
| } | |
| .btn-secondary:hover{ background: rgba(139,90,32,.28); } | |
| /* ---------------- 遊戲主畫面 ---------------- */ | |
| #game-screen{ position:fixed; inset:0; display:flex; flex-direction:column; } | |
| #top-bar{ | |
| height:56px; flex-shrink:0; | |
| display:flex; align-items:center; justify-content:space-between; | |
| background: linear-gradient(180deg,#241a10,#150e08); | |
| border-bottom: 2px solid var(--amber-dark); | |
| padding: 0 16px; | |
| color: var(--gold); | |
| gap: 12px; | |
| z-index: 50; | |
| } | |
| #game-title{ | |
| font-family:"Noto Serif TC", serif; | |
| font-weight:900; | |
| font-size:1.18em; | |
| letter-spacing:1.5px; | |
| white-space: nowrap; | |
| flex-shrink: 0; | |
| } | |
| #lock-progress{ | |
| font-size:.92em; | |
| color:#e6d4ac; | |
| white-space: nowrap; | |
| flex-shrink: 1; | |
| } | |
| #lock-progress span{ color: var(--gold); font-weight:700; } | |
| /* 40 分鐘倒數計時器 */ | |
| .timer-wrap{ | |
| display:flex; | |
| align-items:center; | |
| gap:6px; | |
| background: rgba(0,0,0,.45); | |
| border: 1.5px solid var(--amber); | |
| padding: 4px 12px; | |
| border-radius: 18px; | |
| box-shadow: inset 0 0 8px rgba(0,0,0,.6), 0 2px 6px rgba(0,0,0,.5); | |
| flex-shrink: 0; | |
| } | |
| .timer-wrap .timer-icon{ font-size: 1.1em; } | |
| .timer-wrap .timer-label{ font-size: .82em; color: #d4ba8a; font-family:"Noto Serif TC", serif; } | |
| .timer-digits{ | |
| font-family: "Courier New", monospace, sans-serif; | |
| font-size: 1.15em; | |
| font-weight: 900; | |
| color: #ffeaa7; | |
| letter-spacing: 1px; | |
| min-width: 54px; | |
| text-align: center; | |
| } | |
| .timer-wrap.warning{ | |
| border-color: #ff5252; | |
| background: rgba(60, 10, 10, .6); | |
| animation: timerWarningPulse 1.2s infinite alternate ease-in-out; | |
| } | |
| .timer-wrap.warning .timer-digits{ | |
| color: #ff7675; | |
| } | |
| @keyframes timerWarningPulse{ | |
| 0%{ box-shadow: 0 0 4px rgba(255,82,82,.4); } | |
| 100%{ box-shadow: 0 0 14px rgba(255,82,82,.9); border-color: #ff7675; } | |
| } | |
| #top-bar-actions{ | |
| display:flex; | |
| align-items:center; | |
| gap:10px; | |
| flex-shrink: 0; | |
| } | |
| /* 音樂控制器 */ | |
| .music-controls{ | |
| display:flex; align-items:center; gap:8px; | |
| background: rgba(0,0,0,.35); | |
| border: 1px solid rgba(224,176,83,.3); | |
| padding: 4px 10px; | |
| border-radius: 20px; | |
| } | |
| .music-controls .btn-icon{ | |
| background: transparent; | |
| border: none; | |
| padding: 2px 4px; | |
| box-shadow: none; | |
| font-size: .85em; | |
| } | |
| .music-controls .btn-icon:hover{ | |
| background: rgba(224,176,83,.2); | |
| transform: none; | |
| } | |
| .volume-slider-wrap{ | |
| display:flex; align-items:center; gap:4px; | |
| color: var(--gold); | |
| } | |
| .volume-slider-wrap .vol-icon{ font-size: 11px; opacity: .85; } | |
| #volume-slider{ | |
| width: 60px; | |
| height: 5px; | |
| -webkit-appearance: none; | |
| appearance: none; | |
| background: rgba(224,176,83,.25); | |
| border-radius: 3px; | |
| outline: none; | |
| cursor: pointer; | |
| } | |
| #volume-slider::-webkit-slider-thumb{ | |
| -webkit-appearance: none; | |
| appearance: none; | |
| width: 13px; | |
| height: 13px; | |
| border-radius: 50%; | |
| background: var(--gold); | |
| border: 1.5px solid #241a10; | |
| box-shadow: 0 0 6px rgba(224,176,83,.9); | |
| cursor: pointer; | |
| } | |
| #volume-slider::-moz-range-thumb{ | |
| width: 13px; | |
| height: 13px; | |
| border-radius: 50%; | |
| background: var(--gold); | |
| border: 1.5px solid #241a10; | |
| box-shadow: 0 0 6px rgba(224,176,83,.9); | |
| cursor: pointer; | |
| } | |
| .btn-icon{ | |
| position:relative; | |
| background: linear-gradient(180deg, rgba(224,176,83,.25), rgba(139,90,32,.25)); | |
| border: 1.5px solid var(--amber); | |
| border-radius: 8px; | |
| padding: 6px 12px; | |
| cursor:pointer; | |
| display:flex; align-items:center; gap:6px; | |
| color: var(--gold); | |
| font-family:"Noto Serif TC", serif; | |
| font-weight:700; | |
| font-size:.9em; | |
| transition: all .15s ease; | |
| flex-shrink: 0; | |
| height: 36px; | |
| box-sizing: border-box; | |
| } | |
| .btn-icon:hover{ | |
| background: linear-gradient(180deg, rgba(224,176,83,.45), rgba(139,90,32,.45)); | |
| transform: translateY(-1px); | |
| box-shadow: 0 4px 12px rgba(224,176,83,.25); | |
| } | |
| .btn-icon-emoji{ font-size:1.15em; line-height:1; } | |
| .btn-icon img{ | |
| width:20px ; | |
| height:20px ; | |
| max-width:20px ; | |
| max-height:20px ; | |
| object-fit:contain ; | |
| border-radius:3px; | |
| display:inline-block ; | |
| flex-shrink:0 ; | |
| } | |
| .btn-icon-label{ font-size:.9em; white-space:nowrap; } | |
| .badge{ | |
| position:absolute; top:-6px; right:-6px; | |
| background: var(--danger); color:#fff; | |
| font-size:.7em; font-weight:700; | |
| border-radius: 50%; width:18px; height:18px; | |
| display:flex; align-items:center; justify-content:center; | |
| box-shadow: 0 2px 4px rgba(0,0,0,.5); | |
| } | |
| #stage{ | |
| flex:1; position:relative; overflow:hidden; | |
| background:#000; | |
| } | |
| #scene-container{ | |
| position:absolute; inset:0; | |
| background-size: cover; | |
| background-position:center; | |
| transition: opacity .4s ease; | |
| } | |
| #scene-container.fading{ opacity: 0; } | |
| #hotspot-layer{ position:absolute; inset:0; } | |
| .hotspot{ | |
| position:absolute; | |
| cursor:pointer; | |
| border-radius: 50%; | |
| display:flex; align-items:center; justify-content:center; | |
| transform: translate(-50%, -50%); | |
| z-index: 10; | |
| box-sizing: border-box ; | |
| width: 48px; | |
| height: 48px; | |
| max-width: 48px; | |
| max-height: 48px; | |
| flex-shrink: 0; | |
| padding: 0; | |
| } | |
| .hotspot:hover{ z-index: 25; } | |
| .hotspot.locked-node{ | |
| width: 54px; | |
| height: 54px; | |
| max-width: 54px; | |
| max-height: 54px; | |
| filter: drop-shadow(0 4px 10px rgba(0,0,0,.85)); | |
| } | |
| .hotspot.locked-node.final-vault{ | |
| width: 76px; | |
| height: 76px; | |
| max-width: 76px; | |
| max-height: 76px; | |
| } | |
| .hotspot .hotspot-dot{ | |
| width: 100% ; | |
| height: 100% ; | |
| max-width: 100% ; | |
| max-height: 100% ; | |
| border-radius: 50%; | |
| background: rgba(255,255,255,.08); | |
| border: 1.5px dashed rgba(224,176,83,.4); | |
| transition: transform .2s cubic-bezier(0.34, 1.56, 0.64, 1), background .2s, border-color .2s, box-shadow .2s; | |
| display:flex; align-items:center; justify-content:center; | |
| transform: scale(1); | |
| box-sizing: border-box; | |
| position: relative; | |
| overflow: hidden; | |
| flex-shrink: 0; | |
| } | |
| .hotspot:hover .hotspot-dot{ | |
| background: rgba(224,176,83,.25); | |
| border-color: var(--gold); | |
| box-shadow: 0 0 14px rgba(224,176,83,.6); | |
| transform: scale(1.15); | |
| } | |
| .hotspot.found .hotspot-dot{ | |
| background: rgba(120,200,120,.12); | |
| border: 1.5px solid rgba(120,200,120,.45); | |
| } | |
| /* 機關鎖專屬物件化樣式 */ | |
| .hotspot.locked-node .hotspot-dot{ | |
| background: radial-gradient(circle, rgba(139,90,32,.95), rgba(40,25,10,.98)); | |
| border: 2.5px solid var(--gold); | |
| box-shadow: 0 0 14px rgba(224,176,83,.65), inset 0 0 8px rgba(0,0,0,.8); | |
| animation: lockGlow 2.5s infinite alternate ease-in-out; | |
| } | |
| .hotspot-lock-img{ | |
| width: 100% ; | |
| height: 100% ; | |
| max-width: 100% ; | |
| max-height: 100% ; | |
| object-fit: cover ; | |
| border-radius: 50% ; | |
| display: block ; | |
| opacity: .92; | |
| pointer-events: none; | |
| flex-shrink: 0; | |
| transition: transform .2s ease, opacity .2s; | |
| } | |
| .hotspot.locked-node:hover .hotspot-lock-img{ | |
| transform: scale(1.08); | |
| opacity: 1; | |
| } | |
| .hotspot.locked-node .hotspot-lock-badge{ | |
| position:absolute; | |
| bottom: 0px; right: 0px; | |
| background: #241a10; | |
| border: 1.5px solid var(--gold); | |
| border-radius: 50%; | |
| width: 18px; height: 18px; | |
| display:flex; align-items:center; justify-content:center; | |
| font-size: 10px; | |
| box-shadow: 0 2px 4px rgba(0,0,0,.7); | |
| z-index: 5; | |
| pointer-events: none; | |
| } | |
| @keyframes lockGlow{ | |
| 0%{ box-shadow: 0 0 8px rgba(224,176,83,.4), inset 0 0 4px rgba(224,176,83,.2); } | |
| 100%{ box-shadow: 0 0 18px rgba(224,176,83,.9), inset 0 0 10px rgba(224,176,83,.5); border-color:#ffe8a3; } | |
| } | |
| /* 已解開的機關 */ | |
| .hotspot.solved .hotspot-dot{ | |
| background: radial-gradient(circle, rgba(40,100,50,.9), rgba(15,40,20,.95)); | |
| border: 2px solid #6cd975; | |
| box-shadow: 0 0 12px rgba(108,217,117,.5); | |
| } | |
| .hotspot.solved .hotspot-lock-badge{ | |
| background: #143018; | |
| border: 1.5px solid #6cd975; | |
| color:#6cd975; | |
| } | |
| /* 隱藏印璽碎片:微微發光的小碎片圖案,拾取後才散發璀璨仙光 */ | |
| .hotspot.seal-node{ | |
| width: 32px; | |
| height: 32px; | |
| max-width: 32px; | |
| max-height: 32px; | |
| } | |
| .hotspot.seal-node .hotspot-dot{ | |
| border: 1.5px dashed rgba(224, 176, 83, 0.45); | |
| background: radial-gradient(circle, rgba(255, 235, 170, 0.35), rgba(180, 130, 40, 0.15) 60%, transparent 85%); | |
| box-shadow: 0 0 8px rgba(224, 176, 83, 0.35); | |
| opacity: 0.72; | |
| animation: subtleSealGlow 3s infinite alternate ease-in-out; | |
| transition: opacity .25s, transform .25s, box-shadow .25s; | |
| position: relative; | |
| } | |
| /* 碎片內嵌的微光碎玉圖案 */ | |
| .hotspot.seal-node .hotspot-dot::before{ | |
| content: '🔶'; | |
| font-size: 13px; | |
| line-height: 1; | |
| filter: drop-shadow(0 0 3px rgba(255,215,0,0.6)); | |
| opacity: 0.85; | |
| transform: scale(0.9); | |
| transition: transform .2s ease; | |
| } | |
| .hotspot.seal-node:hover .hotspot-dot{ | |
| opacity: 1; | |
| border-color: var(--gold); | |
| background: radial-gradient(circle, rgba(255, 240, 180, 0.55), rgba(200, 140, 40, 0.25) 70%, transparent 90%); | |
| box-shadow: 0 0 14px rgba(224, 176, 83, 0.75); | |
| transform: scale(1.15); | |
| } | |
| .hotspot.seal-node:hover .hotspot-dot::before{ | |
| transform: scale(1.05); | |
| } | |
| @keyframes subtleSealGlow{ | |
| 0%{ | |
| transform: scale(0.94); | |
| box-shadow: 0 0 5px rgba(224, 176, 83, 0.25); | |
| border-color: rgba(224, 176, 83, 0.35); | |
| } | |
| 100%{ | |
| transform: scale(1.05); | |
| box-shadow: 0 0 11px rgba(224, 176, 83, 0.55), 0 0 18px rgba(255, 215, 0, 0.2); | |
| border-color: rgba(255, 235, 150, 0.75); | |
| } | |
| } | |
| /* 找到/拾取後:散發強烈金綠璀璨光芒 */ | |
| .hotspot.seal-node.found .hotspot-dot{ | |
| opacity: 1 ; | |
| border: 2px solid #6cd975; | |
| background: radial-gradient(circle, rgba(255,230,130,.75), rgba(108,217,117,.5) 50%, rgba(30,80,40,.3) 80%); | |
| box-shadow: 0 0 16px rgba(108,217,117,.9), 0 0 28px rgba(255,215,0,.75), inset 0 0 10px rgba(255,255,200,.9); | |
| animation: sealFoundShimmer 2.2s infinite alternate ease-in-out; | |
| } | |
| .hotspot.seal-node.found .hotspot-dot::before{ | |
| content: '✨'; | |
| font-size: 14px; | |
| } | |
| .hotspot.seal-node.found:hover .hotspot-dot{ | |
| transform: scale(1.2); | |
| box-shadow: 0 0 24px rgba(108,217,117,1), 0 0 38px rgba(255,225,50,1), inset 0 0 14px rgba(255,255,255,1); | |
| } | |
| @keyframes sealFoundShimmer{ | |
| 0%{ | |
| transform: scale(0.95); | |
| box-shadow: 0 0 12px rgba(108,217,117,.8), 0 0 20px rgba(255,215,0,.5); | |
| border-color: #6cd975; | |
| } | |
| 50%{ | |
| box-shadow: 0 0 22px rgba(108,217,117,1), 0 0 32px rgba(255,230,100,.95), inset 0 0 12px rgba(255,255,220,.9); | |
| border-color: #ffe066; | |
| } | |
| 100%{ | |
| transform: scale(1.1); | |
| box-shadow: 0 0 28px rgba(108,217,117,1), 0 0 45px rgba(255,215,0,1), inset 0 0 16px rgba(255,255,240,1); | |
| border-color: #ffffff; | |
| } | |
| } | |
| /* 最終機關題目前置與 132 重磅登場特效 */ | |
| .final-lock-stage-box{ | |
| background: rgba(24, 16, 10, 0.85); | |
| border: 2px solid var(--amber); | |
| border-radius: 12px; | |
| padding: 16px 18px; | |
| margin-bottom: 16px; | |
| box-shadow: inset 0 0 12px rgba(0,0,0,.6); | |
| text-align: center; | |
| } | |
| .final-equation-title{ | |
| color: #e6d4ac; | |
| font-size: .95em; | |
| margin-bottom: 8px; | |
| font-family: "Noto Serif TC", serif; | |
| } | |
| .final-main-equation{ | |
| font-size: 1.24em; | |
| color: #fff4d1; | |
| font-weight: 700; | |
| margin: 10px 0; | |
| line-height: 1.8; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 8px; | |
| flex-wrap: wrap; | |
| } | |
| /* 封印未解開時的未知符號 */ | |
| .sealed-constant-mystery{ | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 4px; | |
| background: linear-gradient(180deg, #3d2612, #1f1208); | |
| border: 1.5px dashed var(--gold); | |
| color: #ffd166; | |
| padding: 2px 10px; | |
| border-radius: 6px; | |
| font-size: .9em; | |
| letter-spacing: 1px; | |
| animation: mysteryPulse 2s infinite alternate ease-in-out; | |
| box-shadow: 0 0 8px rgba(224,176,83,.4); | |
| } | |
| @keyframes mysteryPulse{ | |
| 0%{ border-color: var(--amber); box-shadow: 0 0 4px rgba(224,176,83,.3); } | |
| 100%{ border-color: #fff0aa; box-shadow: 0 0 14px rgba(255,215,0,.8); color: #fff; } | |
| } | |
| /* 132 重磅登場時的金色閃耀爆發樣式 */ | |
| .revealed-constant-132{ | |
| display: inline-flex; | |
| align-items: center; | |
| background: linear-gradient(180deg, #d4af37, #8b5a20); | |
| color: #fffef0; | |
| padding: 3px 12px; | |
| border-radius: 8px; | |
| font-size: 1.25em; | |
| font-weight: 900; | |
| border: 2px solid #fff2a8; | |
| text-shadow: 0 0 10px rgba(255,215,0,.9), 0 2px 4px rgba(0,0,0,.8); | |
| box-shadow: 0 0 22px rgba(255,215,0,1), 0 0 38px rgba(255,180,0,.7); | |
| animation: heavy132Reveal .9s cubic-bezier(0.175, 0.885, 0.32, 1.275); | |
| } | |
| @keyframes heavy132Reveal{ | |
| 0%{ transform: scale(0.2) rotate(-15deg); opacity: 0; filter: brightness(3); } | |
| 60%{ transform: scale(1.35) rotate(4deg); opacity: 1; } | |
| 100%{ transform: scale(1) rotate(0deg); opacity: 1; } | |
| } | |
| .verify-stage-guide{ | |
| font-size: .95em; | |
| line-height: 1.8; | |
| color: #e0d0b0; | |
| margin-bottom: 12px; | |
| text-align: left; | |
| background: rgba(0,0,0,.3); | |
| padding: 10px 14px; | |
| border-radius: 8px; | |
| border-left: 3px solid var(--amber); | |
| } | |
| .hotspot-label{ | |
| position:absolute; | |
| bottom: 125%; | |
| left:50%; | |
| transform: translateX(-50%); | |
| background: rgba(20,14,8,.94); | |
| color:#f3e4c2; | |
| padding:4px 10px; | |
| border-radius:6px; | |
| font-size:.82em; | |
| font-weight:600; | |
| white-space:nowrap; | |
| opacity:0; | |
| pointer-events:none ; | |
| transition: opacity .18s ease, transform .18s ease; | |
| border:1px solid var(--amber); | |
| box-shadow: 0 4px 12px rgba(0,0,0,.7); | |
| z-index: 30; | |
| } | |
| .hotspot:hover .hotspot-label{ | |
| opacity:1; | |
| transform: translateX(-50%) translateY(-4px); | |
| } | |
| .nav-arrow{ | |
| position:absolute; top:50%; transform: translateY(-50%); | |
| width:56px; height:56px; border-radius:50%; | |
| background: rgba(20,14,8,.55); | |
| border: 2px solid var(--gold); | |
| color: var(--gold); | |
| font-size:1.4em; | |
| cursor:pointer; | |
| display:flex; align-items:center; justify-content:center; | |
| transition: background .15s, transform .15s; | |
| z-index: 5; | |
| } | |
| .nav-arrow:hover{ background: rgba(224,176,83,.35); transform: translateY(-50%) scale(1.08); } | |
| .nav-left{ left:18px; } | |
| .nav-right{ right:18px; } | |
| .nav-arrow.disabled{ opacity:.25; pointer-events:none; } | |
| #scene-label{ | |
| position:absolute; top:16px; left:50%; transform: translateX(-50%); | |
| background: rgba(20,14,8,.7); | |
| color: var(--gold); | |
| padding: 6px 20px; | |
| border-radius: 20px; | |
| border: 1px solid var(--amber); | |
| font-size: 1.05em; | |
| letter-spacing: 3px; | |
| font-family:"Noto Serif TC", serif; font-weight:900; | |
| } | |
| #scene-dots{ | |
| flex-shrink:0; height:44px; | |
| display:flex; align-items:center; justify-content:center; gap:14px; | |
| background: linear-gradient(0deg,#241a10,#150e08); | |
| border-top: 1px solid var(--amber-dark); | |
| } | |
| .scene-dot{ | |
| width:12px; height:12px; border-radius:50%; | |
| background: rgba(224,176,83,.25); | |
| border: 1.5px solid var(--amber); | |
| cursor:pointer; | |
| } | |
| .scene-dot.active{ background: var(--gold); box-shadow:0 0 8px var(--gold); } | |
| .scene-dot.locked{ opacity:.4; cursor:not-allowed; } | |
| /* ---------------- 側邊面板(背包 & 機關紀錄) ---------------- */ | |
| .side-panel{ | |
| position:fixed; top:0; right:0; height:100%; width:400px; max-width:92vw; | |
| background: linear-gradient(180deg, #f3e4c2, #e6d1a0); | |
| border-left: 3px solid var(--amber-dark); | |
| box-shadow: -10px 0 30px var(--shadow); | |
| z-index: 60; | |
| display:flex; flex-direction:column; | |
| padding: 18px 20px; | |
| overflow-y:auto; | |
| animation: slideIn .25s ease; | |
| } | |
| @keyframes slideIn{ from{ transform: translateX(100%);} to{ transform: translateX(0);} } | |
| .panel-header{ display:flex; align-items:center; justify-content:space-between; } | |
| .panel-header h2{ font-family:"Noto Serif TC", serif; font-weight:900; color: var(--amber-dark); margin:0; font-size:1.45em; } | |
| .panel-hint{ font-size:.85em; color:#6b4a26; margin: 6px 0 16px; line-height: 1.5; } | |
| .btn-close{ | |
| background:none; border:none; font-size:1.6em; color: var(--amber-dark); cursor:pointer; line-height:1; | |
| } | |
| #clue-list, #solved-lock-list{ display:flex; flex-direction:column; gap:12px; } | |
| .clue-section-title{ | |
| font-weight:900; color: var(--amber-dark); font-size:1em; | |
| margin: 14px 0 2px; padding-bottom:4px; | |
| border-bottom: 1.5px solid rgba(139,90,32,.3); | |
| } | |
| .clue-section-title:first-child{ margin-top:0; } | |
| .clue-card{ | |
| background: rgba(255,255,255,.45); | |
| border: 1.5px solid var(--amber-dark); | |
| border-radius: 8px; | |
| padding: 10px 12px; | |
| cursor:pointer; | |
| display:flex; align-items:center; gap:10px; | |
| transition: all .15s ease; | |
| } | |
| .clue-card:hover{ background: rgba(255,255,255,.75); transform: translateX(-2px); } | |
| .clue-card .clue-emoji{ font-size:1.6em; } | |
| .clue-card .clue-title{ font-weight:700; color: var(--ink); font-size:.95em; } | |
| .clue-card .clue-loc{ font-size:.78em; color:#8a5a20; } | |
| .clue-card.seal-card{ border-color: #b5842f; background: rgba(224,176,83,.18); } | |
| .clue-empty, .solved-empty{ | |
| color:#8a5a20; text-align:center; margin-top:36px; font-size:.95em; line-height:1.7; | |
| } | |
| /* 已解機關卡片 */ | |
| .solved-card{ | |
| background: rgba(255,255,255,.55); | |
| border: 1.5px solid #8a5a20; | |
| border-left: 5px solid #4a7c3f; | |
| border-radius: 8px; | |
| padding: 12px 14px; | |
| display:flex; flex-direction:column; gap:6px; | |
| box-shadow: 0 2px 8px rgba(0,0,0,.08); | |
| } | |
| .solved-card-header{ | |
| display:flex; align-items:center; justify-content:space-between; | |
| } | |
| .solved-card-title{ | |
| font-weight:900; color: var(--amber-dark); font-size:1em; | |
| } | |
| .solved-badge-pill{ | |
| background: rgba(74,124,63,.15); | |
| color: #3b6832; | |
| border: 1px solid rgba(74,124,63,.4); | |
| border-radius: 12px; | |
| padding: 2px 8px; | |
| font-size: .75em; | |
| font-weight:700; | |
| } | |
| .solved-formula{ | |
| font-size: .88em; color: #5a3d1c; line-height: 1.5; | |
| } | |
| .solved-result{ | |
| font-size: .95em; font-weight:700; color: var(--ink); | |
| background: rgba(224,176,83,.2); | |
| padding: 6px 10px; | |
| border-radius: 6px; | |
| margin-top: 2px; | |
| } | |
| .solved-keynote{ | |
| font-size: .85em; font-weight:700; color: #9c4819; | |
| display:flex; align-items:center; gap:4px; | |
| } | |
| .solved-keynote.highlight{ | |
| color: #b33918; | |
| background: rgba(217,83,79,.12); | |
| border: 1px dashed rgba(217,83,79,.4); | |
| padding: 4px 8px; | |
| border-radius: 4px; | |
| } | |
| /* ---------------- Modal ---------------- */ | |
| .modal-overlay{ | |
| position:fixed; inset:0; z-index:80; | |
| background: rgba(10,6,3,.75); | |
| display:flex; align-items:center; justify-content:center; | |
| padding: 20px; | |
| } | |
| .modal-box{ | |
| position:relative; | |
| background: linear-gradient(180deg, #f6ecd4, #ecdab3); | |
| border: 3px solid var(--amber-dark); | |
| border-radius: 14px; | |
| max-width: 640px; width:100%; | |
| max-height: 86vh; | |
| overflow-y:auto; | |
| padding: 28px 30px; | |
| box-shadow: 0 20px 60px var(--shadow); | |
| } | |
| .modal-close{ | |
| position:absolute; top:12px; right:16px; | |
| } | |
| .clue-modal-header, .lock-modal-header{ | |
| display:flex; align-items:center; gap:10px; margin-bottom:14px; | |
| } | |
| .clue-modal-header h3, .lock-modal-header h3{ | |
| margin:0; color: var(--amber-dark); font-family:"Noto Serif TC", serif; font-weight:900; font-size:1.4em; | |
| } | |
| #clue-modal-image-wrap, .lock-modal-image-wrap{ | |
| text-align:center; margin-bottom:14px; | |
| } | |
| #clue-modal-image-wrap img, .lock-modal-image-wrap img{ | |
| max-width:100%; max-height:220px; border-radius:8px; border:2px solid var(--amber-dark); | |
| box-shadow: 0 6px 16px rgba(0,0,0,.35); | |
| } | |
| /* 線索不足提示盒 */ | |
| .lock-locked-box{ | |
| background: rgba(163,58,44,.08); | |
| border: 2px dashed #a33a2c; | |
| border-radius: 10px; | |
| padding: 16px 20px; | |
| margin: 12px 0 16px; | |
| text-align: center; | |
| } | |
| .lock-locked-badge{ | |
| font-size: 1.05em; font-weight:900; color: #a33a2c; margin-bottom: 10px; | |
| } | |
| .latex-content{ | |
| line-height:1.9; font-size:1.02em; color: var(--ink); margin-bottom: 16px; white-space: pre-line; | |
| } | |
| .latex-content b{ color: var(--amber-dark); } | |
| .modal-ok-btn{ width:100%; } | |
| #lock-modal-hint-toggle{ margin-bottom: 16px; } | |
| #lock-modal-hint{ | |
| margin-top:10px; padding:12px 14px; | |
| background: rgba(224,176,83,.18); | |
| border-left: 4px solid var(--amber); | |
| border-radius: 6px; | |
| font-size:.95em; | |
| } | |
| #lock-input-area{ margin-bottom: 14px; } | |
| .lock-feedback{ | |
| min-height: 24px; font-weight:700; margin-bottom: 12px; text-align:center; | |
| } | |
| .lock-feedback.correct{ color: var(--success); } | |
| .lock-feedback.wrong{ color: var(--danger); } | |
| /* 轉盤 / 分段輸入樣式 */ | |
| .dial-row{ display:flex; gap:12px; justify-content:center; flex-wrap:wrap; margin: 14px 0; } | |
| .dial-group{ display:flex; flex-direction:column; align-items:center; gap:6px; } | |
| .dial-group label{ font-size:.8em; color:#6b4a26; } | |
| .dial-input{ | |
| width: 84px; padding: 10px 6px; | |
| text-align:center; font-size:1.2em; font-weight:700; | |
| border: 2px solid var(--amber-dark); border-radius: 8px; | |
| background:#fffaf0; color: var(--ink); | |
| font-family:"Noto Serif TC", serif; | |
| } | |
| .dial-input:focus{ outline:2px solid var(--gold); } | |
| .single-input{ | |
| width: 100%; max-width:220px; display:block; margin: 14px auto 0; | |
| padding: 12px; text-align:center; font-size:1.3em; font-weight:700; | |
| border: 2px solid var(--amber-dark); border-radius: 8px; | |
| background:#fffaf0; color: var(--ink); | |
| } | |
| .success-modal-box{ text-align:center; max-width: 420px; } | |
| .success-icon{ font-size:3em; margin-bottom:6px; } | |
| #success-title{ color: var(--success); font-family:"Noto Serif TC", serif; font-weight:900; font-size:1.6em; margin:6px 0; } | |
| #success-reward{ line-height:1.7; margin-bottom:20px; } | |
| #ending-stats{ | |
| background: rgba(224,176,83,.18); | |
| border: 1.5px solid var(--amber); | |
| border-radius:10px; | |
| padding: 16px 20px; | |
| margin-bottom:20px; | |
| font-size:.96em; | |
| line-height:1.9; | |
| box-shadow: inset 0 0 10px rgba(139,90,32,.1); | |
| } | |
| .time-stat-grid{ | |
| display:flex; | |
| gap: 12px; | |
| margin-top: 10px; | |
| flex-wrap: wrap; | |
| } | |
| .time-stat-card{ | |
| flex: 1; | |
| min-width: 200px; | |
| background: rgba(255,255,255,.6); | |
| border: 1px solid var(--amber); | |
| border-radius: 8px; | |
| padding: 8px 14px; | |
| display:flex; | |
| flex-direction:column; | |
| gap: 2px; | |
| } | |
| .time-stat-label{ font-size: .85em; color: #7a4f21; font-weight:700; } | |
| .time-stat-val{ font-size: 1.15em; font-weight: 900; color: var(--ink); font-family: "Courier New", monospace, sans-serif; } | |
| .time-stat-card.hidden-time{ | |
| background: linear-gradient(180deg, rgba(255,245,210,.9), rgba(240,220,160,.9)); | |
| border-color: #d4af37; | |
| box-shadow: 0 0 10px rgba(212,175,55,.35); | |
| } | |
| .time-stat-card.hidden-time .time-stat-val{ color: #9c6500; } | |
| .intro-btns{ | |
| display:flex; flex-direction:column; align-items:center; gap:8px; | |
| } | |
| .ending-actions{ | |
| display:flex; gap:12px; justify-content:center; flex-wrap:wrap; margin-top:16px; | |
| } | |
| /* 五關通關震撼轉場層 */ | |
| .door-reveal-overlay{ | |
| position:fixed; inset:0; z-index:150; | |
| background: radial-gradient(circle at center, rgba(139,90,32,.9), rgba(15,10,5,.98) 70%); | |
| display:flex; align-items:center; justify-content:center; | |
| padding:24px; | |
| animation: revealFadeIn .6s cubic-bezier(0.16, 1, 0.3, 1); | |
| } | |
| @keyframes revealFadeIn{ | |
| from{ opacity:0; transform: scale(1.08); } | |
| to{ opacity:1; transform: scale(1); } | |
| } | |
| .door-reveal-box{ | |
| max-width: 620px; | |
| background: linear-gradient(180deg, rgba(246,236,212,.98), rgba(230,210,165,.98)); | |
| border: 4px solid var(--gold); | |
| border-radius: 16px; | |
| padding: 36px 32px; | |
| text-align: center; | |
| box-shadow: 0 0 60px rgba(224,176,83,.6), 0 20px 60px rgba(0,0,0,.9); | |
| animation: boxShake .5s ease-out; | |
| } | |
| @keyframes boxShake{ | |
| 0%, 100%{ transform: translate(0,0); } | |
| 20%{ transform: translate(-4px, 2px); } | |
| 40%{ transform: translate(4px, -2px); } | |
| 60%{ transform: translate(-2px, 1px); } | |
| 80%{ transform: translate(2px, -1px); } | |
| } | |
| .door-reveal-icon{ font-size:3.6em; margin-bottom:8px; animation: glowPulse 2s infinite alternate ease-in-out; } | |
| @keyframes glowPulse{ from{ filter: drop-shadow(0 0 10px rgba(224,176,83,.5)); } to{ filter: drop-shadow(0 0 30px rgba(224,176,83,.95)); } } | |
| .door-reveal-title{ | |
| color: var(--amber-dark); font-family:"Noto Serif TC", serif; font-weight:900; font-size:1.8em; margin: 6px 0 14px; | |
| letter-spacing: 2px; | |
| } | |
| .door-reveal-text{ | |
| font-size:1.05em; line-height:1.9; color: var(--ink); margin-bottom:24px; | |
| } | |
| .pulse-btn{ | |
| animation: pulseBtn 1.8s infinite ease-in-out; | |
| } | |
| @keyframes pulseBtn{ | |
| 0%, 100%{ transform: scale(1); box-shadow: 0 4px 0 #6b4114, 0 8px 16px rgba(0,0,0,.4); } | |
| 50%{ transform: scale(1.05); box-shadow: 0 4px 0 #6b4114, 0 12px 28px rgba(224,176,83,.8); } | |
| } | |
| .toast{ | |
| position:fixed; bottom: 70px; left:50%; transform: translateX(-50%); | |
| background: rgba(20,14,8,.92); color: var(--gold); | |
| border: 1.5px solid var(--amber); | |
| padding: 10px 22px; border-radius: 24px; | |
| font-size:.95em; z-index: 200; | |
| animation: toastIn .2s ease; | |
| } | |
| @keyframes toastIn{ from{ opacity:0; transform: translate(-50%, 10px);} to{ opacity:1; transform: translate(-50%,0);} } | |
| /* 結局立繪與對白視覺專區 */ | |
| .ending-content-box{ | |
| max-width: 720px ; | |
| max-height: 92vh; | |
| overflow-y: auto; | |
| } | |
| .ending-visual-wrap{ | |
| display:flex; | |
| justify-content:center; | |
| margin: 12px 0 16px; | |
| } | |
| .ending-portrait-card{ | |
| display:inline-flex; | |
| flex-direction:column; | |
| align-items:center; | |
| background: linear-gradient(180deg, rgba(40,25,12,.95), rgba(20,12,6,.98)); | |
| border: 3px solid var(--gold); | |
| border-radius: 14px; | |
| padding: 12px; | |
| box-shadow: 0 8px 30px rgba(0,0,0,.7), 0 0 25px rgba(224,176,83,.4); | |
| position:relative; | |
| animation: portraitFadeIn .7s ease; | |
| } | |
| @keyframes portraitFadeIn{ | |
| from{ opacity:0; transform: translateY(12px) scale(.95); } | |
| to{ opacity:1; transform: translateY(0) scale(1); } | |
| } | |
| .ending-portrait-img{ | |
| width: 220px; | |
| height: 220px; | |
| object-fit: cover; | |
| border-radius: 10px; | |
| border: 1.5px solid var(--amber); | |
| box-shadow: 0 4px 12px rgba(0,0,0,.8); | |
| } | |
| .ending-portrait-card.jade-seal .ending-portrait-img{ | |
| border-color: #7ce890; | |
| box-shadow: 0 0 24px rgba(120,230,140,.6), 0 0 40px rgba(255,215,0,.5); | |
| } | |
| .ending-role-tag{ | |
| margin-top: 8px; | |
| background: linear-gradient(90deg, #8b5a20, #4a2808, #8b5a20); | |
| color: var(--gold); | |
| font-family: "Noto Serif TC", serif; | |
| font-weight: 900; | |
| font-size: .92em; | |
| letter-spacing: 2px; | |
| padding: 4px 14px; | |
| border-radius: 20px; | |
| border: 1px solid var(--amber); | |
| box-shadow: 0 2px 6px rgba(0,0,0,.6); | |
| } | |
| .ending-dialog-box{ | |
| background: rgba(246,236,212,.95); | |
| border: 2px solid var(--amber-dark); | |
| border-radius: 10px; | |
| padding: 18px 22px; | |
| box-shadow: inset 0 0 15px rgba(139,90,32,.12); | |
| margin-bottom: 16px; | |
| } | |
| /* KaTeX 微調 */ | |
| .katex{ font-size: 1.05em; } | |
| @media (max-width: 640px){ | |
| #game-title{ font-size:1.0em; } | |
| #lock-progress{ display:none; } | |
| .music-controls{ padding: 2px 6px; } | |
| #volume-slider{ width: 45px; } | |
| .nav-arrow{ width:44px; height:44px; font-size:1.1em; } | |
| .intro-content{ padding: 20px 16px; } | |
| .modal-box{ padding: 18px 16px; } | |
| .door-reveal-title{ font-size:1.35em; } | |
| .ending-portrait-img{ width: 160px; height: 160px; } | |
| } | |