HomePilot / frontend /src /ui /studio /styles /studio.css
HomePilot Deploy Bot
chore(hf): sync HomePilot to HF Space
23b413b
Raw History Blame Contribute Delete
8.11 kB
/**
* Studio Global Styles
*
* Core CSS variables and utility classes for the Studio module.
*/
/* ============================================
CSS Variables - Light Theme (SFW Default)
============================================ */
:root {
/* Primary */
--studio-primary: #3B82F6;
--studio-primary-hover: #2563EB;
--studio-primary-light: #DBEAFE;
/* Background */
--studio-background: #F8FAFC;
--studio-surface: #FFFFFF;
--studio-surface-hover: #F1F5F9;
/* Text */
--studio-text: #1E293B;
--studio-text-muted: #64748B;
--studio-text-light: #94A3B8;
/* Accents */
--studio-success: #10B981;
--studio-warning: #F59E0B;
--studio-danger: #EF4444;
/* Borders */
--studio-border: #E2E8F0;
--studio-border-hover: #CBD5E1;
/* Shadows */
--studio-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
--studio-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.07);
--studio-shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1);
/* Badge */
--studio-badge-sfw: #10B981;
--studio-badge-mature: linear-gradient(135deg, #8B5CF6, #F59E0B);
}
/* ============================================
Dark Theme (Mature Mode)
============================================ */
[data-theme="mature"],
.studio-layout[data-content-rating="mature"] {
--studio-primary: #8B5CF6;
--studio-primary-hover: #7C3AED;
--studio-primary-light: #2E2346;
--studio-background: #1E1B2E;
--studio-surface: #2A2640;
--studio-surface-hover: #36324D;
--studio-text: #F1F5F9;
--studio-text-muted: #A5A3B5;
--studio-text-light: #6B6980;
--studio-border: #3D3958;
--studio-border-hover: #4F4A6A;
--studio-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.2);
--studio-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.3);
--studio-shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.4);
}
/* ============================================
Base Styles
============================================ */
.studio-layout {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* ============================================
Scrollbar Styling
============================================ */
.studio-layout ::-webkit-scrollbar {
width: 8px;
height: 8px;
}
.studio-layout ::-webkit-scrollbar-track {
background: var(--studio-background);
border-radius: 4px;
}
.studio-layout ::-webkit-scrollbar-thumb {
background: var(--studio-border);
border-radius: 4px;
}
.studio-layout ::-webkit-scrollbar-thumb:hover {
background: var(--studio-border-hover);
}
/* ============================================
Utility Classes
============================================ */
/* Text */
.studio-text {
color: var(--studio-text);
}
.studio-text-muted {
color: var(--studio-text-muted);
}
.studio-text-light {
color: var(--studio-text-light);
}
/* Background */
.studio-bg {
background: var(--studio-background);
}
.studio-surface {
background: var(--studio-surface);
}
/* Border */
.studio-border {
border: 1px solid var(--studio-border);
}
/* Rounded */
.studio-rounded {
border-radius: 8px;
}
.studio-rounded-lg {
border-radius: 12px;
}
/* Shadow */
.studio-shadow {
box-shadow: var(--studio-shadow-md);
}
/* ============================================
Badge Styles
============================================ */
.studio-badge {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 4px 10px;
border-radius: 6px;
font-size: 12px;
font-weight: 500;
}
.studio-badge-sfw {
background: rgba(16, 185, 129, 0.1);
color: #059669;
border: 1px solid rgba(16, 185, 129, 0.3);
}
.studio-badge-mature {
background: linear-gradient(135deg, rgba(139, 92, 246, 0.2), rgba(245, 158, 11, 0.2));
color: #F59E0B;
border: 1px solid rgba(139, 92, 246, 0.3);
}
.studio-badge-nsfw {
background: linear-gradient(135deg, #8B5CF6, #F59E0B);
color: white;
}
.studio-badge-success {
background: rgba(16, 185, 129, 0.1);
color: #059669;
}
.studio-badge-warning {
background: rgba(245, 158, 11, 0.1);
color: #D97706;
}
.studio-badge-danger {
background: rgba(239, 68, 68, 0.1);
color: #DC2626;
}
/* ============================================
Button Styles
============================================ */
.studio-btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
padding: 10px 20px;
border-radius: 8px;
font-size: 14px;
font-weight: 500;
cursor: pointer;
transition: all 0.2s;
border: none;
}
.studio-btn:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.studio-btn-primary {
background: var(--studio-primary);
color: white;
}
.studio-btn-primary:hover:not(:disabled) {
background: var(--studio-primary-hover);
}
.studio-btn-secondary {
background: var(--studio-surface);
color: var(--studio-text);
border: 1px solid var(--studio-border);
}
.studio-btn-secondary:hover:not(:disabled) {
background: var(--studio-surface-hover);
}
.studio-btn-danger {
background: transparent;
color: var(--studio-danger);
border: 1px solid var(--studio-danger);
}
.studio-btn-danger:hover:not(:disabled) {
background: var(--studio-danger);
color: white;
}
/* ============================================
Input Styles
============================================ */
.studio-input {
width: 100%;
padding: 10px 14px;
border: 1px solid var(--studio-border);
border-radius: 8px;
background: var(--studio-surface);
color: var(--studio-text);
font-size: 14px;
transition: border-color 0.2s, box-shadow 0.2s;
}
.studio-input:focus {
outline: none;
border-color: var(--studio-primary);
box-shadow: 0 0 0 3px var(--studio-primary-light);
}
.studio-input::placeholder {
color: var(--studio-text-light);
}
.studio-textarea {
resize: vertical;
min-height: 100px;
font-family: inherit;
}
.studio-select {
appearance: none;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748B' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: right 12px center;
padding-right: 40px;
}
/* ============================================
Card Styles
============================================ */
.studio-card {
background: var(--studio-surface);
border: 1px solid var(--studio-border);
border-radius: 12px;
padding: 16px;
transition: all 0.2s;
}
.studio-card-interactive {
cursor: pointer;
}
.studio-card-interactive:hover {
border-color: var(--studio-primary);
box-shadow: var(--studio-shadow-md);
}
.studio-card-selected {
border-color: var(--studio-primary);
background: var(--studio-primary-light);
}
/* ============================================
Animation Keyframes
============================================ */
@keyframes studio-fade-in {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes studio-slide-up {
from {
transform: translateY(10px);
opacity: 0;
}
to {
transform: translateY(0);
opacity: 1;
}
}
@keyframes studio-spin {
to {
transform: rotate(360deg);
}
}
.studio-fade-in {
animation: studio-fade-in 0.2s ease;
}
.studio-slide-up {
animation: studio-slide-up 0.3s ease;
}
.studio-spinner {
width: 24px;
height: 24px;
border: 2px solid var(--studio-border);
border-top-color: var(--studio-primary);
border-radius: 50%;
animation: studio-spin 0.8s linear infinite;
}
/* ============================================
Responsive Utilities
============================================ */
@media (max-width: 768px) {
.studio-hide-mobile {
display: none !important;
}
}
@media (min-width: 769px) {
.studio-hide-desktop {
display: none !important;
}
}
/* ============================================
Print Styles
============================================ */
@media print {
.studio-layout {
background: white !important;
}
.studio-sidebar,
.studio-footer {
display: none !important;
}
}