/* Default article style */ .article-list { display: flex; flex-direction: column; gap: var(--section-separation); article { display: flex; flex-direction: column; @include card-style; overflow: hidden; transition: box-shadow 0.3s ease; &:hover { box-shadow: var(--shadow-l2); } .article-image { img { width: 100%; height: var(--article-image-height); object-fit: cover; } } } } .article-details { display: flex; flex-direction: column; justify-content: center; padding: var(--card-padding); gap: var(--spacing-md); } .article-title { font-family: var(--article-font-family); font-weight: 600; margin: 0; color: var(--card-text-color-main); font-size: 2.2rem; @include respond(xl) { font-size: 2.4rem; } a { color: var(--card-text-color-main); &:hover { opacity: 0.8; } } } .article-subtitle { font-weight: normal; color: var(--card-text-color-secondary); line-height: 1.5; margin: 0; font-size: 1.75rem; @include respond(xl) { font-size: 2rem; } } .article-title-wrapper { display: flex; flex-direction: column; gap: 8px; } .article-meta { display: flex; flex-direction: column; gap: var(--spacing-lg); font-size: 1.4rem; svg { vertical-align: middle; width: 20px; height: 20px; stroke-width: 1.33; flex-shrink: 0; } &, time, a, span { font-size: 1.4rem; color: var(--card-text-color-tertiary); } & > .inline-meta { display: inline-flex; flex-wrap: wrap; align-items: center; gap: var(--spacing-md); } } .article-category, .article-tags { display: flex; gap: var(--spacing-sm); flex-wrap: wrap; a { color: var(--accent-color-text); background-color: var(--accent-color); padding: 8px 16px; border-radius: var(--tag-border-radius); display: inline-block; font-size: 1.4rem; transition: background-color 0.5s ease; &:hover { color: var(--accent-color-text); background-color: var(--accent-color-darker); } } } /* Compact style article list */ .article-list--compact { @include card-style; --image-size: var(--article-compact-image-size); article { & > a { display: flex; align-items: center; padding: var(--small-card-padding); gap: var(--spacing-md); } &:not(:last-of-type) { border-bottom: 1.5px solid var(--card-separator-color); } .article-details { flex-grow: 1; padding: 0; min-height: var(--image-size); gap: var(--spacing-sm); } .article-title { margin: 0; font-size: 1.6rem; @include respond(md) { font-size: 1.8rem; } } .article-image { img { width: var(--image-size); height: var(--image-size); object-fit: cover; } } .article-preview { font-size: 1.4rem; color: var(--card-text-color-tertiary); line-height: 1.5; } } } /* Tile style article list */ .article-list--tile { article { position: relative; width: var(--article-tile-width); height: var(--article-tile-height); @include card-style; overflow: hidden; transition: box-shadow 0.3s ease; &:hover { box-shadow: var(--shadow-l2); } &.has-image { .article-details { background-color: var(--article-tile-overlay-bg); } .article-title { color: var(--article-tile-text-color); } } .article-image { position: absolute; top: 0; left: 0; width: 100%; height: 100%; img { width: 100%; height: 100%; object-fit: cover; } } .article-details { border-radius: var(--card-border-radius); position: relative; height: 100%; width: 100%; display: flex; flex-direction: column; justify-content: flex-end; z-index: 2; padding: 15px; @include respond(sm) { padding: 20px; } } .article-title { font-size: 2rem; font-weight: 500; color: var(--card-text-color-main); @include respond(sm) { font-size: 2.2rem; } } } } .mermaid:not([data-processed]) { background: var(--card-background); min-height: 150px; border-radius: 8px; position: relative; overflow: hidden; font-size: 0 !important; line-height: 0; color: transparent; &::after { visibility: visible; content: ""; position: absolute; top: 50%; left: 50%; width: 28px; height: 28px; margin: -14px 0 0 -14px; border: 3px solid var(--card-background); border-top-color: var(--accent-color, #3273dc); border-radius: 50%; animation: mermaid-spinner 0.8s linear infinite; } } @keyframes mermaid-spinner { to { transform: rotate(360deg); } } // Mermaid diagram wrapper with expand toolbar .mermaid-wrapper { position: relative; margin: 1rem 0; .mermaid { display: flex; justify-content: center; svg { display: block; max-width: 100%; height: auto; } } } .mermaid-toolbar { position: absolute; top: 0.75rem; right: 0.75rem; display: flex; gap: 0.5rem; z-index: 10; button { padding: 0.5rem 1rem; background: var(--mermaid-toolbar-btn-bg); border: 2px solid var(--mermaid-toolbar-btn-text); border-radius: 6px; cursor: pointer; font-size: 1rem; font-weight: 600; color: var(--mermaid-toolbar-btn-text); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); transition: all 0.2s; &:hover { background: var(--mermaid-toolbar-btn-text); color: var(--card-background); transform: scale(1.05); } } } // Mermaid fullscreen modal .mermaid-modal { display: none; position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: var(--mermaid-modal-bg); z-index: 9999; &.active { display: flex; flex-direction: column; } } .mermaid-modal-header { display: flex; justify-content: space-between; align-items: center; padding: 0.75rem 1rem; background: rgba(255, 255, 255, 0.1); } .mermaid-modal-controls { display: flex; gap: 0.5rem; } .mermaid-modal-controls button, .mermaid-modal-close { padding: 0.5rem 1rem; background: var(--mermaid-modal-btn-bg); border: none; border-radius: 4px; cursor: pointer; font-size: 0.9rem; color: var(--card-text-color-main); &:hover { background: var(--mermaid-modal-btn-hover); } } .mermaid-modal-body { flex: 1; overflow: hidden; position: relative; } .mermaid-modal-content { position: absolute; top: 1rem; left: 1rem; right: 1rem; bottom: 1rem; border-radius: 8px; overflow: hidden; background: var(--mermaid-modal-content-bg); } .mermaid-panzoom-container { display: inline-block; transform-origin: 0 0; visibility: hidden; &.ready { visibility: visible; } svg { display: block; } } // Off-screen container for pre-rendering alternate theme .mermaid-offscreen { position: absolute; left: -9999px; visibility: hidden; width: 800px; }