248 lines
7.5 KiB
CSS
248 lines
7.5 KiB
CSS
/* =============================================================================
|
|
Dealspace Portal — app.css
|
|
Single canonical stylesheet for all portal pages.
|
|
============================================================================= */
|
|
|
|
/* ===== BASE ===== */
|
|
* { font-family: 'Inter', sans-serif; }
|
|
|
|
/* ===== THEMES ===== */
|
|
:root,
|
|
html[data-theme="midnight"] {
|
|
--ds-bg: #0a1628;
|
|
--ds-sf: #0d1f3c;
|
|
--ds-tx: #fff;
|
|
--ds-tx2: #94a3b8;
|
|
--ds-tx3: #475569;
|
|
--ds-ac: #c9a84c;
|
|
--ds-ac2: #b8973f;
|
|
--ds-act: #0a1628;
|
|
--ds-bd: rgba(255,255,255,.08);
|
|
--ds-hv: rgba(255,255,255,.04);
|
|
--ds-inp: #0a1628;
|
|
--ds-hf: 'Inter', sans-serif;
|
|
}
|
|
|
|
html[data-theme="light"] {
|
|
--ds-bg: #f0f2f5;
|
|
--ds-sf: #fff;
|
|
--ds-tx: #1a202c;
|
|
--ds-tx2: #64748b;
|
|
--ds-tx3: #94a3b8;
|
|
--ds-ac: #2563eb;
|
|
--ds-ac2: #1d4ed8;
|
|
--ds-act: #fff;
|
|
--ds-bd: rgba(0,0,0,.08);
|
|
--ds-hv: rgba(0,0,0,.05);
|
|
--ds-inp: #f8fafc;
|
|
--ds-hf: 'Inter', sans-serif;
|
|
}
|
|
|
|
html[data-theme="slate"] {
|
|
--ds-bg: #1e293b;
|
|
--ds-sf: #334155;
|
|
--ds-tx: #f1f5f9;
|
|
--ds-tx2: #94a3b8;
|
|
--ds-tx3: #64748b;
|
|
--ds-ac: #14b8a6;
|
|
--ds-ac2: #0d9488;
|
|
--ds-act: #0f172a;
|
|
--ds-bd: rgba(148,163,184,.12);
|
|
--ds-hv: rgba(255,255,255,.05);
|
|
--ds-inp: #1e293b;
|
|
--ds-hf: 'Inter', sans-serif;
|
|
}
|
|
|
|
html[data-theme="compact"] {
|
|
font-size: 13.5px;
|
|
--ds-bg: #0a1628;
|
|
--ds-sf: #0d1f3c;
|
|
--ds-tx: #fff;
|
|
--ds-tx2: #94a3b8;
|
|
--ds-tx3: #475569;
|
|
--ds-ac: #c9a84c;
|
|
--ds-ac2: #b8973f;
|
|
--ds-act: #0a1628;
|
|
--ds-bd: rgba(255,255,255,.08);
|
|
--ds-hv: rgba(255,255,255,.04);
|
|
--ds-inp: #0a1628;
|
|
--ds-hf: 'Inter', sans-serif;
|
|
}
|
|
|
|
html[data-theme="executive"] {
|
|
font-size: 17px;
|
|
--ds-bg: #1a1410;
|
|
--ds-sf: #2a2218;
|
|
--ds-tx: #f5f0e8;
|
|
--ds-tx2: #c4b8a4;
|
|
--ds-tx3: #8a7e6e;
|
|
--ds-ac: #d4a843;
|
|
--ds-ac2: #c49835;
|
|
--ds-act: #1a1410;
|
|
--ds-bd: rgba(196,184,164,.12);
|
|
--ds-hv: rgba(212,168,67,.06);
|
|
--ds-inp: #1a1410;
|
|
--ds-hf: 'Georgia', 'Times New Roman', serif;
|
|
}
|
|
|
|
/* ===== THEME OVERRIDES (Tailwind hardcoded → CSS vars) ===== */
|
|
body { background: var(--ds-bg) !important; }
|
|
h1, h2, h3 { font-family: var(--ds-hf) !important; }
|
|
html[data-theme="executive"] * { font-family: 'Georgia', 'Times New Roman', serif !important; }
|
|
header { background: var(--ds-sf) !important; border-color: var(--ds-bd) !important; }
|
|
nav { background: var(--ds-sf) !important; border-color: var(--ds-bd) !important; }
|
|
.text-white { color: var(--ds-tx) !important; }
|
|
[class*="text-white/"] { color: var(--ds-tx3) !important; }
|
|
[class*="bg-[#0d1f3c]"] { background-color: var(--ds-sf) !important; }
|
|
[class*="bg-[#0a1628]"] { background-color: var(--ds-bg) !important; }
|
|
[class*="text-[#c9a84c]"] { color: var(--ds-ac) !important; }
|
|
[class*="text-[#94a3b8]"] { color: var(--ds-tx2) !important; }
|
|
[class*="text-[#475569]"] { color: var(--ds-tx3) !important; }
|
|
[class*="text-[#0a1628]"] { color: var(--ds-act) !important; }
|
|
[class*="bg-[#c9a84c]"] { background-color: var(--ds-ac) !important; }
|
|
[class*="hover:bg-[#b8973f]"]:hover { background-color: var(--ds-ac2) !important; }
|
|
[class*="border-white"] { border-color: var(--ds-bd) !important; }
|
|
[class*="bg-white/"] { background-color: var(--ds-hv) !important; }
|
|
[class*="hover:bg-white/"]:hover { background-color: var(--ds-hv) !important; }
|
|
input, textarea, select { background-color: var(--ds-inp) !important; color: var(--ds-tx) !important; border-color: var(--ds-bd) !important; }
|
|
input:focus, textarea:focus, select:focus { border-color: var(--ds-ac) !important; }
|
|
[class*="bg-black/"] { background-color: rgba(0,0,0,.6) !important; }
|
|
|
|
/* ===== SIDEBAR ===== */
|
|
.sidebar-link.active {
|
|
background: color-mix(in srgb, var(--ds-ac) 10%, transparent) !important;
|
|
color: var(--ds-ac) !important;
|
|
border-left-color: var(--ds-ac) !important;
|
|
border-left: 3px solid var(--ds-ac);
|
|
}
|
|
.sidebar-link:hover:not(.active) { background: var(--ds-hv) !important; }
|
|
|
|
/* ===== TABS ===== */
|
|
.tab { border-bottom: 2px solid transparent; }
|
|
.tab.active { color: var(--ds-ac) !important; border-bottom-color: var(--ds-ac) !important; }
|
|
|
|
/* ===== BADGES ===== */
|
|
.badge {
|
|
display: inline-block;
|
|
padding: 1px 8px;
|
|
border-radius: 9999px;
|
|
font-size: 11px;
|
|
font-weight: 500;
|
|
line-height: 18px;
|
|
}
|
|
.priority-high { background: #ef4444; }
|
|
.priority-normal { background: #c9a84c; }
|
|
.priority-low { background: #22c55e; }
|
|
|
|
/* ===== CARDS ===== */
|
|
.card:hover { border-color: rgba(201,168,76,0.3); transform: translateY(-1px); }
|
|
.task-card:hover { border-color: rgba(201,168,76,0.3); transform: translateY(-1px); }
|
|
|
|
/* ===== ACTIONS MENU ===== */
|
|
.actions-menu {
|
|
position: absolute;
|
|
right: 0;
|
|
top: 100%;
|
|
background: var(--ds-sf, #0d1f3c);
|
|
border: 1px solid var(--ds-bd);
|
|
border-radius: 8px;
|
|
padding: 4px 0;
|
|
min-width: 160px;
|
|
z-index: 100;
|
|
box-shadow: 0 8px 24px rgba(0,0,0,.4);
|
|
}
|
|
.actions-menu button {
|
|
display: block;
|
|
width: 100%;
|
|
text-align: left;
|
|
padding: 6px 14px;
|
|
font-size: 13px;
|
|
color: var(--ds-tx2, #94a3b8);
|
|
background: none;
|
|
border: none;
|
|
cursor: pointer;
|
|
}
|
|
.actions-menu button:hover { background: var(--ds-hv); color: var(--ds-tx, #fff); }
|
|
|
|
/* ===== TREE TABLE ===== */
|
|
#reqTree { border-collapse: collapse; width: 100%; font-size: 13px; }
|
|
#reqTree th {
|
|
text-align: left;
|
|
padding: 6px 10px;
|
|
font-weight: 600;
|
|
font-size: 11px;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
color: var(--ds-tx3, #475569);
|
|
border-bottom: 1px solid var(--ds-bd, rgba(255,255,255,.08));
|
|
user-select: none;
|
|
white-space: nowrap;
|
|
}
|
|
#reqTree td {
|
|
padding: 5px 10px;
|
|
border-bottom: 1px solid var(--ds-bd, rgba(255,255,255,.08));
|
|
vertical-align: middle;
|
|
white-space: nowrap;
|
|
}
|
|
#reqTree tbody tr { transition: background .1s; }
|
|
#reqTree tbody tr:hover { background: var(--ds-hv, rgba(255,255,255,.04)); }
|
|
#reqTree tbody tr.row-list { background: var(--ds-sf, #0d1f3c); }
|
|
#reqTree tbody tr.row-list:hover { background: color-mix(in srgb, var(--ds-sf, #0d1f3c) 85%, var(--ds-tx, white)); }
|
|
#reqTree tbody tr.row-section { background: rgba(255,255,255,.02); }
|
|
#reqTree .row-num { font-variant-numeric: tabular-nums; font-size: 12px; color: var(--ds-tx3, #475569); }
|
|
|
|
/* ===== DRAG & DROP ===== */
|
|
#reqTree .drag-handle { cursor: grab; opacity: 0.3; transition: opacity .15s; }
|
|
#reqTree tr:hover .drag-handle { opacity: 0.8; }
|
|
#reqTree .collapse-btn {
|
|
cursor: pointer;
|
|
user-select: none;
|
|
display: inline-block;
|
|
width: 16px;
|
|
text-align: center;
|
|
font-size: 10px;
|
|
color: var(--ds-tx3, #475569);
|
|
transition: transform .15s;
|
|
}
|
|
#reqTree .collapse-btn.collapsed { transform: rotate(-90deg); }
|
|
.drop-above { box-shadow: 0 -2px 0 var(--ds-ac, #c9a84c) inset; }
|
|
.drop-below { box-shadow: 0 2px 0 var(--ds-ac, #c9a84c) inset; }
|
|
.drop-into { box-shadow: inset 0 0 0 1px var(--ds-ac, #c9a84c); }
|
|
|
|
/* ===== THEME BAR ===== */
|
|
#ds-theme-bar {
|
|
position: fixed;
|
|
bottom: 20px;
|
|
right: 20px;
|
|
z-index: 9999;
|
|
display: flex;
|
|
gap: 3px;
|
|
padding: 4px;
|
|
background: var(--ds-sf);
|
|
border: 1px solid var(--ds-bd);
|
|
border-radius: 12px;
|
|
box-shadow: 0 4px 20px rgba(0,0,0,.3);
|
|
}
|
|
#ds-theme-bar button {
|
|
padding: 5px 10px;
|
|
border-radius: 8px;
|
|
border: none;
|
|
cursor: pointer;
|
|
background: transparent;
|
|
color: var(--ds-tx2);
|
|
white-space: nowrap;
|
|
transition: all .15s;
|
|
font-size: 12px;
|
|
}
|
|
#ds-theme-bar button:hover { background: var(--ds-hv); }
|
|
#ds-theme-bar button.active { background: var(--ds-ac); color: var(--ds-act); font-weight: 600; }
|
|
#ds-theme-bar, #ds-theme-bar * { font-family: 'Inter', sans-serif !important; }
|
|
|
|
/* ===== AUTH PAGES ===== */
|
|
.code-input {
|
|
letter-spacing: 0.5em;
|
|
text-align: center;
|
|
font-size: 1.5rem;
|
|
font-weight: 600;
|
|
}
|