/* 时间计算器样式 */

.calculator-section {
   margin-bottom: var(--spacing-xl);
}

.time-input-group {
   background-color: var(--light-accent);
   border: 1px solid var(--border-color);
   border-radius: var(--border-radius-md);
   padding: var(--spacing-lg);
   margin-bottom: var(--spacing-md);
}

.time-input-group h3 {
   color: var(--heading-color);
   font-size: var(--font-size-lg);
   margin-bottom: var(--spacing-md);
   border-bottom: 2px solid var(--border-color);
   padding-bottom: var(--spacing-sm);
}

.datetime-inputs {
   display: flex;
   flex-direction: column;
   gap: var(--spacing-md);
}

.date-inputs,
.time-inputs {
   display: flex;
   gap: var(--spacing-sm);
}

.input-field {
   flex: 1;
   display: flex;
   flex-direction: column;
   gap: var(--spacing-xs);
}

.input-field label {
   font-size: var(--font-size-sm);
   color: var(--text-color);
   font-weight: var(--font-weight-medium);
}

.input-field input {
   padding: var(--spacing-sm) var(--spacing-md);
   border: 2px solid var(--border-color);
   border-radius: var(--border-radius-md);
   font-size: var(--font-size-base);
   background-color: var(--white);
   color: var(--text-color);
   transition: var(--transition-default);
   text-align: center;
}

.input-field input:focus {
   outline: none;
   border-color: var(--primary-color);
   box-shadow: var(--shadow-ring);
}

.input-field input::placeholder {
   color: var(--light-text);
}

.swap-button-container {
   display: flex;
   justify-content: center;
   margin-bottom: var(--spacing-md);
}

.swap-button {
   width: 44px;
   height: 44px;
   border-radius: var(--border-radius-circle);
   border: 2px solid var(--primary-color);
   background-color: var(--white);
   color: var(--primary-color);
   font-size: var(--font-size-lg-plus);
   cursor: pointer;
   transition: var(--transition-default);
   display: flex;
   align-items: center;
   justify-content: center;
}

.swap-button:hover {
   background-color: var(--primary-color);
   color: var(--white);
}

.button-group {
   display: flex;
   gap: var(--spacing-sm);
   margin-top: var(--spacing-lg);
}

.calculate-button {
   flex: 2;
   padding: var(--spacing-md) var(--spacing-xl);
   background-color: var(--success-color);
   color: var(--white);
   border: none;
   border-radius: var(--border-radius-md);
   font-size: var(--font-size-base);
   font-weight: var(--font-weight-semibold);
   cursor: pointer;
   transition: var(--transition-default);
}

.calculate-button:hover {
   background-color: var(--success-hover-color);
}

.secondary-button {
   flex: 1;
   padding: var(--spacing-md) var(--spacing-lg);
   background-color: var(--secondary-color);
   color: var(--white);
   border: none;
   border-radius: var(--border-radius-md);
   font-size: var(--font-size-base);
   cursor: pointer;
   transition: var(--transition-default);
}

.secondary-button:hover {
   background-color: var(--secondary-hover-color);
}

.result-section {
   margin-top: var(--spacing-xl);
}

.result-section h3 {
   color: var(--heading-color);
   font-size: var(--font-size-lg);
   border-bottom: 2px solid var(--border-color);
   padding-bottom: var(--spacing-sm);
   margin-bottom: var(--spacing-md);
}

.result-card {
   background-color: var(--light-accent);
   border-radius: var(--border-radius-md);
   border-left: 4px solid var(--primary-color);
   padding: var(--spacing-md);
   margin-bottom: var(--spacing-md);
}

.result-card h4 {
   color: var(--heading-color);
   font-size: var(--font-size-base);
   margin-bottom: var(--spacing-md);
   font-weight: var(--font-weight-semibold);
}

.result-value {
   font-size: var(--font-size-xl);
   color: var(--primary-color);
   font-weight: var(--font-weight-bold);
   line-height: 1.6;
   word-break: break-all;
}

.unit-results {
   display: grid;
   grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
   gap: var(--spacing-md);
}

.unit-item {
   background-color: var(--white);
   border: 1px solid var(--border-color);
   border-radius: var(--border-radius-md);
   padding: var(--spacing-sm) var(--spacing-md);
   text-align: center;
}

.unit-item .unit-label {
   font-size: var(--font-size-sm);
   color: var(--light-text);
   margin-bottom: var(--spacing-xs);
}

.unit-item .unit-value {
   font-size: var(--font-size-lg-plus);
   color: var(--primary-color);
   font-weight: var(--font-weight-bold);
}

.error-message {
   color: var(--danger-color);
   font-weight: var(--font-weight-medium);
   padding: var(--spacing-md);
   background-color: var(--danger-light);
   border: 1px solid var(--danger-border);
   border-radius: var(--border-radius-md);
   margin-top: var(--spacing-md);
}

