From 1b8d1744b2bc25b11fe322514f7f27041762e90f Mon Sep 17 00:00:00 2001 From: CAtlas0784 Date: Sat, 17 Oct 2026 01:32:19 +0700 Subject: [PATCH] feat(srtool): add E6S5/E0S1 preset buttons, full light cone preview art, and build showcase card system --- css/styles.css | 373 ++++++++++++++++++++++++ index.html | 110 +++++-- js/app.js | 766 ++++++++++++++++++++++++++++++++++++++++++++++--- js/i18n.js | 24 ++ 4 files changed, 1215 insertions(+), 58 deletions(-) diff --git a/css/styles.css b/css/styles.css index f871a55..b2e7e6e 100644 --- a/css/styles.css +++ b/css/styles.css @@ -1342,3 +1342,376 @@ input:checked + .slider:before { box-shadow: 0 4px 12px rgba(239, 68, 68, 0.25); transform: translateY(-1px); } + +/* ========================================================================== + Modal Avatar Detail Widescreen Expansion + ========================================================================== */ +#modal-avatar-detail .modal-content { + max-width: 980px !important; + width: 96% !important; + max-height: 92vh !important; + overflow-y: auto !important; +} + +/* ========================================================================== + Full Light Cone Art & Preview Section + ========================================================================== */ +.lc-preview-container { + display: grid; + grid-template-columns: 210px 1fr; + gap: 1.5rem; + background: rgba(15, 23, 42, 0.45); + border: 1px solid var(--border-color); + border-radius: var(--radius-lg); + padding: 1.25rem; + align-items: start; +} + +@media (max-width: 768px) { + .lc-preview-container { + grid-template-columns: 1fr; + justify-items: center; + } +} + +.lc-art-wrapper { + width: 210px; + height: 290px; + border-radius: var(--radius-md); + overflow: hidden; + position: relative; + background: #0b0f19; + border: 2px solid rgba(251, 191, 36, 0.5); + box-shadow: 0 10px 25px rgba(0, 0, 0, 0.6), 0 0 20px rgba(251, 191, 36, 0.15); + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; +} + +.lc-art-wrapper.rarity-5 { + border-color: rgba(251, 191, 36, 0.8); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.7), 0 0 25px rgba(251, 191, 36, 0.35); +} + +.lc-art-wrapper.rarity-4 { + border-color: rgba(192, 132, 252, 0.8); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.7), 0 0 25px rgba(192, 132, 252, 0.35); +} + +.lc-full-img { + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 0.3s ease; + display: block; +} + +.lc-art-wrapper:hover .lc-full-img { + transform: scale(1.05); +} + +.lc-placeholder-text { + color: var(--text-muted); + font-size: 0.85rem; + text-align: center; + padding: 1rem; +} + +.lc-details-col { + display: flex; + flex-direction: column; + gap: 0.5rem; + min-width: 0; + width: 100%; +} + +.badge-super-tag { + background: linear-gradient(135deg, rgba(56, 189, 248, 0.2) 0%, rgba(99, 102, 241, 0.2) 100%); + border: 1px solid rgba(56, 189, 248, 0.4); + color: var(--accent-cyan); + padding: 0.3rem 0.75rem; + border-radius: 9999px; + font-weight: 800; + font-size: 0.85rem; + letter-spacing: 0.5px; +} + +.lc-passive-card { + background: rgba(11, 15, 25, 0.75); + border: 1px solid rgba(56, 189, 248, 0.25); + border-radius: var(--radius-md); + padding: 0.85rem 1rem; + margin-top: 0.5rem; +} + +.lc-passive-title { + font-size: 0.8rem; + font-weight: 800; + text-transform: uppercase; + color: var(--accent-cyan); + margin-bottom: 0.35rem; + letter-spacing: 0.5px; +} + +.lc-passive-body { + font-size: 0.85rem; + line-height: 1.55; + color: #cbd5e1; +} + +.lc-passive-body strong { + color: #38bdf8; +} + +/* ========================================================================== + Showcase Card System (Matching srtools.punklorde.org/showcase-card) + ========================================================================== */ +.showcase-card-layout { + background: linear-gradient(135deg, #0d111a 0%, #151a27 50%, #0f131f 100%); + border: 1px solid rgba(255, 255, 255, 0.12); + border-radius: 16px; + padding: 1.25rem; + box-shadow: 0 16px 40px rgba(0, 0, 0, 0.7), inset 0 0 40px rgba(56, 189, 248, 0.03); + display: grid; + grid-template-columns: 240px 1.15fr 1.35fr; + gap: 1.25rem; + position: relative; + overflow: hidden; +} + +@media (max-width: 960px) { + .showcase-card-layout { + grid-template-columns: 1fr; + gap: 1.25rem; + } +} + +.showcase-splash-col { + position: relative; + border-radius: 12px; + overflow: hidden; + background: radial-gradient(circle at center, rgba(56, 189, 248, 0.15) 0%, rgba(11, 15, 25, 0.8) 100%); + display: flex; + flex-direction: column; + justify-content: flex-end; + min-height: 380px; + border: 1px solid rgba(255, 255, 255, 0.08); +} + +.showcase-splash-img { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + object-fit: cover; + object-position: top center; + transition: transform 0.4s ease; +} + +.showcase-splash-col:hover .showcase-splash-img { + transform: scale(1.04); +} + +.showcase-splash-overlay { + position: relative; + z-index: 2; + background: linear-gradient(to top, rgba(10, 14, 23, 0.95) 0%, rgba(10, 14, 23, 0.75) 50%, transparent 100%); + padding: 1rem 0.85rem; +} + +.showcase-char-name { + font-size: 1.35rem; + font-weight: 800; + color: #fff; + text-shadow: 0 2px 8px rgba(0, 0, 0, 0.8); + margin-bottom: 0.25rem; +} + +.showcase-eidolon-strip { + display: flex; + gap: 0.35rem; + margin-top: 0.5rem; +} + +.showcase-eidolon-dot { + width: 24px; + height: 24px; + border-radius: 50%; + background: rgba(255, 255, 255, 0.1); + border: 1px solid rgba(255, 255, 255, 0.2); + display: flex; + align-items: center; + justify-content: center; + font-size: 0.65rem; + font-weight: 800; + color: var(--text-muted); +} + +.showcase-eidolon-dot.active { + background: linear-gradient(135deg, #fbbf24 0%, #d97706 100%); + border-color: #fbbf24; + color: #000; + box-shadow: 0 0 10px rgba(251, 191, 36, 0.6); +} + +.showcase-center-col { + display: flex; + flex-direction: column; + gap: 0.85rem; +} + +.showcase-lc-box { + background: rgba(18, 24, 38, 0.65); + border: 1px solid var(--border-color); + border-radius: 10px; + padding: 0.75rem; + display: flex; + gap: 0.75rem; + align-items: center; +} + +.showcase-lc-thumb { + width: 52px; + height: 72px; + border-radius: 6px; + object-fit: cover; + border: 1px solid rgba(251, 191, 36, 0.5); + flex-shrink: 0; +} + +.showcase-sets-box { + background: rgba(18, 24, 38, 0.65); + border: 1px solid var(--border-color); + border-radius: 10px; + padding: 0.75rem; + display: flex; + flex-direction: column; + gap: 0.4rem; +} + +.showcase-set-item { + display: flex; + justify-content: space-between; + align-items: center; + font-size: 0.8rem; + font-weight: 700; +} + +.showcase-set-badge { + background: rgba(56, 189, 248, 0.15); + border: 1px solid rgba(56, 189, 248, 0.4); + color: var(--accent-cyan); + padding: 0.1rem 0.45rem; + border-radius: 4px; + font-size: 0.75rem; +} + +.showcase-stats-list { + background: rgba(18, 24, 38, 0.65); + border: 1px solid var(--border-color); + border-radius: 10px; + padding: 0.75rem; + display: grid; + grid-template-columns: 1fr 1fr; + gap: 0.5rem 0.85rem; +} + +.showcase-stat-row { + display: flex; + justify-content: space-between; + align-items: center; + font-size: 0.8rem; + border-bottom: 1px dashed rgba(255, 255, 255, 0.06); + padding-bottom: 0.25rem; +} + +.showcase-stat-label { + color: var(--text-muted); + display: flex; + align-items: center; + gap: 0.35rem; +} + +.showcase-stat-val { + font-weight: 800; + font-family: monospace; + color: var(--text-highlight); +} + +.showcase-relics-col { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.showcase-relic-card { + background: rgba(18, 24, 38, 0.65); + border: 1px solid var(--border-color); + border-radius: 8px; + padding: 0.5rem 0.65rem; + display: flex; + gap: 0.6rem; + align-items: center; + transition: transform 0.2s ease, border-color 0.2s ease; +} + +.showcase-relic-card:hover { + border-color: rgba(56, 189, 248, 0.4); + transform: translateX(3px); +} + +.showcase-relic-icon-wrap { + width: 40px; + height: 40px; + border-radius: 8px; + background: rgba(0, 0, 0, 0.5); + border: 1px solid rgba(251, 191, 36, 0.4); + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + position: relative; +} + +.showcase-relic-img { + width: 32px; + height: 32px; + object-fit: contain; +} + +.showcase-relic-lvl-tag { + position: absolute; + bottom: -4px; + right: -4px; + background: #fbbf24; + color: #000; + font-size: 0.65rem; + font-weight: 800; + padding: 0 0.25rem; + border-radius: 3px; + line-height: 1.2; +} + +.showcase-relic-info { + flex: 1; + min-width: 0; +} + +.showcase-relic-main-stat { + font-size: 0.8rem; + font-weight: 800; + color: var(--text-highlight); + display: flex; + justify-content: space-between; +} + +.showcase-relic-subs { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 0.15rem 0.4rem; + margin-top: 0.25rem; + font-size: 0.7rem; + color: var(--text-muted); +} diff --git a/index.html b/index.html index 0558600..e86863b 100644 --- a/index.html +++ b/index.html @@ -476,9 +476,14 @@ - +
+ + +
@@ -492,6 +497,9 @@ + @@ -655,26 +663,43 @@ - +