Files
discourse-themes/themes/35_dracula_pro_ultra/common_scss.scss
T

547 lines
14 KiB
SCSS

/* ═══════════════════════════════════════════════════════════════
DRACULA PRO ULTRA — info-board.win
The definitive dark theme. Built for focus, built for coders.
═══════════════════════════════════════════════════════════════ */
/* ── CUSTOM PROPERTIES ── */
.d-header,
#main-outlet,
html body {
--dp-bg: #282a36;
--dp-bg-deep: #1e1f29;
--dp-surface: #21222c;
--dp-surface2: #2d2f3f;
--dp-border: #44475a;
--dp-border2: #363849;
--dp-fg: #f8f8f2;
--dp-comment: #6272a4;
--dp-purple: #bd93f9;
--dp-purple-dim: rgba(189,147,249,0.12);
--dp-pink: #ff79c6;
--dp-pink-dim: rgba(255,121,198,0.1);
--dp-cyan: #8be9fd;
--dp-green: #50fa7b;
--dp-yellow: #f1fa8c;
--dp-orange: #ffb86c;
--dp-red: #ff5555;
--dp-radius: 8px;
--dp-radius-lg: 12px;
--dp-transition: 0.15s ease;
}
/* ── LAYOUT ── */
#main-outlet .wrap,
.d-header .wrap {
max-width: 1420px;
padding: 0 36px;
}
body {
font-family: -apple-system, "Inter", "Segoe UI", system-ui, sans-serif;
font-size: 15px;
line-height: 1.6;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* ── HEADER ── */
.d-header {
background: var(--dp-bg-deep) !important;
border-bottom: 1px solid var(--dp-border) !important;
box-shadow: 0 1px 0 rgba(189,147,249,0.12), 0 4px 24px rgba(0,0,0,0.4) !important;
height: 62px;
}
.d-header .wrap { display: flex; align-items: center; }
.d-header-icons .btn.icon,
.d-header .icons .btn.icon {
color: var(--dp-comment) !important;
border-radius: var(--dp-radius);
padding: 7px;
transition: color var(--dp-transition), background var(--dp-transition);
}
.d-header-icons .btn.icon:hover,
.d-header .icons .btn.icon:hover {
color: var(--dp-purple) !important;
background: var(--dp-purple-dim) !important;
}
/* ── NAVIGATION PILLS ── */
.nav-pills .nav-item a {
color: var(--dp-comment) !important;
border-radius: var(--dp-radius);
font-weight: 500;
font-size: 0.875rem;
padding: 6px 14px;
transition: color var(--dp-transition), background var(--dp-transition);
}
.nav-pills .nav-item.active a,
.nav-pills .nav-item a:hover {
color: var(--dp-purple) !important;
background: var(--dp-purple-dim) !important;
}
/* ── SIDEBAR ── */
.sidebar-wrapper {
background: var(--dp-bg) !important;
border-right: 1px solid var(--dp-border2) !important;
}
.sidebar-sections .sidebar-section-header-wrapper button {
color: var(--dp-comment) !important;
font-size: 0.67rem;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
}
.sidebar-sections .sidebar-section-link-wrapper a {
color: var(--dp-comment) !important;
border-radius: var(--dp-radius);
font-size: 0.875rem;
font-weight: 500;
padding: 6px 10px;
border-left: 2px solid transparent;
transition: all var(--dp-transition);
}
.sidebar-sections .sidebar-section-link-wrapper a:hover {
color: var(--dp-fg) !important;
background: var(--dp-surface2) !important;
}
.sidebar-sections .sidebar-section-link-wrapper a.active {
color: var(--dp-purple) !important;
background: var(--dp-purple-dim) !important;
border-left-color: var(--dp-purple);
font-weight: 600;
}
/* ── TOPIC LIST ── */
.topic-list thead th {
font-size: 0.7rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.09em;
color: var(--dp-comment) !important;
border-bottom: 1px solid var(--dp-border) !important;
background: transparent !important;
padding: 10px 12px;
}
.topic-list tbody .topic-list-item {
border-bottom: 1px solid var(--dp-border2) !important;
transition: background var(--dp-transition);
}
.topic-list tbody .topic-list-item:hover {
background: var(--dp-surface) !important;
}
.topic-list .main-link a.title,
.topic-list .link-top-line a.title {
color: var(--dp-fg) !important;
font-weight: 600;
font-size: 0.925rem;
line-height: 1.4;
transition: color var(--dp-transition);
}
.topic-list .main-link a.title:hover,
.topic-list .link-top-line a.title:hover {
color: var(--dp-purple) !important;
}
.topic-list .link-bottom-line { margin-top: 5px; }
.topic-list .topic-excerpt {
color: var(--dp-comment) !important;
font-size: 0.8rem;
line-height: 1.5;
margin-top: 4px;
}
.topic-list .num a,
.topic-list .num {
color: var(--dp-comment) !important;
font-size: 0.82rem;
}
.topic-list .posters .avatar { border-radius: 50%; }
/* ── CATEGORY LIST ── */
.category-list thead th {
font-size: 0.7rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.09em;
color: var(--dp-comment) !important;
border-bottom: 1px solid var(--dp-border) !important;
background: transparent !important;
padding: 10px 12px;
}
.category-list tbody tr {
border-bottom: 1px solid var(--dp-border2) !important;
transition: background var(--dp-transition);
}
.category-list tbody tr:hover {
background: var(--dp-surface) !important;
}
.category-list td.category .category-name a {
color: var(--dp-fg) !important;
font-weight: 700;
font-size: 0.975rem;
transition: color var(--dp-transition);
}
.category-list td.category .category-name a:hover {
color: var(--dp-purple) !important;
}
.category-list td.category .category-description,
.category-list td.category p {
color: var(--dp-comment) !important;
font-size: 0.82rem;
margin-top: 4px;
line-height: 1.5;
}
.subcategories .subcategory-list .category-name a {
color: var(--dp-comment) !important;
font-size: 0.82rem;
transition: color var(--dp-transition);
}
.subcategories .subcategory-list .category-name a:hover {
color: var(--dp-purple) !important;
}
/* ── POST CONTENT ── */
.cooked {
font-size: 0.95rem;
line-height: 1.82;
color: var(--dp-fg) !important;
}
.cooked p { margin: 0 0 1em; }
.cooked a {
color: var(--dp-cyan) !important;
text-decoration: none;
border-bottom: 1px solid rgba(139,233,253,0.3);
transition: border-color var(--dp-transition), color var(--dp-transition);
}
.cooked a:hover {
color: var(--dp-cyan) !important;
border-bottom-color: var(--dp-cyan);
}
.cooked h1, .cooked h2, .cooked h3,
.cooked h4, .cooked h5, .cooked h6 {
font-weight: 700;
line-height: 1.3;
margin: 1.75em 0 0.65em;
padding-bottom: 8px;
border-bottom: 1px solid var(--dp-border);
}
.cooked h1 { font-size: 1.7rem; color: var(--dp-pink) !important; font-weight: 800; }
.cooked h2 { font-size: 1.35rem; color: var(--dp-purple) !important; }
.cooked h3 { font-size: 1.1rem; color: var(--dp-cyan) !important; }
.cooked h4 { font-size: 0.975rem; color: var(--dp-yellow) !important; border-bottom: none; }
.cooked h5, .cooked h6 { font-size: 0.9rem; color: var(--dp-orange) !important; border-bottom: none; }
.cooked code:not(pre code) {
background: var(--dp-surface) !important;
color: var(--dp-pink) !important;
border: 1px solid var(--dp-border) !important;
border-radius: 5px;
font-family: "JetBrains Mono", "Fira Code", "Cascadia Code", "Consolas", monospace;
font-size: 0.84em;
padding: 2px 7px;
font-variant-ligatures: contextual;
}
.cooked pre {
background: var(--dp-bg-deep) !important;
border: 1px solid var(--dp-border) !important;
border-left: 4px solid var(--dp-purple) !important;
border-radius: 0 var(--dp-radius) var(--dp-radius) 0;
padding: 20px 22px;
margin: 18px 0;
overflow-x: auto;
position: relative;
}
.cooked pre code {
background: transparent !important;
border: none !important;
padding: 0 !important;
color: var(--dp-green) !important;
font-family: "JetBrains Mono", "Fira Code", "Cascadia Code", "Consolas", monospace;
font-size: 0.875rem;
line-height: 1.7;
font-variant-ligatures: contextual;
}
.cooked blockquote {
border-left: 4px solid var(--dp-purple) !important;
background: var(--dp-purple-dim) !important;
border-radius: 0 var(--dp-radius) var(--dp-radius) 0;
padding: 14px 20px;
margin: 18px 0;
color: var(--dp-fg) !important;
font-style: italic;
}
.cooked blockquote p { margin: 0; }
.cooked ul, .cooked ol {
padding-left: 1.5em;
margin: 0.75em 0;
}
.cooked li { margin: 0.35em 0; }
.cooked table {
border-collapse: collapse;
width: 100%;
margin: 18px 0;
border-radius: var(--dp-radius);
overflow: hidden;
border: 1px solid var(--dp-border);
}
.cooked table th {
background: var(--dp-surface) !important;
color: var(--dp-purple) !important;
font-size: 0.78rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.06em;
padding: 11px 16px;
border-bottom: 2px solid var(--dp-border) !important;
text-align: left;
}
.cooked table td {
padding: 10px 16px;
border-bottom: 1px solid var(--dp-border2) !important;
vertical-align: top;
}
.cooked table tr:last-child td { border-bottom: none !important; }
.cooked table tr:nth-child(even) td {
background: rgba(68,71,90,0.25) !important;
}
.cooked hr {
border: none;
border-top: 1px solid var(--dp-border);
margin: 24px 0;
}
/* ── TOPIC TITLE ── */
.fancy-title,
#topic-title h1,
.title-wrapper h1 {
font-size: 1.55rem;
font-weight: 800;
line-height: 1.28;
letter-spacing: -0.02em;
color: var(--dp-fg) !important;
}
/* ── BUTTONS ── */
.btn {
border-radius: var(--dp-radius) !important;
font-weight: 600;
font-size: 0.875rem;
transition: all var(--dp-transition);
}
.btn-primary {
background: var(--dp-purple) !important;
color: var(--dp-bg) !important;
border: none !important;
box-shadow: 0 2px 12px rgba(189,147,249,0.35);
}
.btn-primary:hover {
background: #c9a8fc !important;
box-shadow: 0 4px 20px rgba(189,147,249,0.5) !important;
}
.btn-default {
background: var(--dp-surface) !important;
border: 1px solid var(--dp-border) !important;
color: var(--dp-fg) !important;
}
.btn-default:hover {
background: var(--dp-surface2) !important;
border-color: var(--dp-purple) !important;
color: var(--dp-purple) !important;
}
.btn-danger {
background: var(--dp-red) !important;
border: none !important;
color: var(--dp-fg) !important;
}
/* ── POST ACTIONS ── */
.post-controls .actions .btn {
color: var(--dp-comment) !important;
background: transparent !important;
border-radius: var(--dp-radius) !important;
padding: 5px 10px;
font-size: 0.82rem;
transition: all var(--dp-transition);
}
.post-controls .actions .btn:hover {
color: var(--dp-purple) !important;
background: var(--dp-purple-dim) !important;
}
.post-controls .actions .btn.like-button.has-like .d-icon {
color: var(--dp-pink) !important;
}
.post-controls .actions .btn.like-button.has-like:hover {
background: var(--dp-pink-dim) !important;
}
/* ── TAGS ── */
.discourse-tag {
background: var(--dp-purple-dim) !important;
color: var(--dp-purple) !important;
border: 1px solid rgba(189,147,249,0.3) !important;
border-radius: 20px !important;
font-size: 0.72rem;
font-weight: 600;
padding: 3px 10px !important;
transition: all var(--dp-transition);
}
.discourse-tag:hover {
background: rgba(189,147,249,0.22) !important;
border-color: var(--dp-purple) !important;
}
/* ── BADGE ── */
.badge-notification {
background: var(--dp-purple) !important;
color: var(--dp-bg) !important;
border-radius: 10px;
font-size: 0.68rem;
font-weight: 700;
padding: 2px 7px;
min-width: 18px;
}
.badge-notification.new-posts,
.badge-notification.unread-posts {
background: var(--dp-pink) !important;
}
/* ── COMPOSER ── */
.d-editor-textarea-wrapper {
border-radius: var(--dp-radius) !important;
border-color: var(--dp-border) !important;
background: var(--dp-surface) !important;
overflow: hidden;
}
.d-editor-input {
font-family: "JetBrains Mono", "Fira Code", "Consolas", monospace !important;
font-size: 0.9rem !important;
line-height: 1.65 !important;
color: var(--dp-fg) !important;
background: var(--dp-surface) !important;
}
.d-editor-preview {
background: var(--dp-bg-deep) !important;
border-left: 1px solid var(--dp-border) !important;
}
/* ── FORM INPUTS ── */
input[type="text"], input[type="email"],
input[type="password"], input[type="search"],
textarea, select {
border-radius: var(--dp-radius) !important;
padding: 8px 12px !important;
border-color: var(--dp-border) !important;
transition: border-color var(--dp-transition), box-shadow var(--dp-transition);
}
input:focus, textarea:focus, select:focus {
border-color: var(--dp-purple) !important;
box-shadow: 0 0 0 3px rgba(189,147,249,0.15) !important;
outline: none !important;
}
/* ── NOTIFICATIONS ── */
.notification-item.unread,
.notification.unread {
background: rgba(189,147,249,0.06) !important;
border-left: 2px solid var(--dp-purple) !important;
}
/* ── STATUS ── */
.topic-status .d-icon-thumbtack { color: var(--dp-yellow) !important; }
.topic-status .d-icon-lock { color: var(--dp-comment) !important; }
.topic-status .d-icon-far-eye { color: var(--dp-cyan) !important; }
/* ── USER CARD ── */
.user-card, .group-card {
border-radius: var(--dp-radius-lg) !important;
box-shadow: 0 12px 40px rgba(0,0,0,0.55) !important;
border: 1px solid var(--dp-border) !important;
overflow: hidden;
}
/* ── SEARCH ── */
.search-menu-container input[type="text"] {
border-radius: var(--dp-radius) !important;
padding: 9px 14px !important;
font-size: 0.9rem;
}
/* ── TOPIC POST ── */
.topic-post article.boxed,
.post-stream .topic-post {
border-bottom: 1px solid var(--dp-border2) !important;
padding: 20px 0;
}
/* ── SCROLLBAR ── */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: var(--dp-bg-deep); }
::-webkit-scrollbar-thumb { background: var(--dp-border); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: var(--dp-comment); }
/* ── RESPONSIVE ── */
@media (max-width: 1100px) {
#main-outlet .wrap,
.d-header .wrap { padding: 0 20px; }
}
@media (max-width: 768px) {
body { font-size: 14px; }
.fancy-title, #topic-title h1 { font-size: 1.2rem; }
.cooked { font-size: 0.9rem; }
#main-outlet .wrap,
.d-header .wrap { padding: 0 14px; }
}