/* Container */ .login-container { display: flex; overflow-y: auto; margin: 0; padding: 1rem; width: 100%; min-height: calc(100% - 32px); flex-direction: column; gap: 1.25rem; box-sizing: border-box; } /* Card Base */ .login-card { overflow: hidden; border: 1px solid var(--color-border-secondary); border-radius: var(--radius-xl); background: var(settings-section); box-shadow: var(--shadow-sm); transition: var(--transition-medium); } .login-card:hover { border-color: var(--color-border); box-shadow: var(--shadow-md); } /* Header Card */ .header-card .card-header { display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--color-border-secondary); padding: 1rem 1.5rem; flex-wrap: wrap; gap: 1rem; } .header-content { display: flex; align-items: center; gap: 1rem; flex: 1; } .header-icon { display: flex; align-items: center; color: var(--color-blue-common); } .header-content h1 { margin: 0; font-size: 1.5rem; font-weight: 600; color: var(--color-text-primary); letter-spacing: -0.025em; } .header-content p { margin: 0; font-size: 0.875rem; color: var(--color-text-secondary); } .header-actions { display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; } /* Action Button Base */ .action-button { display: flex; align-items: center; border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 0.5rem 1rem; font-size: 0.875rem; font-weight: 500; text-decoration: none; white-space: nowrap; color: var(--color-text-primary); background: var(--color-background-secondary); transition: var(--transition-fast); gap: 0.5rem; cursor: pointer; } .action-button:hover { border-color: var(--color-border); background: var(--color-background-secondary); box-shadow: var(--shadow-sm); transform: translateY(-1px); } .action-button:active { transform: translateY(0); box-shadow: none; } .action-button.primary { border-color: var(--color-accent); color: white; background: var(--color-accent); } .action-button.primary:hover { border-color: var(--color-accent); background: var(--color-accent); } .action-button.secondary { color: var(--color-text-secondary); background: var(--color-background-secondary); } .action-button.danger { border-color: var(--color-danger); color: white; background: var(--color-danger); } .action-button.danger:hover { border-color: var(--color-danger); background: var(--color-danger); } /* Tabs */ .tabs-card { border-radius: var(--radius-lg); } .tabs-container { overflow: hidden; padding: 0.75rem 1rem; } .tabs-nav-wrapper { position: relative; display: flex; align-items: center; } .tabs-nav { display: flex; align-items: center; width: 100%; flex-wrap: wrap; gap: 0.5rem; } .tab-button { display: flex; align-items: center; border: 1px solid var(--color-border-secondary); border-radius: var(--radius-md); padding: 0.5rem 1rem; min-width: fit-content; font-size: 0.875rem; font-weight: 500; text-decoration: none; white-space: nowrap; color: var(--color-text-secondary); background: var(--color-background-secondary); transition: var(--transition-fast); gap: 0.5rem; cursor: pointer; flex: 0 0 auto; } .tab-button:hover { border-color: var(--color-border); color: var(--color-text-primary); background: var(--color-surface-elevated); } .tab-button.active { border-color: var(--color-primary); color: white; background: var(--color-primary); } .tab-icon { width: 16px; height: 16px; object-fit: contain; } /* Content */ .content-card { flex: 1; background: var(--color-background-secondary); } .tab-content { padding: 1rem; } /* Config List */ .config-list-container { width: 100%; margin-bottom: 1rem; } .empty-state { padding: 3rem 1rem; text-align: center; color: var(--color-text-secondary); } .empty-icon { margin-bottom: 1rem; color: var(--color-text-tertiary); } .empty-state h3 { margin: 0 0 0.5rem; font-size: 1.25rem; font-weight: 600; color: var(--color-text-primary); } .empty-state p { margin: 0; font-size: 0.875rem; } .config-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 0.5rem; } .config-item { border: 1px solid var(--color-border-secondary); border-radius: var(--radius-lg); padding: 1.25rem; background: var( --color-background-secondary); transition: var(--transition-medium); } .config-item:hover { border-color: var(--color-border); box-shadow: var(--shadow-sm); } .config-header { display: flex; align-items: center; gap: 1rem; margin-bottom: 1rem; } .config-icon { width: 40px; height: 40px; object-fit: contain; } .config-info { flex: 1; } .config-alias { margin: 0 0 0.25rem; font-size: 1rem; font-weight: 600; color: var(--color-text-primary); } .config-type { margin: 0; font-size: 0.875rem; color: var(--color-text-secondary); } .config-details { margin-bottom: 1rem; } .details-button { display: flex; align-items: center; border: none; border-radius: var(--radius-md); padding: 0.5rem; font-size: 0.875rem; color: var(--color-text-secondary); background: var(--color-background-secondary); transition: var(--transition-fast); gap: 0.5rem; cursor: pointer; } .details-button:hover { color: var(--color-text-primary); background: var(--color-background-secondary); } .details-button .rotated { transform: rotate(180deg); } .config-table { overflow: hidden; margin-top: 0.75rem; border: 1px solid var(--color-border-secondary); border-radius: var(--radius-md); width: 100%; border-collapse: collapse; font-size: 0.875rem; } .table-row { display: flex; border-bottom: 1px solid var(--color-border-secondary); cursor: pointer; transition: var(--transition-fast); } .table-row:hover { background: var(--color-surface-elevated); } .table-row:last-child { border-bottom: none; } .table-key, .table-value { padding: 0.5rem 0.75rem; font-size: 0.875rem; } .table-key { width: 120px; font-weight: 500; color: var(--color-text-secondary); background: var(--color-background-secondary); flex-shrink: 0; } .table-value { flex: 1; color: var(--color-text-primary); word-break: break-all; } .config-actions { display: flex; gap: 0.75rem; } /* PicBed Config */ .picbed-config-container { width: 100%; } .picbed-config { margin: 0 auto; max-width: 800px; } .info-section { margin-bottom: 2rem; } .info-card { display: flex; align-items: flex-start; margin-bottom: 1rem; border-radius: var(--radius-md); padding: 1rem; gap: 1rem; } .info-card.primary { border: 1px solid rgb(99 102 241 / 20%); color: var(--color-primary); background: rgb(99 102 241 / 10%); } .info-card.reference { border: 1px solid rgb(107 114 128 / 20%); color: var(--color-text-secondary); background: rgb(107 114 128 / 10%); } .info-card p { margin: 0; font-size: 0.875rem; line-height: 1.5; } .link-button { border: none; padding: 0; font-size: inherit; text-decoration: underline; color: var(--color-primary); background: none; cursor: pointer; } .link-button:hover { color: var(--color-primary-hover); } /* Form */ .config-form { margin-bottom: 2rem; } .form-group { margin-bottom: 1.5rem; } .form-label { display: flex; align-items: center; margin-bottom: 0.5rem; font-size: 0.875rem; font-weight: 500; color: var(--color-text-primary); gap: 0.5rem; } .tooltip-button { display: flex; justify-content: center; align-items: center; border: none; border-radius: 50%; width: 20px; height: 20px; color: var(--color-text-tertiary); background: var(--color-background-secondary); transition: var(--transition-fast); cursor: help; } .tooltip-button:hover { color: var(--color-text-secondary); background: var(--color-border); } .form-input, .form-select { border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 0.75rem; width: 100%; font-size: 0.875rem; color: var(--color-text-primary); background: var(--color-background-primary); transition: var(--transition-fast); } .form-input:focus, .form-select:focus { border-color: var(--color-primary); outline: none; box-shadow: 0 0 0 3px rgb(99 102 241 / 10%); } .form-input:disabled { color: var(--color-text-tertiary); background: var(--color-background-secondary); cursor: not-allowed; } /* Custom Switch */ .custom-switch { position: relative; display: inline-block; width: 48px; height: 24px; } .custom-switch input { width: 0; height: 0; opacity: 0; } .switch-slider { position: absolute; inset: 0; border-radius: 24px; background-color: var(--color-border); transition: var(--transition-fast); cursor: pointer; } .switch-slider::before { position: absolute; bottom: 3px; left: 3px; border-radius: 50%; width: 18px; height: 18px; background-color: white; transition: var(--transition-fast); content: ""; } input:checked + .switch-slider { background-color: var(--color-success); } input:checked + .switch-slider::before { transform: translateX(24px); } /* Action Section */ .action-section { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-bottom: 2rem; flex-wrap: wrap; } .import-section { flex: 1; } .main-actions { display: flex; gap: 0.75rem; } /* Dropdown */ .dropdown-container { position: relative; } .dropdown-trigger { justify-content: space-between; min-width: 200px; } .dropdown-menu { position: absolute; top: 100%; right: 0; left: 0; z-index: 50; overflow-y: auto; margin-top: 0.25rem; border: 1px solid var(--color-border); border-radius: var(--radius-md); max-height: 200px; background: var(--color-surface-elevated); box-shadow: var(--shadow-lg); } .dropdown-item { display: block; border: none; padding: 0.75rem; width: 100%; font-size: 0.875rem; text-align: left; color: var(--color-text-primary); background: none; transition: var(--transition-fast); cursor: pointer; } .dropdown-item:hover { background: var(--color-background-secondary); } /* Config Table Section */ .config-table-section { margin-top: 2rem; } .config-table-section h3 { margin: 0 0 1rem; font-size: 1.125rem; font-weight: 600; color: var(--color-text-primary); } .responsive-table { overflow-x: auto; border: 1px solid var(--color-border-secondary); border-radius: var(--radius-md); } .config-table th { border-bottom: 1px solid var(--color-border-secondary); padding: 0.75rem; font-weight: 500; text-align: center; color: var(--color-text-secondary); background: var(--color-background-secondary); } .config-table td { border-bottom: 1px solid var(--color-border-secondary); padding: 0.75rem; text-align: center; transition: var(--transition-fast); cursor: pointer; } .config-table td:hover { background: var(--color-surface-elevated); } .config-table tr:last-child td { border-bottom: none; } /* Responsive */ @media (width <= 768px) { .login-container { padding: 0.75rem; gap: 1rem; } .header-card .card-header { align-items: flex-start; padding: 0.75rem 1rem; flex-direction: column; gap: 0.75rem; } .header-actions { justify-content: flex-end; width: 100%; } .tabs-container { padding: 0.5rem 0.75rem; } .tabs-nav { gap: 0.375rem; } .tab-button { padding: 0.5rem 0.75rem; max-width: 150px; font-size: 0.8rem; } .tab-icon { width: 14px; height: 14px; } .config-grid { grid-template-columns: 1fr; } .action-section { flex-direction: column; align-items: stretch; } .main-actions { justify-content: stretch; width: 100%; } .main-actions .action-button { flex: 1; } } @media (width <= 480px) { .login-container { padding: 0.5rem; } .tabs-container { padding: 0.5rem; } .tab-button { padding: 0.375rem 0.5rem; max-width: 120px; font-size: 0.75rem; } .tab-button span { display: none; } .tab-button.active span { display: inline; } } /* Form validation styles */ .form-group.has-error .form-label { color: var(--color-error); } .form-input.error, .form-select.error { border-color: var(--color-error); background-color: var(--color-error-surface); } .form-input.error:focus, .form-select.error:focus { border-color: var(--color-error); box-shadow: 0 0 0 2px var(--color-error-surface); } .required-marker { margin-left: 0.25rem; font-size: 1rem; font-weight: 600; color: var(--color-error); } .error-message { display: flex; align-items: center; margin-top: 0.25rem; font-size: 0.75rem; color: var(--color-error); gap: 0.25rem; } .error-message::before { content: "⚠"; font-size: 0.875rem; }