@charset "UTF-8";
/*
Theme Name: LEGALUS
Author: LEGALUS
Author URI: https://legalus.jp/
Version: 1.0
*/

/* +++++++++++++++++++++++++++++++++++++++++++++
HTML & Body Styles
+++++++++++++++++++++++++++++++++++++++++++++ */
html {
  font-size: var(--font-size-default);
  font-family: var(--font-family);
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--header-height) + var(--spacing-sm));
  background-color: var(--color-background);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
/* WordPress Admin Bar */
html:has(body.admin-bar) {
  scroll-padding-top: calc(var(--header-height) + var(--lu-admin-bar-height) + var(--spacing-sm));
}
/* Body */
body {
  font-size: var(--font-size-base);
  letter-spacing: var(--letter-spacing-normal);
  line-height: var(--line-height-base);
  color: var(--color-on-background);
  font-weight: 400;
  overflow-x: hidden;
}
body.shadow {
  overflow: hidden;
}

/* +++++++++++++++++++++++++++++++++++++++++++++
Shadow Styles
+++++++++++++++++++++++++++++++++++++++++++++ */
.site-shadow {
  position: fixed;
  inset: 0;
  z-index: var(--z-index-backdrop);
  background: var(--color-overlay);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--transition-base);
}
body.shadow .site-shadow {
  opacity: 1;
  pointer-events: auto;
}

/* +++++++++++++++++++++++++++++++++++++++++++++
Title Styles
+++++++++++++++++++++++++++++++++++++++++++++ */
h1 {
  font-size: clamp(1.875rem, 4vw, 3rem);
  line-height: var(--line-height-tight);
  letter-spacing: var(--letter-spacing-tight);
  font-weight: 700;
  color: var(--color-primary);
  margin-bottom: var(--spacing-md);
}
h2 {
  font-size: clamp(1.25rem, 3vw, 1.5rem);
  line-height: var(--line-height-tight);
  letter-spacing: var(--letter-spacing-normal);
  font-weight: 600;
  color: var(--color-primary-dark);
  margin-bottom: var(--spacing-sm-plus);
}
h2 .en {
  display: block;
  margin-top: var(--spacing-xs);
  color: var(--color-secondary);
  font-size: .75em;
  letter-spacing: var(--letter-spacing-wider);
}
h3 {
  font-size: clamp(1.125rem, 2vw, 1.325rem);
  line-height: var(--line-height-tight);
  letter-spacing: var(--letter-spacing-normal);
  font-weight: 600;
  color: var(--color-secondary);
  margin-bottom: var(--spacing-sm);
}
h4 {
  font-size: var(--font-size-xl);
  line-height: var(--line-height-tight);
  font-weight: 500;
  color: var(--color-primary-light);
  margin-bottom: 0.875rem;
}
h5 {
  font-size: var(--font-size-lg);
  line-height: var(--line-height-tight);
  font-weight: 500;
  color: var(--color-primary-light);
  margin-bottom: var(--spacing-compact);
}

/* +++++++++++++++++++++++++++++++++++++++++++++
Text Styles
+++++++++++++++++++++++++++++++++++++++++++++ */
p {
  line-height: var(--line-height-base);
}
p small {
  font-size: .875em;
}
p a {
  color: var(--color-secondary);
  text-decoration: underline;
  transition: var(--transition-color);
}
p + p {
  margin-top: var(--spacing-sm);
}
p + h2,
p + h3,
p + h4,
p + h5 {
  margin-top: var(--spacing-lg);
}
a {
  letter-spacing: var(--letter-spacing-wide);
}
/* Description Texts Style */
.desc {
  margin: var(--spacing-lg) auto 0;
}
.lead-desc {
  margin-top: var(--spacing-sm);
}

/* +++++++++++++++++++++++++++++++++++++++++++++
Text Align Styles
+++++++++++++++++++++++++++++++++++++++++++++ */
.t-align-center {
  text-align: center;
}
.t-align-left {
  text-align: left;
}
.t-align-right {
  text-align: right;
}
.t-align-justify {
  text-align: justify;
}

/* +++++++++++++++++++++++++++++++++++++++++++++
Images Default Styles
+++++++++++++++++++++++++++++++++++++++++++++ */
.images {
  margin-top: var(--spacing-sm);
}
.images img {
  width: 100%;
  vertical-align: bottom;
}

/* +++++++++++++++++++++++++++++++++++++++++++++
Iframe Default Styles
+++++++++++++++++++++++++++++++++++++++++++++ */
iframe {
  vertical-align: bottom;
}

/* +++++++++++++++++++++++++++++++++++++++++++++
Margin Styles
+++++++++++++++++++++++++++++++++++++++++++++ */
.margin-top-0 {
  margin-top: 0;
}
.margin-bottom-0 {
  margin-bottom: 0;
}
.margin-top-sm {
  margin-top: var(--spacing-sm);
}
.margin-bottom-sm {
  margin-bottom: var(--spacing-sm);
}
.margin-top-md {
  margin-top: var(--spacing-md);
}
.margin-bottom-md {
  margin-bottom: var(--spacing-md);
}
.margin-top-lg {
  margin-top: var(--spacing-lg);
}
.margin-bottom-lg {
  margin-bottom: var(--spacing-lg);
}
.margin-top-xl {
  margin-top: var(--spacing-xl);
}
.margin-bottom-xl {
  margin-bottom: var(--spacing-xl);
}
.margin-top-2xl {
  margin-top: var(--spacing-2xl);
}
.margin-bottom-2xl {
  margin-bottom: var(--spacing-2xl);
}

/* +++++++++++++++++++++++++++++++++++++++++++++
Scroll Animation Styles
+++++++++++++++++++++++++++++++++++++++++++++ */
.anim {
  opacity: 1;
  will-change: transform, opacity;
}
html.js .anim {
  opacity: 0;
}
.anim.anim-stagger {
  opacity: 1;
}
.anim.anim-stagger > * {
  opacity: 1;
  will-change: transform, opacity;
}
html.js .anim.anim-stagger > * {
  opacity: 0;
}

/* +++++++++++++++++++++++++++++++++++++++++++++
Page Top Button Styles
+++++++++++++++++++++++++++++++++++++++++++++ */
.page-top {
  display: block;
  width: 0;
  height: 0;
  overflow: hidden;
}

/* +++++++++++++++++++++++++++++++++++++++++++++
Skip Link Styles
+++++++++++++++++++++++++++++++++++++++++++++ */
.skip-link {
  position: absolute;
  top: -100%;
  left: var(--spacing-sm);
  z-index: var(--z-index-skip);
  padding: var(--spacing-compact) var(--spacing-sm);
  background-color: var(--color-primary);
  color: var(--color-white);
  font-weight: 600;
  text-decoration: none;
  border-radius: var(--round-medium);
}
.skip-link:focus {
  top: calc(var(--lu-admin-bar-height) + var(--spacing-sm));
  outline: var(--border-width-default) solid var(--color-secondary);
  outline-offset: var(--focus-outline-offset);
}

/* +++++++++++++++++++++++++++++++++++++++++++++
Reduced Motion Styles
+++++++++++++++++++++++++++++++++++++++++++++ */
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
}