Files
drill-keycloak/keycloak/themes/drill-luxe/login/resources/css/drill-luxe.css

693 lines
14 KiB
CSS

:root {
--drill-bg: #070a0f;
--drill-panel: rgba(13, 18, 26, 0.88);
--drill-panel-strong: rgba(7, 10, 15, 0.94);
--drill-line: rgba(148, 163, 184, 0.22);
--drill-line-strong: rgba(215, 161, 95, 0.46);
--drill-accent: #c97a3d;
--drill-accent-soft: #d7a15f;
--drill-text: #f8fafc;
--drill-muted: #9aa8ba;
--drill-success: #34d399;
--drill-warning: #f59e0b;
--drill-danger: #ef4444;
--drill-radius: 10px;
--drill-shadow: 0 28px 80px rgba(0, 0, 0, 0.42);
}
* {
box-sizing: border-box;
}
body.drill-login {
min-height: 100vh;
min-height: 100dvh;
margin: 0;
color: var(--drill-text);
font-family:
Inter,
"Segoe UI",
-apple-system,
BlinkMacSystemFont,
system-ui,
sans-serif;
background:
radial-gradient(circle at 18% 18%, rgba(201, 122, 61, 0.16), transparent 28%),
radial-gradient(circle at 88% 76%, rgba(52, 211, 153, 0.08), transparent 24%),
linear-gradient(145deg, #05070b 0%, #080c12 44%, #111821 100%);
}
body.drill-login::before {
content: "";
position: fixed;
inset: 0;
pointer-events: none;
background-image:
linear-gradient(rgba(255, 255, 255, 0.025) 1px, transparent 1px),
linear-gradient(90deg, rgba(255, 255, 255, 0.025) 1px, transparent 1px);
background-size: 56px 56px;
mask-image: linear-gradient(110deg, rgba(0, 0, 0, 0.72), transparent 72%);
}
.drill-login__shell {
min-height: 100vh;
min-height: 100dvh;
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(380px, 460px);
gap: 18px;
padding: clamp(14px, 2.2vw, 26px);
}
.drill-login__brand,
.drill-login__panel {
position: relative;
overflow: hidden;
border: 1px solid var(--drill-line);
border-radius: var(--drill-radius);
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.055), transparent 34%),
repeating-linear-gradient(135deg, rgba(255, 255, 255, 0.024) 0 1px, transparent 1px 11px),
var(--drill-panel);
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.08),
inset 0 -1px 0 rgba(0, 0, 0, 0.48),
var(--drill-shadow);
}
.drill-login__brand::before,
.drill-login__panel::before {
content: "";
position: absolute;
inset: 0 auto 0 0;
width: 5px;
background: linear-gradient(180deg, var(--drill-accent-soft), rgba(52, 211, 153, 0.78), var(--drill-accent));
box-shadow: 0 0 18px rgba(215, 161, 95, 0.32);
}
.drill-login__brand {
display: flex;
flex-direction: column;
justify-content: space-between;
gap: clamp(18px, 2.5vh, 28px);
padding: clamp(24px, 4vw, 42px);
}
.drill-login__brand-grid {
position: absolute;
inset: 0;
pointer-events: none;
background:
linear-gradient(120deg, transparent 0%, rgba(255, 255, 255, 0.06) 28%, transparent 52%),
radial-gradient(circle at 78% 18%, rgba(215, 161, 95, 0.12), transparent 28%);
opacity: 0.8;
}
.drill-login__brand-top {
position: relative;
z-index: 1;
display: flex;
align-items: center;
justify-content: space-between;
gap: 14px;
}
.drill-login__brand-mark {
position: relative;
width: 62px;
height: 62px;
display: inline-flex;
align-items: center;
justify-content: center;
border: 1px solid rgba(215, 161, 95, 0.36);
border-radius: 8px;
color: #fff3dc;
background:
linear-gradient(145deg, rgba(201, 122, 61, 0.26), rgba(2, 6, 23, 0.48)),
rgba(2, 6, 23, 0.42);
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.1),
0 16px 34px rgba(0, 0, 0, 0.24);
}
.drill-login__brand-mark-core {
position: relative;
z-index: 2;
font-size: 1.8rem;
font-weight: 800;
letter-spacing: 0.08em;
}
.drill-login__brand-mark-bar {
position: absolute;
right: 11px;
top: 11px;
width: 6px;
height: 40px;
border-radius: 999px;
background: linear-gradient(180deg, #fff3dc, rgba(215, 161, 95, 0.3));
box-shadow: 0 0 16px rgba(215, 161, 95, 0.34);
}
.drill-login__status-pill {
display: inline-flex;
align-items: center;
gap: 8px;
min-height: 34px;
padding: 0 12px;
border: 1px solid rgba(52, 211, 153, 0.26);
border-radius: 999px;
color: #bbf7d0;
background: rgba(52, 211, 153, 0.09);
font-size: 0.72rem;
font-weight: 750;
letter-spacing: 0.12em;
text-transform: uppercase;
white-space: nowrap;
}
.drill-login__status-pill span {
width: 8px;
height: 8px;
border-radius: 999px;
background: var(--drill-success);
box-shadow: 0 0 14px var(--drill-success);
}
.drill-login__brand-copy {
position: relative;
z-index: 1;
max-width: 760px;
}
.drill-login__eyebrow {
display: inline-flex;
margin-bottom: 12px;
color: var(--drill-accent-soft);
font-size: 0.72rem;
font-weight: 800;
letter-spacing: 0.14em;
text-transform: uppercase;
}
.drill-login__brand h1,
.drill-login__panel h2 {
margin: 0;
color: var(--drill-text);
font-weight: 760;
letter-spacing: 0;
line-height: 1.06;
}
.drill-login__brand h1 {
max-width: 780px;
font-size: 5vh;
}
.drill-login__brand p,
.drill-login__panel p,
.drill-login__feature-grid p {
max-width: 720px;
margin: 16px 0 0;
color: #cbd5e1;
font-size: 1rem;
line-height: 1.6;
}
.drill-login__industrial-panel {
position: relative;
z-index: 1;
min-height: 224px;
display: grid;
grid-template-columns: minmax(260px, 0.9fr) minmax(260px, 0.7fr);
gap: 16px;
align-items: stretch;
}
.drill-login__signal-flow,
.drill-login__signal-list {
position: relative;
overflow: hidden;
border: 1px solid rgba(148, 163, 184, 0.18);
border-radius: 8px;
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.045), transparent 36%),
rgba(2, 6, 23, 0.32);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06);
}
.drill-login__signal-flow {
min-height: 224px;
display: grid;
align-items: stretch;
}
.drill-login__signal-flow::before {
content: "";
position: absolute;
inset: 0;
pointer-events: none;
background:
radial-gradient(circle at 18% 24%, rgba(52, 211, 153, 0.12), transparent 28%),
linear-gradient(90deg, rgba(215, 161, 95, 0.08), transparent 38%, rgba(52, 211, 153, 0.08));
}
.drill-login__signal-flow svg {
position: relative;
z-index: 1;
width: 100%;
height: 100%;
min-height: 224px;
padding: 16px;
}
.drill-login__signal-path {
fill: none;
stroke-linecap: round;
stroke-linejoin: round;
}
.drill-login__signal-path--base {
stroke: rgba(148, 163, 184, 0.24);
stroke-width: 2;
}
.drill-login__signal-path--pulse {
stroke: url("#signalLine");
stroke-width: 3;
stroke-dasharray: 42 280;
animation: drillSignalFlow 3.2s linear infinite;
filter: drop-shadow(0 0 8px rgba(52, 211, 153, 0.42));
}
.drill-login__signal-path--one {
animation-delay: 0s;
}
.drill-login__signal-path--two {
animation-delay: -1s;
}
.drill-login__signal-path--three {
animation-delay: -2s;
}
.drill-login__signal-nodes circle {
fill: #0b1220;
stroke: rgba(215, 161, 95, 0.68);
stroke-width: 2;
filter: drop-shadow(0 0 8px rgba(215, 161, 95, 0.22));
animation: drillSignalNodePulse 2.8s ease-in-out infinite;
}
.drill-login__signal-nodes circle:nth-child(3n) {
stroke: rgba(52, 211, 153, 0.78);
animation-delay: -1.4s;
}
.drill-login__signal-flow-label {
position: absolute;
left: 14px;
right: 14px;
bottom: 12px;
z-index: 2;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding-top: 10px;
border-top: 1px solid rgba(148, 163, 184, 0.12);
}
.drill-login__signal-flow-label strong {
color: #f8fafc;
font-size: 0.86rem;
}
.drill-login__signal-flow-label span {
min-width: 0;
overflow: hidden;
color: var(--drill-muted);
font-size: 0.74rem;
text-align: right;
text-overflow: ellipsis;
white-space: nowrap;
}
.drill-login__signal-list {
display: grid;
gap: 8px;
padding: 12px;
}
.drill-login__signal-list div {
min-width: 0;
display: grid;
grid-template-columns: auto minmax(0, 1fr);
grid-template-rows: auto auto;
column-gap: 10px;
align-content: center;
padding: 12px;
border: 1px solid rgba(148, 163, 184, 0.14);
border-radius: 7px;
background: rgba(15, 23, 42, 0.44);
}
.drill-login__signal {
grid-row: 1 / 3;
width: 10px;
height: 10px;
margin-top: 4px;
border-radius: 999px;
background: currentColor;
box-shadow: 0 0 14px currentColor;
}
.drill-login__signal--ok {
color: var(--drill-success);
}
.drill-login__signal--warn {
color: var(--drill-warning);
}
.drill-login__signal-list strong {
min-width: 0;
overflow: hidden;
color: var(--drill-text);
font-size: 0.9rem;
text-overflow: ellipsis;
white-space: nowrap;
}
.drill-login__signal-list small {
min-width: 0;
overflow: hidden;
color: var(--drill-muted);
font-size: 0.76rem;
text-overflow: ellipsis;
white-space: nowrap;
}
.drill-login__feature-grid {
position: relative;
z-index: 1;
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 10px;
}
.drill-login__feature-grid article {
min-height: 86px;
padding: 14px;
border: 1px solid rgba(148, 163, 184, 0.16);
border-radius: 8px;
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.04), transparent 36%),
rgba(2, 6, 23, 0.28);
}
.drill-login__feature-grid span {
display: block;
margin-bottom: 9px;
color: var(--drill-accent-soft);
font-size: 0.72rem;
font-weight: 800;
}
.drill-login__feature-grid strong {
display: block;
color: #e5e7eb;
font-size: 0.9rem;
line-height: 1.35;
}
.drill-login__panel {
display: flex;
flex-direction: column;
justify-content: center;
padding: clamp(24px, 3vw, 34px);
}
.drill-login__panel-glow {
display: none;
}
.drill-login__panel-head {
margin-bottom: 22px;
}
.drill-login__panel h2 {
font-size: clamp(1.8rem, 3vw, 2.35rem);
}
.drill-login__panel p {
margin-top: 10px;
font-size: 0.94rem;
}
.drill-login__alert {
margin-bottom: 14px;
padding: 12px 13px;
border: 1px solid rgba(148, 163, 184, 0.18);
border-radius: 8px;
color: var(--drill-text);
background: rgba(15, 23, 42, 0.58);
font-size: 0.9rem;
}
.drill-login__alert--error {
border-color: rgba(239, 68, 68, 0.42);
background: rgba(127, 29, 29, 0.28);
}
.drill-login__alert--warning {
border-color: rgba(245, 158, 11, 0.42);
background: rgba(120, 53, 15, 0.24);
}
.drill-login__alert--success,
.drill-login__alert--info {
border-color: rgba(52, 211, 153, 0.34);
background: rgba(6, 78, 59, 0.22);
}
.drill-login__form {
display: grid;
gap: 14px;
}
.drill-login__field {
display: grid;
gap: 7px;
}
.drill-login__field-row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
}
.drill-login__field label,
.drill-login__remember span,
.drill-login__field-row a {
color: #dbe4ef;
font-size: 0.86rem;
font-weight: 650;
}
.drill-login__field-row a,
.drill-login__footer a {
color: var(--drill-accent-soft);
text-decoration: none;
}
.drill-login__field-row a:hover,
.drill-login__footer a:hover {
color: #f8d9ad;
}
.drill-login__field input {
width: 100%;
min-height: 46px;
padding: 0 13px;
border: 1px solid rgba(148, 163, 184, 0.22);
border-radius: 8px;
outline: 0;
color: var(--drill-text);
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.04), transparent 40%),
rgba(2, 6, 23, 0.46);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05);
font: 500 0.95rem/1.25 Inter, "Segoe UI", system-ui, sans-serif;
}
.drill-login__field input::placeholder {
color: #6f7f94;
}
.drill-login__field input:focus {
border-color: var(--drill-line-strong);
box-shadow:
0 0 0 3px rgba(201, 122, 61, 0.14),
inset 0 1px 0 rgba(255, 255, 255, 0.07);
}
.drill-login__remember {
display: inline-flex;
align-items: center;
gap: 9px;
}
.drill-login__remember input {
accent-color: var(--drill-accent-soft);
}
.drill-login__submit {
min-height: 48px;
margin-top: 4px;
border: 1px solid rgba(255, 255, 255, 0.16);
border-radius: 8px;
color: #1a1209;
background: linear-gradient(135deg, #c97a3d 0%, #d7a15f 58%, #f3d8aa 100%);
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.34),
0 18px 36px rgba(201, 122, 61, 0.24);
cursor: pointer;
font: 800 0.95rem/1.2 Inter, "Segoe UI", system-ui, sans-serif;
letter-spacing: 0.02em;
}
.drill-login__submit:hover {
filter: saturate(1.05);
transform: translateY(-1px);
}
.drill-login__submit-link {
display: inline-flex;
align-items: center;
justify-content: center;
text-decoration: none;
}
.drill-login__footer {
display: flex;
justify-content: space-between;
gap: 12px;
margin-top: 18px;
padding-top: 14px;
border-top: 1px solid rgba(148, 163, 184, 0.14);
color: var(--drill-muted);
font-size: 0.78rem;
}
@keyframes drillSignalFlow {
from {
stroke-dashoffset: 320;
}
to {
stroke-dashoffset: 0;
}
}
@keyframes drillSignalNodePulse {
0%,
100% {
opacity: 0.72;
}
50% {
opacity: 1;
}
}
/* @media (max-width: 1120px) {
.drill-login__shell {
grid-template-columns: 1fr;
}
.drill-login__brand {
min-height: 520px;
}
} */
/* @media (max-width: 760px) {
.drill-login__shell {
padding: 12px;
}
.drill-login__brand,
.drill-login__panel {
padding: 20px;
}
.drill-login__brand-top,
.drill-login__field-row,
.drill-login__footer {
align-items: flex-start;
flex-direction: column;
}
.drill-login__brand h1 {
font-size: clamp(1.55rem, 8vw, 2.25rem);
}
.drill-login__industrial-panel,
.drill-login__feature-grid {
grid-template-columns: 1fr;
}
.drill-login__status-pill {
white-space: normal;
}
} */
/* @media (max-height: 820px) and (min-width: 1121px) {
.drill-login__shell {
padding: 12px;
gap: 12px;
}
.drill-login__brand,
.drill-login__panel {
padding: 20px;
}
.drill-login__brand h1 {
font-size: clamp(1.7rem, 2.8vw, 2.65rem);
}
.drill-login__brand p {
font-size: 0.9rem;
line-height: 1.45;
}
.drill-login__industrial-panel {
min-height: 180px;
}
.drill-login__signal-flow,
.drill-login__signal-flow svg {
min-height: 180px;
}
.drill-login__feature-grid article {
min-height: 72px;
padding: 11px;
}
.drill-login__feature-grid strong {
font-size: 0.82rem;
}
} */
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation: none !important;
transition: none !important;
}
}