CasdoorMarketplace
Submit

Brutal · Sign-in theme

Brutal

Neo-brutalism: thick black outlines, hard offset shadows and a loud accent on a dotted page; the button presses in when you hover it. Pick a bright accent, the text on it stays black. CSS only, so organization admins can install it.

Verified by CasdoorLightBoldPlayfulCSS only
Brutal sign-in page

What it sets

Themedefault
Border radius0px
Form positionCenter
Custom CSSYes
Custom CSS MobileYes

Everything is on the application's UI Customization tab in Casdoor, so you can keep adjusting it after applying the theme.

Apply it to an application

  1. Enter the application below, adjust the theme's settings, and copy the JSON.
  2. In the Casdoor console, open Applications, edit that application, click Import JSON at the top, paste the JSON and click OK.
  3. Click Save. The sign-in page uses the theme from the next visit.
{
  "name": "<application name>",
  "organization": "<organization>",
  "themeData": {
    "themeType": "default",
    "colorPrimary": "#000000",
    "borderRadius": 0,
    "isCompact": false,
    "isEnabled": true
  },
  "formOffset": 2,
  "formCss": "<style>\n.login-background {\n  color-scheme: light;\n  --background: 45 100% 96%;\n  --foreground: 0 0% 0%;\n  --card: 0 0% 100%;\n  --card-foreground: 0 0% 0%;\n  --popover: 0 0% 100%;\n  --popover-foreground: 0 0% 0%;\n  --muted: 45 60% 92%;\n  --muted-foreground: 0 0% 15%;\n  --accent: 45 60% 92%;\n  --accent-foreground: 0 0% 0%;\n  --border: 0 0% 0%;\n  --input: 0 0% 0%;\n  --ring: 0 0% 0%;\n  font-family: 'Space Grotesk', 'Archivo', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif;\n  background-color: #fff3d6;\n  background-image: radial-gradient(#000000 1.2px, transparent 1.3px);\n  background-size: 22px 22px;\n}\n.login-content > div {\n  max-width: 440px;\n}\n.login-panel {\n  border: 3px solid #000000;\n  border-radius: 0;\n  background: #ffffff;\n  box-shadow: 10px 10px 0 #000000;\n}\n.login-background > div:first-of-type button {\n  color: #000000;\n}\n.signin-methods > div {\n  height: auto;\n  padding: 0;\n  border: none;\n  background: transparent;\n  overflow: visible;\n}\n.signin-methods [role='tablist'] {\n  gap: 8px;\n  overflow: visible;\n}\n.signin-methods [role='tab'] {\n  flex: none !important;\n  padding: 4px 10px;\n  border: 2px solid #000000;\n  border-radius: 0;\n  background: #ffffff !important;\n  color: #000000;\n  font-weight: 700;\n  box-shadow: 2px 2px 0 #000000 !important;\n}\n.signin-methods [role='tab'][data-state='active'] {\n  background: #ffd23f !important;\n}\n.login-form label {\n  color: #000000;\n  font-size: 13px;\n  font-weight: 800;\n  letter-spacing: 0.04em;\n  text-transform: uppercase;\n}\n.login-form input:not([type='checkbox']):not([type='radio']) {\n  height: 46px;\n  border: 2.5px solid #000000;\n  border-radius: 0;\n  background: #ffffff;\n  color: #000000;\n  font-weight: 600;\n  box-shadow: 4px 4px 0 #000000;\n  transition: transform 0.08s, box-shadow 0.08s;\n}\n.login-form input:not([type='checkbox']):not([type='radio']):focus {\n  outline: none;\n  background: #ffffff;\n  box-shadow: 6px 6px 0 #ffd23f, 6px 6px 0 2.5px #000000;\n  transform: translate(-2px, -2px);\n}\n.login-form [role='checkbox'] {\n  width: 20px;\n  height: 20px;\n  border: 2.5px solid #000000;\n  border-radius: 0;\n  background: #ffffff;\n}\n.login-form [role='checkbox'][data-state='checked'] {\n  background: #ffd23f;\n  color: #000000;\n}\n.login-form a {\n  color: #000000;\n  font-weight: 800;\n  text-decoration: underline;\n  text-decoration-thickness: 3px;\n  text-decoration-color: #ffd23f;\n  text-underline-offset: 3px;\n}\n.login-form .login-button {\n  height: 52px;\n  border: 2.5px solid #000000;\n  border-radius: 0;\n  background: #ffd23f;\n  color: #000000;\n  font-size: 16px;\n  font-weight: 800;\n  letter-spacing: 0.04em;\n  text-transform: uppercase;\n  box-shadow: 5px 5px 0 #000000;\n  transition: transform 0.08s, box-shadow 0.08s;\n}\n.login-form .login-button:hover {\n  background: #ffd23f;\n  box-shadow: 2px 2px 0 #000000;\n  transform: translate(3px, 3px);\n}\n#footer {\n  color: #000000;\n  font-weight: 600;\n}\n.login-form .login-forget-password {\n  width: 100%;\n}\n</style>",
  "formCssMobile": "<style>\n.login-background {\n  color-scheme: light;\n  --background: 45 100% 96%;\n  --foreground: 0 0% 0%;\n  --card: 0 0% 100%;\n  --card-foreground: 0 0% 0%;\n  --popover: 0 0% 100%;\n  --popover-foreground: 0 0% 0%;\n  --muted: 45 60% 92%;\n  --muted-foreground: 0 0% 15%;\n  --accent: 45 60% 92%;\n  --accent-foreground: 0 0% 0%;\n  --border: 0 0% 0%;\n  --input: 0 0% 0%;\n  --ring: 0 0% 0%;\n  font-family: 'Space Grotesk', 'Archivo', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif;\n  background-color: #fff3d6;\n  background-image: radial-gradient(#000000 1.2px, transparent 1.3px);\n  background-size: 22px 22px;\n}\n.login-content {\n  padding-left: 14px;\n  padding-right: 22px;\n}\n.login-background .login-content .login-panel.login-panel-bleed,\n.login-panel {\n  padding-top: 24px;\n  padding-bottom: 4px;\n  border: 3px solid #000000;\n  border-radius: 0;\n  background: #ffffff;\n  box-shadow: 7px 7px 0 #000000;\n}\n.login-background > div:first-of-type button {\n  color: #000000;\n}\n.signin-methods > div {\n  height: auto;\n  padding: 0;\n  border: none;\n  background: transparent;\n  overflow: visible;\n}\n.signin-methods [role='tablist'] {\n  gap: 8px;\n  overflow: visible;\n}\n.signin-methods [role='tab'] {\n  flex: none !important;\n  padding: 4px 10px;\n  border: 2px solid #000000;\n  border-radius: 0;\n  background: #ffffff !important;\n  color: #000000;\n  font-weight: 700;\n  box-shadow: 2px 2px 0 #000000 !important;\n}\n.signin-methods [role='tab'][data-state='active'] {\n  background: #ffd23f !important;\n}\n.login-form label {\n  color: #000000;\n  font-size: 13px;\n  font-weight: 800;\n  letter-spacing: 0.04em;\n  text-transform: uppercase;\n}\n.login-form input:not([type='checkbox']):not([type='radio']) {\n  height: 46px;\n  border: 2.5px solid #000000;\n  border-radius: 0;\n  background: #ffffff;\n  color: #000000;\n  font-weight: 600;\n  box-shadow: 4px 4px 0 #000000;\n  transition: transform 0.08s, box-shadow 0.08s;\n}\n.login-form input:not([type='checkbox']):not([type='radio']):focus {\n  outline: none;\n  background: #ffffff;\n  box-shadow: 6px 6px 0 #ffd23f, 6px 6px 0 2.5px #000000;\n  transform: translate(-2px, -2px);\n}\n.login-form [role='checkbox'] {\n  width: 20px;\n  height: 20px;\n  border: 2.5px solid #000000;\n  border-radius: 0;\n  background: #ffffff;\n}\n.login-form [role='checkbox'][data-state='checked'] {\n  background: #ffd23f;\n  color: #000000;\n}\n.login-form a {\n  color: #000000;\n  font-weight: 800;\n  text-decoration: underline;\n  text-decoration-thickness: 3px;\n  text-decoration-color: #ffd23f;\n  text-underline-offset: 3px;\n}\n.login-form .login-button {\n  height: 52px;\n  border: 2.5px solid #000000;\n  border-radius: 0;\n  background: #ffd23f;\n  color: #000000;\n  font-size: 16px;\n  font-weight: 800;\n  letter-spacing: 0.04em;\n  text-transform: uppercase;\n  box-shadow: 5px 5px 0 #000000;\n  transition: transform 0.08s, box-shadow 0.08s;\n}\n.login-form .login-button:hover {\n  background: #ffd23f;\n  box-shadow: 2px 2px 0 #000000;\n  transform: translate(3px, 3px);\n}\n#footer {\n  color: #000000;\n  font-weight: 600;\n}\n.login-form .login-forget-password {\n  width: 100%;\n}\n</style>"
}