diff --git a/static/css/my-style.css b/static/css/my-style.css index b2ac112..25b7f55 100644 --- a/static/css/my-style.css +++ b/static/css/my-style.css @@ -178,7 +178,307 @@ button { cursor: pointer; font-family: inherit; } margin: 0 auto; padding: 2rem 2rem 4rem; } +.project-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 1.5rem; + margin-bottom: 1.75rem; + padding: 1.4rem 1.6rem; + border: 1px solid rgba(255,255,255,0.08); + border-radius: var(--radius-lg); + background: rgba(255,255,255,0.04); + backdrop-filter: blur(12px); +} +.project-header-info { + max-width: min(720px, 100%); +} + +.eyebrow { + display: inline-flex; + align-items: center; + gap: 0.35rem; + padding: 0.25rem 0.75rem; + border-radius: 999px; + background: rgba(99,102,241,0.12); + color: #dbeafe; + font-size: 0.78rem; + font-weight: 600; + letter-spacing: 0.04em; + margin-bottom: 0.85rem; +} + +.project-header h1 { + font-size: 1.75rem; + line-height: 1.1; + margin-bottom: 0.5rem; +} + +.project-subtitle { + color: var(--text-secondary); + max-width: 740px; +} + +.project-header-actions { + display: flex; + align-items: center; + gap: 0.75rem; + flex-wrap: wrap; +} + +.btn-secondary { + background: transparent; + color: var(--text-primary); + border: 1px solid rgba(255,255,255,0.14); +} + +.btn-secondary:hover { + background: rgba(255,255,255,0.08); +} + +.tabs { + display: flex; + flex-wrap: wrap; + gap: 0.75rem; + margin-bottom: 1.5rem; +} + +.tab { + padding: 0.85rem 1.15rem; + border-radius: 999px; + background: rgba(255,255,255,0.04); + color: var(--text-secondary); + font-weight: 600; + cursor: pointer; + transition: background var(--transition), color var(--transition), transform var(--transition); +} + +.tab:hover { + background: rgba(255,255,255,0.08); +} + +.tab.active { + background: var(--accent); + color: #fff; +} + +.panel { + background: rgba(255,255,255,0.04); + border: 1px solid rgba(255,255,255,0.08); + border-radius: var(--radius-lg); + padding: 1.5rem; + margin-bottom: 1.5rem; +} + +.panel-header, +.panel-card-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 1rem; + margin-bottom: 1.25rem; +} + +.panel-header h2, +.panel-card-header h3 { + font-size: 1.1rem; + margin: 0; +} + +.panel-note { + color: var(--text-secondary); + font-size: 0.92rem; + margin-top: 0.35rem; +} + +.panel-actions { + display: flex; + align-items: center; + gap: 0.75rem; + flex-wrap: wrap; +} + +.panel-card { + background: rgba(255,255,255,0.03); + border: 1px solid rgba(255,255,255,0.08); + border-radius: var(--radius-md); + padding: 1.2rem; +} + +.panel-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); + gap: 1rem; +} + +.summary-card { + padding: 1.25rem; + display: flex; + flex-direction: column; + gap: 0.85rem; + min-height: 140px; +} + +.summary-card-title { + color: var(--text-secondary); + font-size: 0.85rem; + text-transform: uppercase; + letter-spacing: 0.08em; +} + +.summary-card-value { + font-size: 1.45rem; + font-weight: 700; + color: var(--text-primary); +} + +.summary-card-note { + color: var(--text-muted); + font-size: 0.88rem; +} + +.card-form { + display: grid; + gap: 1rem; +} + +.pages-list { + display: grid; + gap: 0.75rem; +} + +.page-item { + display: flex; + align-items: center; + justify-content: space-between; + gap: 1rem; + padding: 1rem; + border-radius: var(--radius-sm); + background: rgba(255,255,255,0.03); + border: 1px solid rgba(255,255,255,0.08); +} + +.page-item-info { + display: flex; + flex-direction: column; + gap: 0.25rem; +} + +.page-item-info strong { + color: var(--text-primary); +} + +.page-file { + color: var(--text-secondary); + font-size: 0.85rem; +} + +.page-item-actions { + display: flex; + align-items: center; + gap: 0.65rem; + flex-wrap: wrap; +} + +.page-empty { + padding: 1.2rem; + border-radius: var(--radius-sm); + border: 1px dashed rgba(255,255,255,0.16); + color: var(--text-secondary); + background: rgba(255,255,255,0.02); +} + +.tree-root { + padding: 0.75rem; + border-radius: var(--radius-sm); + border: 1px solid rgba(255,255,255,0.08); + background: rgba(255,255,255,0.03); + min-height: 170px; +} + +.tree-item { + list-style: none; + padding: 0.65rem 0.8rem; + display: flex; + align-items: center; + justify-content: space-between; + border-radius: var(--radius-sm); + border: 1px solid transparent; + transition: background var(--transition), border-color var(--transition); +} + +.tree-item:hover { + background: rgba(255,255,255,0.05); + border-color: rgba(255,255,255,0.1); +} + +.tree-title { + color: var(--text-primary); + font-size: 0.95rem; +} + +.tree-children { + list-style: none; + padding-left: 1rem; + margin-top: 0.35rem; +} + +.tree-drop-hover { + background: rgba(99,102,241,0.1); +} + +.tree-item-actions .btn { + padding: 0.35rem 0.7rem; +} + +.media-controls { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 0.85rem; + margin-bottom: 1rem; +} + +.media-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); + gap: 1rem; +} + +.media-card { + display: flex; + flex-direction: column; + gap: 0.75rem; + padding: 1rem; + border-radius: var(--radius-sm); + border: 1px solid rgba(255,255,255,0.08); + background: rgba(255,255,255,0.03); +} + +.media-card img { + width: 100%; + height: auto; + border-radius: var(--radius-sm); + object-fit: cover; +} + +.media-info { + display: flex; + flex-direction: column; + gap: 0.25rem; +} + +.media-meta { + color: var(--text-secondary); + font-size: 0.82rem; +} + +.media-actions { + display: flex; + gap: 0.6rem; + flex-wrap: wrap; +} /* ── 搜尋列 ─────────────────────────────────────────────────────── */ .search-bar-wrap { margin-bottom: 2rem; diff --git a/templates/dashboard.html b/templates/dashboard.html index acc3d10..98e1f7f 100644 --- a/templates/dashboard.html +++ b/templates/dashboard.html @@ -281,6 +281,14 @@ function renderProjects(projects) {