@media (max-width: 768px) {
   .time-input-group {
       padding: var(--spacing-md);
   }

   .button-group {
       flex-direction: column;
   }

   .calculate-button,
   .secondary-button {
       flex: none;
       width: 100%;
   }

   .unit-results {
       grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
   }

   .result-value {
       font-size: var(--font-size-lg-plus);
   }

   .swap-button {
       width: 40px;
       height: 40px;
       font-size: var(--font-size-lg);
   }
}

@media (max-width: 480px) {
   .time-input-group {
       padding: var(--spacing-sm);
   }

   .time-input-group h3 {
       font-size: var(--font-size-base);
   }

   .date-inputs,
   .time-inputs {
       gap: 6px;
   }

   .input-field input {
       padding: var(--spacing-xs) var(--spacing-sm);
       font-size: var(--font-size-sm);
   }

   .input-field label {
       font-size: var(--font-size-xs);
   }

   .calculate-button {
       padding: var(--spacing-sm) var(--spacing-md);
       font-size: var(--font-size-sm);
   }

   .secondary-button {
       padding: var(--spacing-sm) var(--spacing-md);
       font-size: var(--font-size-sm);
   }

   .unit-results {
       grid-template-columns: repeat(2, 1fr);
       gap: var(--spacing-sm);
   }

   .unit-item {
       padding: var(--spacing-sm);
   }

   .unit-item .unit-value {
       font-size: var(--font-size-base);
   }

   .unit-item .unit-label {
       font-size: var(--font-size-xs);
   }

   .result-value {
       font-size: var(--font-size-base);
   }

   .result-card h4 {
       font-size: var(--font-size-sm);
   }

   .result-section h3 {
       font-size: var(--font-size-base);
   }
}

body.dark-theme .time-input-group {
   background-color: var(--card-bg-color);
   border-color: var(--border-color);
}

body.dark-theme .input-field input {
   background-color: var(--card-bg-color);
   color: var(--text-color);
   border-color: var(--border-color);
}

body.dark-theme .swap-button {
   background-color: var(--card-bg-color);
   border-color: var(--secondary-color);
   color: var(--secondary-color);
}

body.dark-theme .swap-button:hover {
   background-color: var(--secondary-color);
   color: var(--white);
}

body.dark-theme .result-card {
   background-color: var(--primary-color);
   border-left-color: var(--secondary-color);
}

body.dark-theme .result-card h4 {
   color: var(--dark-heading-color);
}

body.dark-theme .result-value {
   color: var(--secondary-color);
}

body.dark-theme .unit-item {
   background-color: var(--primary-color);
   border-color: var(--border-color);
}

body.dark-theme .unit-item .unit-value {
   color: var(--secondary-color);
}

body.dark-theme .calculate-button {
   background-color: var(--success-color);
   color: var(--white);
}

body.dark-theme .secondary-button {
   background-color: var(--secondary-color);
   color: var(--white);
}

body.dark-theme .error-message {
   color: var(--danger-color);
   background-color: var(--light-accent);
   border-color: var(--border-color);
}

/* ============ 对轨计算 ============ */

.sync-section {
   margin-top: var(--spacing-xxl);
   padding-top: var(--spacing-lg);
   border-top: 2px solid var(--border-color);
}

.sync-section h3 {
   color: var(--heading-color);
   font-size: var(--font-size-lg);
   margin-bottom: var(--spacing-sm);
}

.sync-description {
   color: var(--text-color);
   opacity: 0.7;
   margin-bottom: var(--spacing-lg);
   font-size: var(--font-size-sm);
}

.sync-reference {
   background-color: var(--light-accent);
   border: 1px solid var(--border-color);
   border-radius: var(--border-radius-md);
   padding: var(--spacing-lg);
   margin-bottom: var(--spacing-lg);
}

.sync-reference h4 {
   color: var(--heading-color);
   font-size: var(--font-size-base);
   margin-bottom: var(--spacing-md);
   font-weight: var(--font-weight-semibold);
}

.sync-ref-row {
   display: flex;
   align-items: flex-end;
   gap: var(--spacing-md);
}

.sync-ref-field {
   flex: 1;
   display: flex;
   flex-direction: column;
   gap: var(--spacing-xs);
}

.sync-ref-field label {
   font-size: var(--font-size-sm);
   color: var(--text-color);
   font-weight: var(--font-weight-medium);
}

.sync-ref-field input {
   padding: var(--spacing-sm) var(--spacing-md);
   border: 2px solid var(--border-color);
   border-radius: var(--border-radius-md);
   font-size: var(--font-size-base);
   background-color: var(--white);
   color: var(--text-color);
   text-align: center;
   font-family: var(--font-mono);
   transition: border-color 0.2s;
}

.sync-ref-field input:focus {
   outline: none;
   border-color: var(--primary-color);
   box-shadow: var(--shadow-ring);
}

.sync-ref-field input::placeholder {
   color: var(--light-text);
}

