:where([class^="ri-"])::before { content: "\f3c2"; }
body {
  font-family: 'Noto Sans SC', sans-serif;
  background-color: #F5F5F5;
}
.card-hover {
  transition: all 0.3s ease;
}
.card-hover:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 16px rgba(0,0,0,0.1);
}
.tooltip {
  position: relative;
}
.tooltip:hover::after {
  content: attr(data-tooltip);
  position: absolute;
  bottom: 100%;
  left: 50%;
  transform: translateX(-50%);
  padding: 6px 12px;
  background: rgba(0,0,0,0.8);
  color: white;
  border-radius: 6px;
  font-size: 12px;
  white-space: nowrap;
  z-index: 10;
  margin-bottom: 8px;
}
.tooltip:hover::before {
  content: '';
  position: absolute;
  bottom: 100%;
  left: 50%;
  transform: translateX(-50%);
  border-width: 6px;
  border-style: solid;
  border-color: rgba(0,0,0,0.8) transparent transparent transparent;
  margin-bottom: 2px;
}
.chart-container {
  width: 100%;
  height: 400px;
}
.custom-switch {
  position: relative;
  display: inline-block;
  width: 40px;
  height: 20px;
}
.custom-switch input {
  opacity: 0;
  width: 0;
  height: 0;
}
.slider {
  position: absolute;
  cursor: pointer;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: #ccc;
  transition: .4s;
  border-radius: 34px;
}
.slider:before {
  position: absolute;
  content: "";
  height: 16px;
  width: 16px;
  left: 2px;
  bottom: 2px;
  background-color: white;
  transition: .4s;
  border-radius: 50%;
}
input:checked + .slider {
  background-color: #4CAF50;
}
input:checked + .slider:before {
  transform: translateX(20px);
}
.custom-range {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  height: 6px;
  border-radius: 5px;
  background: #d7dcdf;
  outline: none;
}
.custom-range::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: #4CAF50;
  cursor: pointer;
}
.custom-range::-moz-range-thumb {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: #4CAF50;
  cursor: pointer;
  border: none;
}
.custom-checkbox {
  position: relative;
  display: inline-block;
  width: 18px;
  height: 18px;
  margin-right: 8px;
}
.custom-checkbox input {
  opacity: 0;
  width: 0;
  height: 0;
}
.checkmark {
  position: absolute;
  top: 0;
  left: 0;
  height: 18px;
  width: 18px;
  background-color: #fff;
  border: 1px solid #ccc;
  border-radius: 4px;
}
.custom-checkbox input:checked ~ .checkmark {
  background-color: #4CAF50;
  border-color: #4CAF50;
}
.checkmark:after {
  content: "";
  position: absolute;
  display: none;
}
.custom-checkbox input:checked ~ .checkmark:after {
  display: block;
}
.custom-checkbox .checkmark:after {
  left: 6px;
  top: 2px;
  width: 5px;
  height: 10px;
  border: solid white;
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}
.custom-radio {
  position: relative;
  display: inline-block;
  width: 18px;
  height: 18px;
  margin-right: 8px;
}
.custom-radio input {
  opacity: 0;
  width: 0;
  height: 0;
}
.radio-mark {
  position: absolute;
  top: 0;
  left: 0;
  height: 18px;
  width: 18px;
  background-color: #fff;
  border: 1px solid #ccc;
  border-radius: 50%;
}
.custom-radio input:checked ~ .radio-mark {
  background-color: #fff;
  border-color: #4CAF50;
}
.radio-mark:after {
  content: "";
  position: absolute;
  display: none;
}
.custom-radio input:checked ~ .radio-mark:after {
  display: block;
}
.custom-radio .radio-mark:after {
  top: 4px;
  left: 4px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #4CAF50;
}
.dropdown-container {
  position: relative;
}
.dropdown-menu {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 10;
  min-width: 200px;
  background: white;
  border-radius: 8px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}
