White-label multi-domain tuki (Noxus Intra)
- CSS-muuttujat: kaikki kovakoodatut #0f3460/#16213e korvattu var(--primary-color)/var(--primary-dark) - Uudet API-endpointit: branding (julkinen, domain-pohjainen), company_logo, company_logo_upload - Domain-pohjainen brändäys: HTTP_HOST → yrityksen domains-arrayn matchaus - Login: domain asettaa oletusyrityksen sessioon - check_auth: palauttaa branding-objektin (primary_color, subtitle, logo_url) - company_create/update: käsittelee domains, primary_color, subtitle, logo_file - Dynaaminen login-sivu, header ja footer (logo, nimi, alaotsikko, värit) - JS: loadBranding(), applyBranding(), yritysvaihdon brändäyspäivitys - Admin-paneeli: brändäysasetukset (logo-upload, väri, alaotsikko, domainit) - Git-repo siirretty intra.noxus.fi:hin Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
79
style.css
79
style.css
@@ -1,3 +1,10 @@
|
||||
:root {
|
||||
--primary-color: #0f3460;
|
||||
--primary-dark: #16213e;
|
||||
--primary-light: color-mix(in srgb, var(--primary-color) 10%, white);
|
||||
--primary-hover: color-mix(in srgb, var(--primary-color) 85%, black);
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
@@ -17,7 +24,7 @@ body {
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-height: 100vh;
|
||||
background: linear-gradient(135deg, #0f3460, #16213e);
|
||||
background: linear-gradient(135deg, var(--primary-color), var(--primary-dark));
|
||||
}
|
||||
|
||||
.login-box {
|
||||
@@ -34,7 +41,7 @@ body {
|
||||
.login-box h1 {
|
||||
font-size: 1.8rem;
|
||||
margin-bottom: 0.5rem;
|
||||
color: #0f3460;
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
.login-box p {
|
||||
@@ -54,13 +61,13 @@ body {
|
||||
|
||||
.login-box input:focus {
|
||||
outline: none;
|
||||
border-color: #0f3460;
|
||||
border-color: var(--primary-color);
|
||||
}
|
||||
|
||||
.login-box button {
|
||||
width: 100%;
|
||||
padding: 12px;
|
||||
background: #0f3460;
|
||||
background: var(--primary-color);
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: 8px;
|
||||
@@ -70,7 +77,7 @@ body {
|
||||
}
|
||||
|
||||
.login-box button:hover {
|
||||
background: #16213e;
|
||||
background: var(--primary-dark);
|
||||
}
|
||||
|
||||
.error {
|
||||
@@ -88,7 +95,7 @@ body {
|
||||
.forgot-link {
|
||||
display: inline-block;
|
||||
margin-top: 1rem;
|
||||
color: #0f3460;
|
||||
color: var(--primary-color);
|
||||
font-size: 0.85rem;
|
||||
text-decoration: none;
|
||||
opacity: 0.7;
|
||||
@@ -110,7 +117,7 @@ body {
|
||||
.captcha-question {
|
||||
font-size: 1.1rem;
|
||||
font-weight: 700;
|
||||
color: #0f3460;
|
||||
color: var(--primary-color);
|
||||
white-space: nowrap;
|
||||
min-width: 120px;
|
||||
text-align: center;
|
||||
@@ -127,7 +134,7 @@ body {
|
||||
|
||||
/* Header */
|
||||
header {
|
||||
background: linear-gradient(135deg, #0f3460, #16213e);
|
||||
background: linear-gradient(135deg, var(--primary-color), var(--primary-dark));
|
||||
color: #fff;
|
||||
padding: 1rem 2rem;
|
||||
display: flex;
|
||||
@@ -221,7 +228,7 @@ header {
|
||||
}
|
||||
|
||||
.sidebar-stats .stat-card.highlight {
|
||||
background: #0f3460;
|
||||
background: var(--primary-color);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
@@ -253,7 +260,7 @@ header {
|
||||
}
|
||||
|
||||
.stat-highlight {
|
||||
color: #0f3460;
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
.sidebar-stats .stat-card.trivia .stat-value {
|
||||
@@ -285,7 +292,7 @@ header {
|
||||
|
||||
.speed-item.top {
|
||||
font-weight: 700;
|
||||
color: #0f3460;
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
.speed-bar {
|
||||
@@ -297,7 +304,7 @@ header {
|
||||
}
|
||||
|
||||
.speed-item.top .speed-bar {
|
||||
background: #0f3460;
|
||||
background: var(--primary-color);
|
||||
}
|
||||
|
||||
/* Toolbar */
|
||||
@@ -331,7 +338,7 @@ header {
|
||||
|
||||
.search-bar input:focus {
|
||||
outline: none;
|
||||
border-color: #0f3460;
|
||||
border-color: var(--primary-color);
|
||||
box-shadow: 0 0 0 3px rgba(15,52,96,0.1);
|
||||
}
|
||||
|
||||
@@ -350,7 +357,7 @@ table {
|
||||
}
|
||||
|
||||
thead th {
|
||||
background: #16213e;
|
||||
background: var(--primary-dark);
|
||||
color: #fff;
|
||||
padding: 11px 14px;
|
||||
text-align: left;
|
||||
@@ -401,7 +408,7 @@ tbody td {
|
||||
|
||||
.price-cell {
|
||||
font-weight: 700;
|
||||
color: #0f3460;
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
.actions-cell {
|
||||
@@ -460,7 +467,7 @@ tbody td {
|
||||
|
||||
#total-billing {
|
||||
font-size: 0.95rem;
|
||||
color: #0f3460;
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
/* Footer */
|
||||
@@ -604,7 +611,7 @@ footer {
|
||||
|
||||
.modal-header h2 {
|
||||
font-size: 1.3rem;
|
||||
color: #0f3460;
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
.modal-close {
|
||||
@@ -635,7 +642,7 @@ form {
|
||||
|
||||
form h3 {
|
||||
font-size: 0.95rem;
|
||||
color: #0f3460;
|
||||
color: var(--primary-color);
|
||||
margin: 1.25rem 0 0.75rem;
|
||||
padding-bottom: 0.5rem;
|
||||
border-bottom: 2px solid #f0f2f5;
|
||||
@@ -688,7 +695,7 @@ form h3:first-of-type {
|
||||
.form-group textarea:focus,
|
||||
.form-group select:focus {
|
||||
outline: none;
|
||||
border-color: #0f3460;
|
||||
border-color: var(--primary-color);
|
||||
box-shadow: 0 0 0 3px rgba(15,52,96,0.1);
|
||||
}
|
||||
|
||||
@@ -704,7 +711,7 @@ form h3:first-of-type {
|
||||
.checkbox-label input[type="checkbox"] {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
accent-color: #0f3460;
|
||||
accent-color: var(--primary-color);
|
||||
}
|
||||
|
||||
.form-actions {
|
||||
@@ -744,7 +751,7 @@ form h3:first-of-type {
|
||||
.liittyma-row-title {
|
||||
font-size: 0.8rem;
|
||||
font-weight: 600;
|
||||
color: #0f3460;
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
/* Detail view */
|
||||
@@ -762,7 +769,7 @@ form h3:first-of-type {
|
||||
|
||||
.detail-section h3 {
|
||||
font-size: 0.95rem;
|
||||
color: #0f3460;
|
||||
color: var(--primary-color);
|
||||
margin-bottom: 0.75rem;
|
||||
padding-bottom: 0.5rem;
|
||||
border-bottom: 2px solid #f0f2f5;
|
||||
@@ -794,7 +801,7 @@ form h3:first-of-type {
|
||||
}
|
||||
|
||||
.detail-value a {
|
||||
color: #0f3460;
|
||||
color: var(--primary-color);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
@@ -820,7 +827,7 @@ span.empty {
|
||||
.liittyma-num {
|
||||
font-size: 0.75rem;
|
||||
font-weight: 700;
|
||||
color: #0f3460;
|
||||
color: var(--primary-color);
|
||||
margin-bottom: 0.4rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.5px;
|
||||
@@ -830,7 +837,7 @@ span.empty {
|
||||
text-align: right;
|
||||
font-weight: 700;
|
||||
font-size: 0.95rem;
|
||||
color: #0f3460;
|
||||
color: var(--primary-color);
|
||||
margin-top: 0.5rem;
|
||||
padding-top: 0.5rem;
|
||||
border-top: 2px solid #e8ebf0;
|
||||
@@ -869,7 +876,7 @@ span.empty {
|
||||
.file-name {
|
||||
font-size: 0.9rem;
|
||||
font-weight: 500;
|
||||
color: #0f3460;
|
||||
color: var(--primary-color);
|
||||
text-decoration: none;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
@@ -995,12 +1002,12 @@ span.empty {
|
||||
}
|
||||
|
||||
.tab:hover {
|
||||
color: #0f3460;
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
.tab.active {
|
||||
color: #0f3460;
|
||||
border-bottom-color: #0f3460;
|
||||
color: var(--primary-color);
|
||||
border-bottom-color: var(--primary-color);
|
||||
}
|
||||
|
||||
.tab-content {
|
||||
@@ -1023,7 +1030,7 @@ span.empty {
|
||||
}
|
||||
|
||||
.role-admin {
|
||||
background: #0f3460;
|
||||
background: var(--primary-color);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
@@ -1257,7 +1264,7 @@ span.empty {
|
||||
|
||||
.ticket-reply-form textarea:focus {
|
||||
outline: none;
|
||||
border-color: #0f3460;
|
||||
border-color: var(--primary-color);
|
||||
box-shadow: 0 0 0 3px rgba(15, 52, 96, 0.1);
|
||||
}
|
||||
|
||||
@@ -1279,9 +1286,9 @@ span.empty {
|
||||
}
|
||||
|
||||
.btn-reply-tab.active {
|
||||
color: #0f3460;
|
||||
color: var(--primary-color);
|
||||
background: #fff;
|
||||
border-color: #0f3460;
|
||||
border-color: var(--primary-color);
|
||||
}
|
||||
|
||||
/* Ticket tags */
|
||||
@@ -1339,7 +1346,7 @@ span.empty {
|
||||
border-radius: 6px;
|
||||
font-size: 0.82rem;
|
||||
font-weight: 600;
|
||||
color: #0f3460;
|
||||
color: var(--primary-color);
|
||||
background: #fff;
|
||||
cursor: pointer;
|
||||
transition: border-color 0.2s;
|
||||
@@ -1347,7 +1354,7 @@ span.empty {
|
||||
|
||||
.company-selector:hover,
|
||||
.company-selector:focus {
|
||||
border-color: #0f3460;
|
||||
border-color: var(--primary-color);
|
||||
outline: none;
|
||||
}
|
||||
|
||||
@@ -1357,7 +1364,7 @@ span.empty {
|
||||
}
|
||||
|
||||
.mailbox-item:hover {
|
||||
border-color: #0f3460 !important;
|
||||
border-color: var(--primary-color) !important;
|
||||
}
|
||||
|
||||
/* Company badge */
|
||||
|
||||
Reference in New Issue
Block a user