* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: "Microsoft YaHei", Arial, sans-serif;
background-color: #f8fffb;
color: #333;
} .header {
height: 70px;
background-color: #00bfa5;
display: flex;
align-items: center;
padding: 0 20px;
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 1000;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
.logo {
font-size: 28px;
font-weight: bold;
color: white;
margin-right: auto;
z-index: 1001;
}
.nav {
display: flex;
gap: 30px;
}
.nav a {
color: white;
text-decoration: none;
font-size: 16px;
}
.nav a:hover {
opacity: 0.8;
}
.search-bar {
display: flex;
margin-left: auto;
}
.search-bar input {
width: 220px;
height: 42px;
padding: 0 15px;
border: none;
border-radius: 21px 0 0 21px;
outline: none;
font-size: 15px;
}
.search-bar button {
height: 42px;
padding: 0 20px;
background-color: #009688;
color: white;
border: none;
border-radius: 0 21px 21px 0;
cursor: pointer;
font-size: 15px;
}
.search-bar button:hover {
background-color: #00897b;
} .menu-toggle {
display: none;
}
.hamburger {
display: none;
flex-direction: column;
justify-content: space-around;
width: 30px;
height: 25px;
cursor: pointer;
z-index: 1001;
}
.hamburger span {
width: 100%;
height: 3px;
background-color: white;
transition: all 0.3s;
border-radius: 2px;
} .container {
display: flex;
margin-top: 70px;
min-height: calc(100vh - 70px);
} .sidebar {
width: 300px;
background-color: white;
padding: 30px 25px;
box-shadow: 2px 0 10px rgba(0,0,0,0.05);
position: sticky;
top: 70px;
height: calc(100vh - 70px);
overflow-y: auto;
}
.sidebar-title {
font-size: 22px;
color: #00bfa5;
margin-bottom: 30px;
text-align: center;
}
.filter-group {
margin-bottom: 35px;
}
.filter-group h4 {
font-size: 16px;
color: #444;
margin-bottom: 15px;
padding-bottom: 8px;
border-bottom: 1px solid #eee;
}
.filter-group ul {
list-style: none;
}
.filter-group li {
padding: 10px 0;
font-size: 16px;
color: #555;
display: flex;
flex-wrap: wrap; align-items: center;
justify-content: space-between;
cursor: pointer;
}
.filter-group li a {
color: #555;
text-decoration: none;
flex: 1; }
.filter-group li .more {
font-size: 25px;
color: #aaa;
cursor: pointer;
padding: 0 5px;
user-select: none;
}
.filter-group li .more:hover {
color: #00bfa5;
} .filter-group .sub-menu {
width: 100%;
display: none; padding-left: 15px;
margin-top: 5px;
border-top: 1px dashed #eee;
}
.filter-group .sub-menu li {
padding: 12px 8px;
font-size: 14px;
}
.filter-group li:hover > a, .filter-group li a:hover {
color: #00bfa5;
}
.filter-group input[type="checkbox"] {
margin-right: 10px;
}
.more {
color: #aaa;
font-size: 18px;
} .main-content {
flex: 1;
padding: 30px 40px;
background-color: #f8fffb;
}
.page-title {
font-size: 28px;
color: #00bfa5;
margin-bottom: 20px;
} .search-filter-bar {
display: flex;
align-items: center;
gap: 20px;
margin-bottom: 30px;
flex-wrap: wrap; }
.search-box {
position: relative;
flex: 1;
max-width: 500px;
min-width: 280px;
}
.search-box input {
width: 100%;
height: 50px;
padding: 0 50px 0 20px;
border: 1px solid #ddd;
border-radius: 25px;
font-size: 16px;
outline: none;
background-color: white;
transition: all 0.3s;
}
.search-box input:focus {
border-color: #00bfa5;
box-shadow: 0 0 0 3px rgba(0, 191, 165, 0.15);
}
.search-icon {
position: absolute;
right: 18px;
top: 50%;
transform: translateY(-50%);
font-size: 25px;
color: #999;
pointer-events: none;
} .filter-buttons {
display: flex;
gap: 10px;
}
.filter-btn {
padding: 10px 24px;
border: 2px solid #00bfa5;
background-color: white;
color: #00bfa5;
font-size: 15px;
font-weight: bold;
border-radius: 25px;
cursor: pointer;
transition: all 0.3s;
white-space: nowrap;
}
.filter-btn:hover {
background-color: #e0f7f5;
}
.filter-btn.active {
background-color: #00bfa5;
color: white;
}
.tools-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 25px;
}
.tool-card {
background: white;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 4px 15px rgba(0,0,0,0.08);
transition: all 0.3s ease;
}
.tool-card:hover {
transform: translateY(-8px);
box-shadow: 0 12px 25px rgba(0,0,0,0.15);
}
.tool-card img {
width: 100%;
height: 180px;
object-fit: cover;
}
.card-body {
padding: 10px;
}
.rating {
color: #ffb400;
font-size: 15px;
margin-bottom: 8px;
}
.tool-title {
font-size: 16px;
font-weight: bold;
margin-bottom: 5px;
color: #333;
}
.tool-desc {
font-size: 14px;
color: #666;
line-height: 1.6;
margin-bottom: 10px;
height: 50px;
overflow: hidden;
}
.tags {
margin-bottom: 15px;
}
.tag {
display: inline-block;
background-color: #e0f7f5;
color: #00bfa5;
border-radius: 15px;
margin-right: 6px;
}
.actions {
display: flex;
justify-content: space-between;
align-items: center;
}
.collect {
color: #999;
font-size: 16px;
cursor: pointer;
}
.collect:hover {
color: #ffb400;
}
.visit {
background-color: #00bfa5;
color: white;
padding: 8px 20px;
border-radius: 20px;
text-decoration: none;
font-size: 14px;
}
.visit:hover {
background-color: #009688;
}
.article-top-intro {
display: flex;
gap: 2rem;
margin-bottom: 2rem;
padding: 1rem 0;
}
.article-intro-card {
max-width: 1100px;
margin: 0 auto 25px; background: white;
border-radius: 16px;
border: 1px solid #e0e0e0;
box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
padding: 40px;
} .intro-image-wrapper {
flex: 0 0 380px; height: 280px;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
background: #f9f9f9;
}
.intro-featured-img {
width: 100%;
height: 100%;
object-fit: fill; object-position: center; display: block;
}
.intro-container {
display: flex;
gap: 32px;
align-items: center;
}
.intro-text {
flex: 1;
min-width: 0; }
.intro-text h1 {
line-height: 1.5;
font-size: 36px;
color: #00bfa5;
margin-bottom: 12px;
}
.meta-info {
display: flex;
gap: 16px;
margin-bottom: 20px;
font-size: 0.95rem;
color: #666;
}
.meta-info span::before {
content: "•";
margin-right: 8px;
color: #ccc;
} .post-tags {
margin: 30px 0;
padding: 15px 0;
border-top: 1px dashed #e0e0e0;
border-bottom: 1px dashed #e0e0e0;
}
.post-tags .tag-label {
font-weight: bold;
color: #333;
margin-right: 12px;
font-size: 16px;
} .post-tags .tag-item {
display: inline-block;
background-color: #e5f9f6;
color: #00897b;
padding: 4px 12px;
margin: 4px 8px 4px 0;
border-radius: 20px;
font-size: 12px;
text-decoration: none;
transition: all 0.2s ease;
}
.post-tags .tag-item:hover {
background-color: #00bfa5;
color: white;
transform: translateY(-1px);
box-shadow: 0 2px 6px rgba(0, 191, 165, 0.3);
}
.card-link {
display: block;
text-decoration: none;
color: inherit;
}
.card-link img {
width: 100%;
object-fit: fill;
object-position: center;
display: block;
}
.tool-title a {
color: inherit;
text-decoration: none;
} .sidebar .active-current > a {
font-weight: bold !important;
color: #00bfa5 !important;
} .sidebar .active-child > a {
font-weight: bold !important;
color: #009688 !important; }
.meta-info span:first-child::before {
display: none;
}
.intro-excerpt {
font-size: 16px;
color: #666;
line-height: 1.7;
margin-bottom: 25px;
}
.detail-content {
max-width: 100%;
line-height: 1.7;
color: #333;
font-size: 16px;
} .detail-content p {
margin: 0 0 1.2em;
font-size: 16px;
line-height: 1.7;
color: #444;
} .detail-content h4 {
margin: 2em 0 1em;
font-size: 1.4rem;
font-weight: 600;
color: #00bfa5;
line-height: 1.4;
} .detail-content img {
max-width: 100%;
height: auto;
display: block;
margin: 1.2em auto;
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0,0,0,0.08);
} .detail-content a {
color: #0073e6;
text-decoration: none;
word-break: break-word;
}
.detail-content a:hover {
text-decoration: underline;
}
.favorites-page {
display: flex;
gap: 40px;
padding: 30px; max-width: 1200px;
margin: 40px auto; background: #ffffff;
border-radius: 12px;
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.08);
} .favorites-intro {
flex: 1;
min-width: 300px;
background: #f9f9f9;
border-radius: 10px;
padding: 25px;
box-shadow: 0 2px 8px rgba(0,0,0,0.05);
}
.favorites-intro h1 {
margin-top: 0;
color: #00bfa5;
font-size: 24px;
display: flex;
align-items: center;
gap: 10px;
}
.favorites-intro p {
margin: 12px 0;
line-height: 1.6;
color: #333;
}
.favorites-intro .note {
background: #fff;
border: 1px solid #e0e0e0;
padding: 15px;
border-radius: 6px;
margin-top: 20px;
font-size: 14px;
}
.favorites-intro .note p {
margin: 8px 0;
} .favorites-list {
flex: 2;
min-width: 350px;
}
.clear-all-btn {
text-align: right;
margin-bottom: 20px;
}
.btn-clear {
background: transparent;
border: 1px solid #00bfa5;
color: #00bfa5;
padding: 6px 12px;
border-radius: 6px;
cursor: pointer;
font-size: 14px;
transition: all 0.2s;
}
.tool-description {
display: inline-flex;
align-items: center;
padding: 0px 3px;
background-color: #00bfa5; color: white;
font-size: 12px;
line-height: 1.4;
border-radius: 4px;
margin-top: 1px;
gap: 5px;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
margin-bottom: 5px;
}
.tool-description .icon {
font-size: 12px;
opacity: 1.9;
}
.tool-description .text {
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.btn-clear:hover {
background-color: #00bfa5;
color: white;
} .favorite-item {
display: flex;
gap: 15px;
padding: 15px;
border-bottom: 1px solid #eee;
transition: background 0.2s;
}
.favorite-item:last-child {
border-bottom: none;
}
.favorite-item:hover {
background-color: #f1f9ff;
}
.favorite-item img {
width: 120px;
height: 80px;
object-fit: cover;
border-radius: 6px;
}
.item-body {
flex: 1;
}
.item-body h3 {
margin: 0 0 8px 0;
font-size: 16px;
color: #00bfa5;
}
.collect-btn {
background: #fff;
border: 1px solid #00bfa5;
color: #00bfa5;
padding: 6px 12px;
border-radius: 6px;
cursor: pointer;
font-size: 14px;
transition: all 0.2s;
} .card-image-wrapper {
position: relative;
width: 100%;
height: auto;
}
.rating-badge {
position: absolute;
top: 8px;
left: 8px;
background: rgba(255, 255, 255, 0.9);
border: 1px solid #ddd;
border-radius: 6px;
padding: 2px 8px;
font-size: 0.75em;
color: #666;
display: flex;
align-items: center;
gap: 4px;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
z-index: 10;
}
.rating-icon {
font-weight: bold;
}
.rating-count {
font-weight: normal;
} .category-label {
font-size: 0.8125em;
line-height: 1.4;
margin-top: 6px;
margin-bottom: 5px;
color: #666;
text-decoration: underline;
text-decoration-color: #ccc;
text-decoration-thickness: 1px;
text-underline-offset: 2px;
}
.category-label {
font-size: 0.8125em;
line-height: 1.4;
margin-top: 6px;
color: #666;
text-decoration: underline;
text-decoration-color: #ccc;
text-decoration-thickness: 1px;
text-underline-offset: 2px;
}
.category-link {
color: #666; text-decoration: underline;
text-decoration-color: #ccc;
text-decoration-thickness: 1px;
text-underline-offset: 2px;
}
.category-link:hover {
color: #00bfa5; text-decoration-color: #00bfa5;
} .pagination {
margin: 80px auto 40px;
padding: 20px 0;
border-top: 1px solid #eee;
text-align: center;
clear: both;
width: 100%;
max-width: 800px;
}
.pagination a,
.pagination span {
display: inline-block;
padding: 8px 14px;
margin: 0 4px;
text-decoration: none;
color: #00bfa5;
border: 1px solid #ddd;
border-radius: 6px;
font-size: 15px;
}
.pagination .current {
background: #00bfa5;
color: white;
border-color: #00bfa5;
}
.pagination a:hover {
background: #e0f7f5;
}
.card-link {
display: block;
text-decoration: none;
color: inherit;
}
.card-link img {
width: 100%;
object-fit: fill;
object-position: center;
display: block;
}
.load-more-btn {
padding: 10px 24px;
background: #00bfa5;
color: white;
border: none;
border-radius: 6px;
cursor: pointer;
font-size: 1em;
}
.load-more-btn:hover {
background: #00a896;
}
.site-footer {
width: 100%;
text-align: center;
padding: 10px 0;
margin-top: 40px;
color: #969696;
font-size: 12px;
line-height: 1.5;
}
.site-footer a {
color: #666;
text-decoration: none;
}
.site-footer a:hover {
color: #00bfa5;
text-decoration: underline;
}
.detail-main {
flex: 1;
background-color: #f8fffb;
padding: 30px 40px 60px;
}
.detail-content {
max-width: 1100px;
margin: 0 auto;
background: white;
border-radius: 16px;
border: 1px solid #e0e0e0;
box-shadow: 0 8px 30px rgba(0,0,0,0.08);
padding: 40px;
}
.tool-header {
margin-bottom: 40px;
}
.tool-header h1 {
font-size: 36px;
color: #00bfa5;
margin-bottom: 12px;
}
.tool-intro {
font-size: 16px;
color: #666;
line-height: 1.7;
margin-bottom: 25px;
} .tool-actions {
display: flex;
gap: 15px;
flex-wrap: wrap;
}
.btn-visit {
background-color: #00bfa5;
color: white;
padding: 12px 32px;
border-radius: 30px;
text-decoration: none;
font-size: 16px;
font-weight: bold;
transition: all 0.3s;
}
.btn-visit:hover {
background-color: #009688;
transform: translateY(-2px);
}
.btn-icon {
width: 48px;
height: 48px;
border-radius: 50%;
background-color: #f0f0f0;
border: none;
font-size: 20px;
cursor: pointer;
transition: all 0.3s;
display: flex;
align-items: center;
justify-content: center;
}
.btn-collect {
color: #ffb400;
}
.btn-report {
color: #ff5722;
}
.btn-icon:hover {
background-color: #e0e0e0;
transform: scale(1.1);
}
.screenshot-section {
text-align: center;
margin-bottom: 50px;
}
.screenshot-img {
width: 100%;
max-width: 900px;
border-radius: 12px;
box-shadow: 0 10px 25px rgba(0,0,0,0.12);
margin-bottom: 20px;
}
.download-btn {
background-color: #00bfa5;
color: white;
padding: 10px 30px;
border-radius: 25px;
text-decoration: none;
font-size: 15px;
}
.download-btn:hover {
background-color: #009688;
}
.more-details h2,
.related-tools h2 {
font-size: 25px;
color: #333;
margin-bottom: 20px;
}
.more-details h3,
.related-tools h3 {
font-size: 25px;
color: #333;
margin-bottom: 20px;
}
.oops-text {
font-size: 18px;
color: #333;
margin-bottom: 20px;
}
.why-text {
font-size: 16px;
color: #666;
line-height: 1.7;
}
.help-link {
color: #00bfa5;
text-decoration: none;
font-weight: bold;
}
.help-link:hover {
text-decoration: underline;
}
.related-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 25px;
}
.related-card {
background: white;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 4px 15px rgba(0,0,0,0.08);
transition: transform 0.3s;
}
.related-card:hover {
transform: translateY(-8px);
}
.related-card img {
width: 100%;
height: 180px;
margin: 0em auto;
}
.related-body {
padding: 18px;
}
.related-body h3 {
font-size: 17px;
margin-bottom: 10px;
color: #333;
}
.related-body p {
font-size: 14px;
color: #666;
}
.modal {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
display: flex;
justify-content: center;
align-items: center;
z-index: 9999;
opacity: 0;
visibility: hidden;
transition: opacity 0.3s ease, visibility 0.3s ease;
}
.modal.show {
opacity: 1;
visibility: visible;
}
.modal-content {
background: white;
padding: 24px;
border-radius: 12px;
max-width: 400px;
width: 90%;
text-align: center;
box-shadow: 0 8px 24px rgba(0,0,0,0.2);
position: relative;
}
.close-btn {
position: absolute;
top: 12px;
right: 16px;
font-size: 24px;
color: #999;
cursor: pointer;
line-height: 1;
}
.close-btn:hover {
color: #333;
}
#modal-message {
margin: 0 0 20px 0;
font-size: 16px;
line-height: 1.5;
color: #333;
}
.modal-buttons {
display: flex;
flex-wrap: wrap;
gap: 10px;
justify-content: center;
}
.btn {
padding: 8px 16px;
border: none;
border-radius: 6px;
font-size: 14px;
cursor: pointer;
transition: background 0.2s;
text-decoration: none;
display: inline-block;
text-align: center;
}
.btn.primary {
background: #f00000;
color: white;
}
.btn.primary:hover {
background: #f00000;
}
.btn.secondary {
background: #f1f1f1;
color: #333;
}
.btn.secondary:hover {
background: #e0e0e0;
}
.btn.view-fav {
background: #00bfa5;
color: white;
width: 100%;
margin-top: 8px;
}
.btn.view-fav:hover {
background: #00bfa5;
}
.homepage-banner {
width: 100%;
margin: 0 0 24px 0;
overflow: hidden;
border-radius: 12px; box-shadow: 0 4px 12px rgba(0,0,0,0.08); }
.homepage-banner img {
width: 100%;
height: auto;
display: block;
object-fit: cover; } .category-hot-tags {
margin-bottom: 30px;
border-radius: 8px;
}
.category-hot-tags h3 {
margin-top: 0;
margin-bottom: 15px;
font-size: 18px;
color: #333;
font-weight: 600;
}
.tag-list {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.tag-item {
display: inline-flex;
align-items: center;
padding: 6px 12px;
background: #e0f7fa;
color: #00838f;
text-decoration: none;
border-radius: 20px;
font-size: 14px;
transition: all 0.2s ease;
border: 1px solid #b2ebf2;
}
.tag-item:hover {
background: #00bfa5;
color: white;
border-color: #00bfa5;
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0,191,165,0.2);
}
.tag-count {
margin-left: 5px;
font-size: 12px;
opacity: 0.8;
}
.article-catalog {
width: 100%;
max-width: 100%;
padding: 0; margin: 0 0 30px 0; } .catalog-list {
list-style: none;
display: grid;
grid-template-columns: repeat(2, 1fr); gap: 15px 20px; } .catalog-item {
display: flex;
align-items: center;
} .catalog-link {
font-size: 14px;
color: #666;
text-decoration: none;
transition: all 0.2s ease;
display: block;
padding: 8px 12px; line-height: 1.5;
flex: 1;
} .catalog-link:hover {
color: #333;
padding-left: 12px;
}
.jump-card {
width: 100%;
background-color: #fff;
border-radius: 6px;
padding: 20px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 15px;
border: 1px solid #eee;
transition: box-shadow 0.2s ease;
margin-bottom: 20px;
} .catalog-title {
font-size: 18px; font-weight: 500;
color: #333;
margin-bottom: 20px; padding-bottom: 10px;
border-bottom: 1px solid #f0f0f0;
} .catalog-list {
list-style: none;
}
.jump-card:hover {
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.03);
}
.resource-info {
flex: 1;
}
.resource-name {
font-size: 16px;
color: #333;
font-weight: 500;
margin-bottom: 4px;
}
.resource-desc {
font-size: 12px;
color: #999;
line-height: 1.5;
}
.jump-btn {
display: inline-block;
padding: 8px 20px;
background-color: #333;
color: #fff;
text-decoration: none;
border-radius: 4px;
font-size: 14px;
transition: background-color 0.2s ease;
white-space: nowrap;
flex-shrink: 0;
}
.jump-btn:hover {
background-color: #555;
}
.jump-btn.disabled {
background-color: #ff4444;
cursor: not-allowed;
}
.jump-btn.disabled:hover {
background-color: #ff4444;
} @media (max-width: 1024px) { .hamburger {
display: flex;
}
.nav {
display: none;
position: absolute;
top: 70px;
left: 0;
right: 0;
background-color: #00bfa5;
flex-direction: column;
padding: 20px;
text-align: center;
}
.nav a {
padding: 15px 0;
border-bottom: 1px solid rgba(255,255,255,0.2);
font-size: 16px;
}
.nav a:last-child {
border-bottom: none;
}
.menu-toggle:checked + .hamburger + .nav {
display: flex;
}
.homepage-banner {
margin-bottom: 18px;
border-radius: 8px;
} .menu-toggle:checked + .hamburger span:nth-child(1) {
transform: rotate(45deg) translate(6px, 6px);
}
.menu-toggle:checked + .hamburger span:nth-child(2) {
opacity: 0;
}
.menu-toggle:checked + .hamburger span:nth-child(3) {
transform: rotate(-45deg) translate(7px, -8px);
} .search-bar {
display: none;
} .container {
flex-direction: column;
} .sidebar {
width: 100%;
height: auto;
position: static;
box-shadow: none;
border-bottom: 2px solid #eee;
padding: 25px 20px;
}
.sidebar-title {
font-size: 18px;
color: #00bfa5;
margin-bottom: 30px;
text-align: center;
} .main-content {
padding: 25px 20px;
} .tools-grid {
grid-template-columns: repeat(2, 1fr);
gap: 10px;
}
.visit {
background-color: #00bfa5;
color: white;
padding: 2px 10px;
border-radius: 20px;
text-decoration: none;
font-size: 12px;
}
.tool-title {
font-size: 14px;
font-weight: bold;
margin-bottom: 1px;
color: #333;
}
.tool-description {
display: inline-flex;
align-items: center;
padding: 3px 15px;
background-color: #00bfa5; color: white;
font-size: 12px;
line-height: 1.4;
border-radius: 8px;
margin-top: 1px;
gap: 5px;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.tool-description .icon {
font-size: 13px;
opacity: 1.9;
}
.tool-description .text {
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.tool-desc {
color: #666;
margin-bottom: 5px;
line-height: 1.5;
height: 35px;
overflow: hidden;
font-size: 71.42857143%;
}
.logo {
font-size: 25px;
font-weight: bold;
color: white;
margin-right: auto;
z-index: 1001;
}
.tool-description {
display: inline-flex;
align-items: center;
padding: 0px 3px;
background-color: #00bfa5; color: white;
font-size: 10px;
line-height: 1.4;
border-radius: 4px;
margin-top: 1px;
gap: 5px;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
margin-bottom: 5px;
}
.tool-description .icon {
font-size: 9px;
opacity: 1.9;
}
.tool-description .text {
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.search-filter-bar {
flex-direction: column;
align-items: stretch;
gap: 15px;
}
.search-box {
max-width: none;
}
.filter-buttons {
justify-content: inherit;
}
.page-title {
font-size: 18px;
color: #00bfa5;
margin-bottom: 20px;
}
.filter-btn {
padding: 8px 15px;
font-size: 14px;
}
.tool-card img {
height: 150px;
}
.collect {
color: #999;
font-size: 12px;
cursor: pointer;
}
.rating-badge {
position: absolute;
top: 8px;
left: 8px;
background: rgba(255, 255, 255, 0.9);
border: 1px solid #ddd;
border-radius: 6px;
padding: 2px 8px;
font-size: 0.65em;
color: #666;
display: flex;
align-items: center;
gap: 4px;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
z-index: 10;
}
.category-label {
font-size: 0.7125em;
line-height: 1.4;
margin-top: 6px;
color: #666;
text-decoration: underline;
text-decoration-color: #ccc;
text-decoration-thickness: 1px;
text-underline-offset: 2px;
} .sidebar {
max-height: 70px; overflow: hidden;
transition: max-height 0.5s ease, box-shadow 0.4s ease;
} .sidebar.expanded {
max-height: 1200px; box-shadow: 0 6px 20px rgba(0, 191, 165, 0.25);
animation: glowPulse 1.8s ease-in-out;
} .sidebar-toggle {
display: flex;
justify-content: space-between;
font-size: 20px;
font-weight: bold;
color: #00bfa5;
cursor: pointer;
user-select: none;
}
.search-box input {
width: 100%;
height: 45px;
padding: 0 50px 0 20px;
border: 1px solid #ddd;
border-radius: 25px;
font-size: 16px;
outline: none;
background-color: white;
transition: all 0.3s;
}
.sidebar-toggle::after {
content: "▼";
font-size: 18px;
transition: transform 0.3s ease;
}
.sidebar.expanded .sidebar-toggle::after {
transform: rotate(180deg);
}
intro-container {
flex-direction: column;
text-align: center;
}
.meta-info {
justify-content: center;
} .sidebar-content {
opacity: 0;
transition: opacity 0.5s ease 0.2s;
margin-top: 15px;
}
.sidebar.expanded .sidebar-content {
opacity: 1;
} @keyframes glowPulse {
0%   { box-shadow: 0 6px 20px rgba(0, 191, 165, 0.25); }
50%  { box-shadow: 0 0 30px rgba(0, 191, 165, 0.55); }
100% { box-shadow: 0 6px 20px rgba(0, 191, 165, 0.25); }
} .article-intro-card {
padding: 24px;
margin-bottom: 20px;
} .intro-image-wrapper {
width: 100%;
height: auto;
aspect-ratio: 16 / 9; border-radius: 12px;
overflow: hidden;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
background: #f9f9f9;
margin-bottom: 20px;
flex: 0 0 160px;
} .intro-featured-img {
width: 100%;
height: 100%;
object-fit: fill;
object-position: center;
display: block;
} .intro-container {
flex-direction: column;
align-items: stretch;
gap: 16px;
} .intro-text h1 {
font-size: 2rem;
line-height: 1.3;
color: #00bfa5;
margin-bottom: 12px;
}
.modal-content {
padding: 20px;
max-width: 95%;
}
.btn {
width: 100%;
padding: 10px;
font-size: 16px; }
.modal-buttons {
flex-direction: column;
}
.btn.view-fav {
margin-top: 0;
} .meta-info {
font-size: 0.800rem;
color: #666;
margin-bottom: 12px;
display: flex;
justify-content: flex-start;
}
.tag-item {
display: inline-flex;
align-items: center;
padding: 6px 12px;
background: #e0f7fa;
color: #00838f;
text-decoration: none;
border-radius: 20px;
font-size: 12px;
transition: all 0.2s ease;
border: 1px solid #b2ebf2;
} .intro-excerpt {
font-size: 1rem;
line-height: 1.6;
color: #8d939c;
margin: 0;
font-size: 14px;
}
.detail-content {
font-size: 15px;
line-height: 1.65;
}
.pagination {
margin: 60px auto 20px;
}
.pagination a,
.pagination span {
padding: 6px 10px;
font-size: 14px;
}
.no-results {
grid-column: 1 / -1;
}
.detail-content h4 {
font-size: 1.25rem;
margin: 1.8em 0 1em;
}
.detail-content p {
font-size: 14px;
margin-bottom: 1.1em;
}
.detail-content img {
margin: 0em auto;
border-radius: 6px;
}
.related-body {
padding: 10px;
}
.related-card img {
width: 100%;
height: 100px;
}
.favorites-page {
flex-direction: column;
padding: 20px;
margin: 20px auto; gap: 25px;
max-width: 95%; }
.favorites-intro,
.favorites-list {
width: 100%;
min-width: unset; }
.favorites-intro {
background: #f9f9f9;
border-radius: 10px;
padding: 20px;
box-shadow: 0 2px 8px rgba(0,0,0,0.05);
}
.favorites-list {
order: 2; }
.clear-all-btn {
text-align: center; margin-bottom: 20px;
}
.favorite-item {
flex-direction: column;
gap: 12px;
align-items: flex-start;
}
.favorite-item img {
width: 100%;
height: auto;
max-height: 120px;
border-radius: 8px;
}
.item-body {
width: 100%;
}
.detail-main {
padding: 20px 15px;
}
.detail-content {
padding: 25px;
border-radius: 12px;
}
.tool-header h1 {
font-size: 30px;
}
.related-grid {
grid-template-columns: repeat(2, 1fr);
gap: 10px;
}
.tool-actions {
justify-content: center;
}
} @media (max-width: 768px) {
.catalog-list {
grid-template-columns: 1fr;
}
} @media (max-width: 480px) {
.catalog-link {
font-size: 15px;
color: #555;
padding: 6px 10px;
}
.catalog-link:hover {
padding-left: 10px;
}
} html {
scroll-behavior: smooth;
}
@media (max-width: 480px) {
.article-catalog {
padding: 20px;
box-shadow: none;
}
.catalog-title {
font-size: 15px; margin-bottom: 15px;
}
.catalog-link {
font-size: 15px; color: #555; }
}
@media (max-width: 480px) {
.jump-card {
align-items: flex-start;
padding: 15px;
gap: 12px;
}
.resource-name {
font-size: 14px;
}
.resource-desc {
font-size: 11px;
color: #888;
}
.jump-btn {
padding: 6px 18px;
font-size: 13px;
}
} .tag-intro-section {
margin: 24px 0 36px;
background: #fff;
border-radius: 12px;
padding: 20px;
box-shadow: 0 2px 8px rgba(0,0,0,0.05);
}
.tag-intro-content {
display: flex;
gap: 24px;
align-items: flex-start;
}
.tag-intro-image {
flex: 0 0 120px;
height: 120px;
overflow: hidden;
border-radius: 8px;
background: #eee;
}
.tag-intro-image img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.tag-intro-text {
flex: 1;
}
.tag-intro-text h2 {
font-size: 22px;
font-weight: 700;
margin: 0 0 12px;
color: #00bfa5;
}
.tag-intro-text p {
margin: 0;
line-height: 1.6;
color: #555;
font-size: 15px;
} @media (max-width: 768px) {
.tag-intro-content {
flex-direction: column;
}
.tag-intro-image {
flex: none;
width: 100%;
height: 180px;
}
} .collect-button-wrapper {
text-align: center;
margin: 24px 0;
}
.collect-btn {
background: #fff;
border: 2px solid #00bfa5;
color: #00bfa5;
padding: 10px 24px;
font-size: 16px;
font-weight: 600;
border-radius: 50px;
cursor: pointer;
display: inline-flex;
align-items: center;
gap: 8px;
transition: all 0.3s ease;
box-shadow: 0 2px 6px rgba(0, 191, 165, 0.2);
}
.collect-btn:hover {
background: #00bfa5;
color: white;
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 191, 165, 0.3);
}
.collect-btn svg {
width: 20px;
height: 20px;
} @media (max-width: 768px) {
.collect-btn {
padding: 8px 20px;
font-size: 14px;
}
.collect-btn svg {
width: 18px;
height: 18px;
}
}