.dropdown-container.active .dropdown-menu {
  display: block;
}
:where([class^="ri-"])::before { content: "\f3c2"; }
.backdrop-blur {
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
}
.nav-shadow {
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
}
.particles {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
overflow: hidden;
z-index: 0;
}
.particle {
position: absolute;
border-radius: 50%;
background-color: rgba(16, 185, 129, 0.6);
animation: float 15s infinite ease-in-out;
}
@keyframes float {
0% {
transform: translateY(100%) translateX(0);
opacity: 0;
}
25% {
opacity: 0.8;
}
75% {
opacity: 0.2;
}
100% {
transform: translateY(-100%) translateX(100px);
opacity: 0;
}
}
.scroll-progress {
position: fixed;
top: 0;
right: 0;
width: 6px;
height: 0;
background-color: #70a000;
z-index: 100;
transition: height 0.1s;
}
.story-card {
transition: transform 0.3s ease;
}
.story-card:hover {
transform: translateY(-5px);
}
.fade-in {
opacity: 0;
transform: translateY(20px);
transition: opacity 0.6s ease, transform 0.6s ease;
}
.fade-in.visible {
opacity: 1;
transform: translateY(0);
}
.step-arrow {
position: relative;
}
.step-arrow:after {
content: "";
position: absolute;
top: 50%;
right: -30px;
width: 30px;
height: 2px;
background-color: #70a000;
transform: translateY(-50%);
}
.step-arrow:last-child:after {
display: none;
}
:where([class^="ri-"])::before { content: "\f3c2"; }
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes slideUp {
from { transform: translateY(20px); opacity: 0; }
to { transform: translateY(0); opacity: 1; }
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
.animate-fade-in {
animation: fadeIn 0.6s ease-in-out;
}
.animate-slide-up {
animation: slideUp 0.8s ease-out;
}
.loader {
border-radius: 50%;
border: 3px solid rgba(255, 255, 255, 0.3);
border-top: 3px solid #ffffff;
width: 24px;
height: 24px;
animation: spin 1s linear infinite;
}
.custom-checkbox {
appearance: none;
-webkit-appearance: none;
width: 18px;
height: 18px;
border: 2px solid #d1d5db;
border-radius: 4px;
outline: none;
cursor: pointer;
position: relative;
transition: all 0.2s;
}
.custom-checkbox:checked {
background-color: #2E7D32;
border-color: #2E7D32;
}
.custom-checkbox:checked::after {
content: '';
position: absolute;
left: 5px;
top: 2px;
width: 6px;
height: 10px;
border: solid white;
border-width: 0 2px 2px 0;
transform: rotate(45deg);
}
.tab-content {
display: none;
}
.tab-content.active {
display: block;
animation: fadeIn 0.5s ease-in-out;
}
.form-input:focus {
border-color: #2E7D32;
box-shadow: 0 0 0 2px rgba(46, 125, 50, 0.2);
}
.form-input.error {
border-color: #ef4444;
}
.carousel-container {
overflow: hidden;
position: relative;
}
.carousel-slide {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0;
transition: opacity 1s ease-in-out;
}
.carousel-slide.active {
opacity: 1;
}
:where([class^="ri-"])::before { content: "\f3c2"; }
        
        .step-connector {
            height: 2px;
            flex-grow: 1;
            background-color: #e5e7eb;
            margin: 0 8px;
        }
        
        .step-connector.active {
            background-color: #4CAF50;
        }
        
        .step-circle {
            width: 32px;
            height: 32px;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            background-color: #F5F5F5;
            color: #9CA3AF;
            border: 2px solid #E5E7EB;
        }
        
        .step-circle.active {
            background-color: #4CAF50;
            color: white;
            border-color: #4CAF50;
        }
        
        .model-card {
            transition: all 0.3s ease;
            border: 2px solid #E5E7EB;
        }
        
        .model-card:hover {
            transform: scale(1.02);
        }
        
        .model-card.selected {
            border-color: #4CAF50;
            background-color: rgba(76, 175, 80, 0.05);
            box-shadow: 0 4px 12px rgba(76, 175, 80, 0.15);
        }
        
        .custom-checkbox {
            width: 24px;
            height: 24px;
            border: 2px solid #E5E7EB;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: all 0.2s ease;
        }
        
        .custom-checkbox.checked {
            border-color: #4CAF50;
            background-color: #4CAF50;
        }
        
        .progress-bar {
            height: 8px;
            border-radius: 4px;
            background-color: #E5E7EB;
            overflow: hidden;
        }
        
        .progress-bar-fill {
            height: 100%;
            background-color: #4CAF50;
        }
        
        .loader {
            width: 40px;
            height: 40px;
            border: 3px solid rgba(76, 175, 80, 0.2);
            border-radius: 50%;
            border-top-color: #4CAF50;
            animation: spin 1.5s linear infinite;
            display: none;
        }
        
        @keyframes spin {
            to {
                transform: rotate(360deg);
            }
        }
        
        input[type="checkbox"] {
            display: none;
        }

        .dropdown {
            display: none;
            position: absolute;
            right: 0;
            top: 100%;
            background: white;
            border: 1px solid #E5E7EB;
            border-radius: 8px;
            box-shadow: 0 2px 8px rgba(0,0,0,0.1);
            z-index: 10;
        }

        .avatar-container:hover .dropdown {
            display: block;
        }
        :where([class^="ri-"])::before { content: "\f3c2"; }
        .sidebar.collapsed {
        overflow: hidden;
        }
        body {
        font-family: "Noto Sans SC", sans-serif;
        background-color: #f5f5f5;
        color: #333;
        }
        .sidebar {
        width: 280px;
        height: 100vh;
        position: fixed;
        left: 0;
        top: 0;
        background-color: white;
        border-right: 1px solid #e0e0e0;
        z-index: 10;
        overflow-y: auto;
        }
        .main-content {
        margin-left: 280px;
        min-height: 100vh;
        }
        .tree-nav-item {
        transition: all 0.2s ease;
        }
        .tree-nav-item:hover {
        background-color: rgba(76, 175, 80, 0.1);
        }
        .tree-nav-item.active {
        background-color: rgba(76, 175, 80, 0.15);
        border-left: 3px solid #4CAF50;
        }
        .submenu {
        max-height: 0;
        overflow: hidden;
        transition: max-height 0.3s ease;
        }
        .submenu.open {
        max-height: 500px;
        }
        input[type="search"]::-webkit-search-decoration,
        input[type="search"]::-webkit-search-cancel-button,
        input[type="search"]::-webkit-search-results-button,
        input[type="search"]::-webkit-search-results-decoration {
        display: none;
        }
        input[type="number"]::-webkit-inner-spin-button,
        input[type="number"]::-webkit-outer-spin-button {
        -webkit-appearance: none;
        margin: 0;
        }
        .custom-checkbox {
        position: relative;
        display: inline-block;
        width: 16px;
        height: 16px;
        background-color: white;
        border: 1px solid #ccc;
        border-radius: 3px;
        cursor: pointer;
        }
        .custom-checkbox.checked {
        background-color: #4CAF50;
        border-color: #4CAF50;
        }
        .custom-checkbox.checked::after {
        content: '';
        position: absolute;
        left: 5px;
        top: 2px;
        width: 5px;
        height: 9px;
        border: solid white;
        border-width: 0 2px 2px 0;
        transform: rotate(45deg);
        }
        .custom-switch {
        position: relative;
        display: inline-block;
        width: 40px;
        height: 20px;
        }
        .custom-switch input {
        opacity: 0;
        width: 0;
        height: 0;
        }
        .switch-slider {
        position: absolute;
        cursor: pointer;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        background-color: #ccc;
        transition: .4s;
        border-radius: 34px;
        }
        .switch-slider:before {
        position: absolute;
        content: "";
        height: 16px;
        width: 16px;
        left: 2px;
        bottom: 2px;
        background-color: white;
        transition: .4s;
        border-radius: 50%;
        }
        input:checked + .switch-slider {
        background-color: #4CAF50;
        }
        input:checked + .switch-slider:before {
        transform: translateX(20px);
        }
        .file-type-icon {
        width: 32px;
        height: 32px;
        display: flex;
        align-items: center;
        justify-content: center;
        border-radius: 4px;
        }
        .file-type-doc {
        background-color: rgba(87, 181, 231, 0.15);
        color: rgba(87, 181, 231, 1);
        }
        .file-type-xls {
        background-color: rgba(76, 175, 80, 0.15);
        color: rgba(76, 175, 80, 1);
        }
        .file-type-pdf {
        background-color: rgba(252, 141, 98, 0.15);
        color: rgba(252, 141, 98, 1);
        }
        .file-type-img {
        background-color: rgba(141, 211, 199, 0.15);
        color: rgba(141, 211, 199, 1);
        }
        .file-type-folder {
        background-color: rgba(251, 191, 114, 0.15);
        color: rgba(251, 191, 114, 1);
        }
        .file-type-other {
        background-color: rgba(179, 179, 179, 0.15);
        color: rgba(179, 179, 179, 1);
        }
        .data-table th {
        position: relative;
        }
        .data-table th:after {
        content: '';
        position: absolute;
        right: 8px;
        top: 50%;
        transform: translateY(-50%);
        width: 0;
        height: 0;
        }
        .data-table th.sort-asc:after {
        border-left: 4px solid transparent;
        border-right: 4px solid transparent;
        border-bottom: 6px solid #666;
        }
        .data-table th.sort-desc:after {
        border-left: 4px solid transparent;
        border-right: 4px solid transparent;
        border-top: 6px solid #666;
        }
:where([class^="ri-"])::before { content: "\f3c2"; }
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}
.step-line {
height: 2px;
background-color: #e5e7eb;
}
.step-line-active {
background-color: #4CAF50;
}
input[type="checkbox"] {
appearance: none;
width: 18px;
height: 18px;
border: 2px solid #d1d5db;
border-radius: 4px;
position: relative;
cursor: pointer;
}
input[type="checkbox"]:checked {
background-color: #4CAF50;
border-color: #4CAF50;
}
input[type="checkbox"]:checked::after {
content: "";
position: absolute;
left: 5px;
top: 2px;
width: 6px;
height: 10px;
border: solid white;
border-width: 0 2px 2px 0;
transform: rotate(45deg);
}
.file-item {
border-bottom: 1px solid #e5e7eb;
}
.file-item:last-child {
border-bottom: none;
}
.progress-bar {
height: 6px;
border-radius: 3px;
background-color: #e5e7eb;
overflow: hidden;
}
.progress-fill {
height: 100%;
background-color: #4CAF50;
}
.tab-active {
border-bottom: 2px solid #4CAF50;
color: #4CAF50;
}
:where([class^="ri-"])::before { content: "\f3c2"; }
[contenteditable="true"] {
cursor: text;
transition: background-color 0.2s;
}
[contenteditable="true"]:empty:before {
content: "点击编辑内容";
color: #999;
font-style: italic;
}
.sidebar.collapsed {
overflow: hidden;
}
body {
font-family: "Noto Sans SC", sans-serif;
background-color: #f5f5f5;
color: #333;
}
.sidebar {
width: 280px;
height: 100vh;
position: fixed;
left: 0;
top: 0;
background-color: white;
border-right: 1px solid #e0e0e0;
z-index: 10;
overflow-y: auto;
}
.main-content {
margin-left: 280px;
min-height: 100vh;
}
.tree-nav-item {
transition: all 0.2s ease;
}
.tree-nav-item:hover {
background-color: rgba(76, 175, 80, 0.1);
}
.tree-nav-item.active {
background-color: rgba(76, 175, 80, 0.15);
border-left: 3px solid #4CAF50;
}
.submenu {
max-height: 0;
overflow: hidden;
transition: max-height 0.3s ease;
}
.submenu.open {
max-height: 500px;
}
.report-card {
transition: all 0.2s ease;
}
.report-card:hover {
transform: translateY(-3px);
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
}
.chart-card {
transition: all 0.2s ease;
}
.chart-card:hover {
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
}
input[type="search"]::-webkit-search-decoration,
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-results-button,
input[type="search"]::-webkit-search-results-decoration {
display: none;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
.custom-checkbox {
position: relative;
display: inline-block;
width: 16px;
height: 16px;
background-color: white;
border: 1px solid #ccc;
border-radius: 3px;
cursor: pointer;
}
.custom-checkbox.checked {
background-color: #4CAF50;
border-color: #4CAF50;
}
.custom-checkbox.checked::after {
content: '';
position: absolute;
left: 5px;
top: 2px;
width: 5px;
height: 9px;
border: solid white;
border-width: 0 2px 2px 0;
transform: rotate(45deg);
}
.custom-switch {
position: relative;
display: inline-block;
width: 40px;
height: 20px;
}
.custom-switch input {
opacity: 0;
width: 0;
height: 0;
}
.switch-slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
transition: .4s;
border-radius: 34px;
}
.switch-slider:before {
position: absolute;
content: "";
height: 16px;
width: 16px;
left: 2px;
bottom: 2px;
background-color: white;
transition: .4s;
border-radius: 50%;
}
input:checked + .switch-slider {
background-color: #4CAF50;
}
input:checked + .switch-slider:before {
transform: translateX(20px);
}
.chapter-title {
position: relative;
padding-left: 15px;
}
.chapter-title::before {
content: '';
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
width: 4px;
height: 20px;
background-color: #4CAF50;
border-radius: 2px;
}
.toc-item {
position: relative;
padding-left: 15px;
}
.toc-item::before {
content: '';
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
width: 6px;
height: 6px;
background-color: #4CAF50;
border-radius: 0;
}
:where([class^="ri-"])::before { content: "\f3c2"; }
body {
font-family: 'Inter', 'PingFang SC', 'Microsoft YaHei', sans-serif;
scroll-behavior: smooth;
position: relative;
overflow-x: hidden;
}
.particle {
position: fixed;
background: rgba(76, 175, 80, 0.2);
pointer-events: none;
border-radius: 50%;
}
@keyframes float {
0% {
transform: translate(0, 0);
}
100% {
transform: translate(var(--tx), var(--ty));
}
}
.sidebar {
width: 280px;
height: 100vh;
position: fixed;
left: 0;
top: 0;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.05);
z-index: 10;
}
.content {
margin-left: 280px;
min-width: 744px;
}
.nav-item {
transition: all 0.2s;
}
.nav-item:hover {
background-color: rgba(0, 0, 0, 0.03);
}
.nav-item.active {
border-left: 3px solid #4CAF50;
background-color: rgba(76, 175, 80, 0.05);
}
.chart-card {
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
transition: all 0.5s;
opacity: 1;
transform: translateY(0);
}
.chart-card.slide-up {
transform: translateY(-20px);
}
.chart-card.slide-down {
transform: translateY(20px);
}
.chart-card:hover {
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
.chart-container {
height: 220px;
}
.ai-analysis {
background-color: rgba(76, 175, 80, 0.08);
}
input[type="checkbox"] {
appearance: none;
width: 18px;
height: 18px;
border: 2px solid #d1d5db;
border-radius: 4px;
position: relative;
cursor: pointer;
}
input[type="checkbox"]:checked {
background-color: #4CAF50;
border-color: #4CAF50;
}
input[type="checkbox"]:checked::after {
content: '';
position: absolute;
left: 5px;
top: 2px;
width: 6px;
height: 10px;
border: solid white;
border-width: 0 2px 2px 0;
transform: rotate(45deg);
}
.scroll-guide {
position: fixed;
right: 24px;
bottom: 24px;
background: white;
border-radius: 50%;
width: 40px;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 2px 12px rgba(0,0,0,0.1);
cursor: pointer;
opacity: 0;
transform: translateY(10px);
transition: all 0.3s;
z-index: 20;
}
.scroll-guide.show {
opacity: 1;
transform: translateY(0);
}
.scroll-guide:hover {
background: #f8f8f8;
}
@keyframes bounce {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-5px); }
}
.scroll-guide i {
animation: bounce 2s infinite;
}
:where([class^="ri-"])::before { content: "\f3c2"; }
.file-drop-active {
border-color: #4CAF50;
background-color: rgba(76, 175, 80, 0.05);
}
.monospace-table {
font-family: 'Courier New', monospace;
}
.table-container {
overflow-x: auto;
}
input[type="checkbox"] {
appearance: none;
-webkit-appearance: none;
width: 18px;
height: 18px;
border: 2px solid #9E9E9E;
border-radius: 4px;
outline: none;
cursor: pointer;
position: relative;
}
input[type="checkbox"]:checked {
background-color: #4CAF50;
border-color: #4CAF50;
}
input[type="checkbox"]:checked::after {
content: "";
position: absolute;
top: 2px;
left: 5px;
width: 6px;
height: 10px;
border: solid white;
border-width: 0 2px 2px 0;
transform: rotate(45deg);
}
#fileDropArea {
    display: flex;
    flex-direction: column;
    align-items: center;
}