.sync-arrow {
   font-size: var(--font-size-xl);
   color: var(--secondary-color);
   font-weight: var(--font-weight-bold);
   padding-bottom: var(--spacing-xs-plus);
}

.sync-list-header {
   display: flex;
   justify-content: space-between;
   align-items: center;
   margin-bottom: var(--spacing-md);
}

.sync-list-header h4 {
   color: var(--heading-color);
   font-size: var(--font-size-base);
   font-weight: var(--font-weight-semibold);
}

.sync-list-actions {
   display: flex;
   gap: var(--spacing-sm);
}

.sync-add-btn {
   padding: var(--spacing-xs) var(--spacing-md);
   background-color: var(--success-color);
   color: var(--white);
   border: none;
   border-radius: var(--border-radius-md);
   font-size: var(--font-size-sm);
   cursor: pointer;
   transition: background-color 0.2s;
}

.sync-add-btn:hover {
   opacity: 0.85;
}

.sync-batch-btn {
   padding: var(--spacing-xs) var(--spacing-md);
   background-color: var(--secondary-color);
   color: var(--white);
   border: none;
   border-radius: var(--border-radius-md);
   font-size: var(--font-size-sm);
   cursor: pointer;
   transition: background-color 0.2s;
}

.sync-batch-btn:hover {
   opacity: 0.85;
}

.sync-batch-area {
   margin-bottom: var(--spacing-md);
}

.sync-batch-area textarea {
   width: 100%;
   padding: var(--spacing-sm) var(--spacing-md);
   border: 1px solid var(--border-color);
   border-radius: var(--border-radius-md);
   font-size: var(--font-size-sm);
   font-family: var(--font-mono);
   background-color: var(--white);
   color: var(--text-color);
   resize: vertical;
   box-sizing: border-box;
   margin-bottom: var(--spacing-sm);
}

.sync-batch-area textarea:focus {
   outline: none;
   border-color: var(--primary-color);
}

.sync-list {
   display: flex;
   flex-direction: column;
   gap: var(--spacing-sm);
}

.sync-item {
   display: flex;
   align-items: center;
   gap: var(--spacing-sm);
   padding: var(--spacing-xs) 0;
}

.sync-real-input {
   flex: 1;
   padding: var(--spacing-xs) var(--spacing-sm);
   border: 1px solid var(--border-color);
   border-radius: var(--border-radius-sm);
   font-size: var(--font-size-sm);
   background-color: var(--white);
   color: var(--text-color);
   font-family: var(--font-mono);
}

.sync-real-input:focus {
   outline: none;
   border-color: var(--primary-color);
}

.sync-real-input::placeholder {
   color: var(--light-text);
   font-size: var(--font-size-xs);
}

.sync-item .sync-arrow {
   font-size: var(--font-size-base);
   padding: 0;
   flex-shrink: 0;
}

.sync-timeline-result {
   font-size: var(--font-size-sm);
   font-weight: var(--font-weight-semibold);
   color: var(--secondary-color);
   font-family: var(--font-mono);
   min-width: 90px;
   text-align: left;
   flex-shrink: 0;
}

.sync-timeline-result.sync-neg {
   color: var(--danger-color);
}

.sync-remove-btn {
   background: transparent;
   border: none;
   color: var(--light-text);
   font-size: var(--font-size-sm-plus);
   cursor: pointer;
   padding: 0 4px;
   flex-shrink: 0;
   transition: color 0.2s;
}

.sync-remove-btn:hover {
   color: var(--danger-color);
}

.sync-error {
   color: var(--danger-color);
   font-weight: var(--font-weight-medium);
   padding: var(--spacing-md);
   background-color: var(--danger-light);
   border: 1px solid var(--danger-border);
   border-radius: var(--border-radius-md);
   margin-top: var(--spacing-md);
}

/* 对轨 - 暗色主题 */
body.dark-theme .sync-reference {
   background-color: var(--card-bg-color);
   border-color: var(--border-color);
}

body.dark-theme .sync-ref-field input,
body.dark-theme .sync-real-input,
body.dark-theme .sync-batch-area textarea {
   background-color: var(--card-bg-color);
   color: var(--text-color);
   border-color: var(--border-color);
}

body.dark-theme .sync-timeline-result {
   color: var(--secondary-color);
}

/* 对轨 - 响应式 */
@media (max-width: 768px) {
   .sync-ref-row {
       flex-direction: column;
       align-items: stretch;
       gap: var(--spacing-sm);
   }

   .sync-arrow {
       text-align: center;
       padding: 0;
   }
}


@media (max-width: 600px) {
    .mainbox {
        padding: var(--spacing-sm);
    }
}


@media (max-width: 900px) {
    /* 平板宽度: 容器间距收紧 */
    .mainbox {
        padding: var(--spacing-lg);
    }
}

@media (max-width: 1200px) {
    /* 1200px: 大屏到中屏过渡,无特殊调整 */
}


@media (max-width: 1800px) {
    /* 1800px: 超大屏限制,无特殊调整 */
}
