@charset "UTF-8";
@property --root-font-size {
  syntax: "<length>";
  inherits: false;
  initial-value: 16px;
}
@font-face {
  font-family: "Local Noto Sans JP";
  src: local("Noto Sans JP");
}
:root {
  --to-rem: calc(tan(atan2(1px, var(--root-font-size))) * 1rem);
  --font-family-sans: "Noto Sans JP", -apple-system, blinkmacsystemfont, "Segoe UI", "Hiragino Sans", "Yu Gothic UI", sans-serif;
  --font-family-en: "Inter", "Noto Sans JP", -apple-system, sans-serif;
  --font-family-mono: "JetBrains Mono", "SFMono-Regular", menlo, monaco, consolas, monospace;
  --base-font-family: "Local Noto Sans JP", "Noto Sans JP", sans-serif;
  --fs-xs: 0.75rem;
  --fs-sm: 0.875rem;
  --fs-base: 1rem;
  --fs-lg: 1.125rem;
  --fs-xl: 1.333rem;
  --fs-2xl: 1.777rem;
  --fs-3xl: 2.369rem;
  --fs-4xl: 3.157rem;
  --fw-regular: 400;
  --fw-medium: 500;
  --fw-bold: 700;
  --lh-tight: 1.3;
  --lh-base: 1.75;
  --lh-relax: 1.85;
  --ls-tight: -0.01em;
  --ls-base: 0;
  --ls-wide: 0.04em;
  --space-0: 0;
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-16: 4rem;
  --space-20: 5rem;
  --space-24: 6rem;
  --space-28: 7rem;
  --container-narrow: 800px;
  --container-base: 1100px;
  --container-wide: 1200px;
  --container-max: 1280px;
  --container-padding-pc: 2rem;
  --container-padding-sp: 1rem;
  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 12px;
  --radius-xl: 16px;
  --radius-pill: 999px;
  --border-width-thin: 1px;
  --border-width-base: 2px;
  --shadow-none: none;
  --shadow-xs: 0 1px 2px rgb(0 0 0 / 4%);
  --shadow-sm: 0 2px 8px rgb(15 40 73 / 6%);
  --shadow-md: 0 4px 16px rgb(15 40 73 / 8%);
  --shadow-lg: 0 8px 24px rgb(15 40 73 / 10%);
  --transition-zero: 0 ease-out;
  --transition-fast: 150ms ease-out;
  --transition-base: 200ms ease-out;
  --transition-slow: 300ms ease-out;
  --z-base: 0;
  --z-raised: 10;
  --z-sticky: 500;
  --z-header: 800;
  --z-modal-backdrop: 900;
  --z-modal: 1000;
  --fab-size: 56px;
  --fab-offset: 20px;
  --fab-shadow: 0 4px 12px rgb(0 0 0 / 40%);
  --fab-shadow-hover: 0 6px 16px rgb(0 0 0 / 50%);
  --expand-transition-bg: 0.5s cubic-bezier(0.4, 0, 0.2, 1);
  --expand-transition-nav: 0.4s ease;
  --expand-item-delay: 0.08s;
  --expand-close-bg: 0.22s cubic-bezier(0.4, 0, 0.2, 1);
  --expand-close-nav: 0.22s ease;
  --color-nav-overlay: rgb(3 5 10 / 90%);
  --color-nav-text: #fff;
  --header-height: 64px;
  --icon-size-base: 20px;
  --touch-target-min: 44px;
  --focus-outline-width: 2px;
  --focus-outline-offset: 2px;
  --font-heading: var(--font-family-en);
  --font-body: var(--font-family-sans);
  --color-fixed-white: #fff;
  --color-accent-fixed: #2ba89c;
  --color-accent-fixed-hover: #239084;
  --toggle-track-w: 64px;
  --toggle-track-h: 32px;
  --toggle-thumb-size: 22px;
  --toggle-thumb-offset: 3px;
  --toggle-icon-size: 16px;
  --toggle-pad-inline: 6px;
  --link-arrow-shift: 3px;
  --link-arrow-gap: var(--space-1);
  --tool-section-gap: var(--space-12);
  --tool-panel-padding: var(--space-6);
  --tool-panel-radius: var(--radius-lg);
  --dropzone-border: var(--border-width-base) dashed var(--color-border-strong);
  --dropzone-border-active: var(--border-width-base) dashed var(--color-accent);
  --dropzone-bg: var(--color-bg-alt);
  --dropzone-bg-active: var(--color-accent-bg);
  --field-bg: var(--color-bg-base);
  --field-border: var(--border-width-thin) solid var(--color-border);
  --field-border-focus: var(--border-width-thin) solid var(--color-accent);
  --field-radius: var(--radius-sm);
  --field-min-size: var(--fs-base);
  --bg-cta-image: image-set(url("../../images/cta-bg.webp") type("image/webp"), url("../../images/cta-bg.png") type("image/png"));
  --maker-card-bg: var(--color-bg-alt);
  --maker-card-radius: var(--radius-lg);
  --maker-card-padding: var(--space-8);
  --maker-avatar-image: url("../../images/profile.webp");
  --maker-avatar-size: 160px;
  --maker-avatar-size-pc: 200px;
  --footer-bg: #0a0e14;
  --footer-text: #e6edf6;
  --footer-logo-accent: #5dd9cb;
  --footer-copyright-color: rgb(255 255 255 / 65%);
  --footer-divider-color: rgb(255 255 255 / 15%);
  --footer-link-opacity: 0.85;
  --footer-pad-top: var(--space-12);
  --footer-inner-gap: var(--space-8);
  --footer-inner-pad-bottom: var(--space-8);
  --footer-bottom-pad: var(--space-5);
}
@media screen and (width >= 768px) {
  :root {
    --header-height: 80px;
  }
}

:root[data-theme=b-tech-cool],
:root:not([data-theme]) {
  --color-primary: #1a2b3c;
  --color-primary-hover: #2a3d52;
  --color-primary-lighten: #3d5066;
  --color-secondary: #4a5868;
  --color-accent: #2ba89c;
  --color-accent-hover: #239084;
  --color-accent-bg: rgb(43 168 156 / 8%);
  --color-accent-strong: #5b7fb8;
  --color-bg-base: #fff;
  --color-bg-alt: #f4f6f8;
  --color-bg-section: #f4f6f8;
  --color-bg-elevated: #fff;
  --color-bg-code: #f0f3f6;
  --color-border: #dde2e7;
  --color-border-strong: #bfc6ce;
  --color-text-base: #0f1620;
  --color-text-muted: #586674;
  --color-text-inverse: #fff;
  --color-text-link: #5b7fb8;
  --color-text-link-hover: #4a6fa8;
  --color-success: #2a9d6e;
  --color-warning: #d4923a;
  --color-warning-bg: rgb(212 146 58 / 12%);
  --color-error: #c4444a;
  --color-error-bg: rgb(196 68 74 / 12%);
  --color-info: #5b7fb8;
  --color-focus-outline: #2ba89c;
  --section-gap-pc: var(--space-28);
  --section-gap-sp: var(--space-16);
  --radius-card: var(--radius-md);
  --lh-body: var(--lh-base);
  --color-cta-overlay-light: rgb(15 22 32 / 70%);
}

:root[data-theme=b-tech-cool][data-color-scheme=dark],
:root:not([data-theme])[data-color-scheme=dark] {
  --color-primary: #4a6fa8;
  --color-primary-hover: #5b82bc;
  --color-primary-lighten: #6f95c8;
  --color-secondary: #8b97a3;
  --color-accent: #5dd9cb;
  --color-accent-hover: #7ae3d7;
  --color-accent-bg: rgb(93 217 203 / 12%);
  --color-accent-strong: #7ab4f0;
  --color-bg-base: #03050a;
  --color-bg-alt: #0a0e14;
  --color-bg-section: #0a0e14;
  --color-bg-elevated: #131922;
  --color-bg-code: #0a0e14;
  --color-border: #232e40;
  --color-border-strong: #3d4d60;
  --color-text-base: #e6edf6;
  --color-text-muted: #a8b3be;
  --color-text-inverse: #03050a;
  --color-text-link: #7ab4f0;
  --color-text-link-hover: #92c4f5;
  --color-success: #5dd9a8;
  --color-warning: #f0b065;
  --color-warning-bg: rgb(240 176 101 / 14%);
  --color-error: #e07480;
  --color-error-bg: rgb(224 116 128 / 16%);
  --color-info: #7ab4f0;
  --color-focus-outline: #5dd9cb;
  --color-cta-overlay-dark: rgb(3 5 10 / 70%);
  --shadow-xs: none;
  --shadow-sm: 0 2px 8px rgb(0 0 0 / 40%);
  --shadow-md: 0 4px 16px rgb(0 0 0 / 50%);
  --shadow-lg: 0 8px 24px rgb(0 0 0 / 60%);
}

@media (prefers-color-scheme: dark) {
  :root[data-theme=b-tech-cool]:not([data-color-scheme=light], [data-color-scheme=dark]),
  :root:not([data-theme], [data-color-scheme=light], [data-color-scheme=dark]) {
    --color-primary: #4a6fa8;
    --color-accent: #5dd9cb;
    --color-accent-hover: #7ae3d7;
    --color-accent-bg: rgb(93 217 203 / 12%);
    --color-bg-base: #03050a;
    --color-bg-alt: #0a0e14;
    --color-bg-section: #0a0e14;
    --color-bg-elevated: #131922;
    --color-bg-code: #0a0e14;
    --color-border: #232e40;
    --color-border-strong: #3d4d60;
    --color-text-base: #e6edf6;
    --color-text-muted: #a8b3be;
    --color-text-inverse: #03050a;
    --color-text-link: #7ab4f0;
    --color-text-link-hover: #92c4f5;
    --color-success: #5dd9a8;
    --color-warning: #f0b065;
    --color-error: #e07480;
    --color-info: #7ab4f0;
    --color-focus-outline: #5dd9cb;
    --color-cta-overlay-dark: rgb(3 5 10 / 70%);
    --shadow-xs: none;
    --shadow-sm: 0 2px 8px rgb(0 0 0 / 40%);
    --shadow-md: 0 4px 16px rgb(0 0 0 / 50%);
    --shadow-lg: 0 8px 24px rgb(0 0 0 / 60%);
  }
}
:root {
  color-scheme: light;
}

:root[data-color-scheme=dark] {
  color-scheme: dark;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-color-scheme=light]) {
    color-scheme: dark;
  }
}
@media (prefers-reduced-motion: reduce) {
  :root {
    --transition-fast: 0ms;
    --transition-base: 0ms;
    --transition-slow: 0ms;
  }
}
body {
  font-family: var(--font-body);
  font-weight: var(--fw-regular);
  line-height: var(--lh-base);
  color: var(--color-text-base);
  background-color: var(--color-bg-base);
  transition: background-color var(--transition-base), color var(--transition-base);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

img,
svg {
  display: block;
  max-inline-size: 100%;
  block-size: auto;
}

a {
  color: inherit;
}

button {
  font: inherit;
  color: inherit;
  cursor: pointer;
}

:focus-visible {
  outline: var(--focus-outline-width) solid var(--color-focus-outline);
  outline-offset: var(--focus-outline-offset);
}

html {
  box-sizing: border-box;
  /* Prevent adjustments of font size after orientation changes in iOS */
  word-break: normal;
  tab-size: 4;
  text-size-adjust: 100%;
}

*,
::before,
::after {
  /* Set `background-repeat: no-repeat` to all elements and pseudo elements */
  box-sizing: inherit;
  box-sizing: border-box;
  background-repeat: no-repeat;
}

::before,
::after {
  text-decoration: inherit;
  /* Inherit text-decoration and vertical align to ::before and ::after pseudo elements */
  vertical-align: inherit;
}

* {
  padding: 0;
  /* Reset `padding` and `margin` of all elements */
  margin: 0;
}

/* # =================================================================
     # General elements
     # ================================================================= */
hr {
  /* Show the overflow in Edge and IE */
  height: 0;
  overflow: visible;
  /* Add the correct box sizing in Firefox */
  color: inherit;
  /* Correct border color in Firefox. */
}

details,
main {
  display: block;
  /* Render the `main` element consistently in IE. */
}

summary {
  display: list-item;
  /* Add the correct display in all browsers */
}

small {
  font-size: 80%;
  /* Set font-size to 80% in `small` elements */
}

[hidden] {
  display: none;
  /* Add the correct display in IE */
}

abbr[title] {
  /* Remove the bottom border in Chrome 57 */
  /* Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari */
  text-decoration: underline;
  text-decoration: underline dotted;
  border-bottom: none;
}

a {
  background-color: transparent;
  /* Remove the gray background on active links in IE 10 */
}

a:active,
a:hover {
  outline-width: 0;
  /* Remove the outline when hovering in all browsers */
}

code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  /* Specify the font family of code elements */
}

pre {
  font-size: 1em;
  /* Correct the odd `em` font sizing in all browsers */
}

b,
strong {
  font-weight: bolder;
  /* Add the correct font weight in Chrome, Edge, and Safari */
}

/* https://gist.github.com/unruthless/413930 */
sub,
sup {
  position: relative;
  font-size: 75%;
  line-height: 0;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

table {
  /* Correct border color in all Chrome, Edge, and Safari. */
  text-indent: 0;
  border-color: inherit;
  /* Remove text indentation in Chrome, Edge, and Safari */
}

iframe {
  border-style: none;
}

/* # =================================================================
     # Forms
     # ================================================================= */
input {
  border-radius: 0;
}

[type=number]::-webkit-inner-spin-button,
[type=number]::-webkit-outer-spin-button {
  height: auto;
  /* Correct the cursor style of increment and decrement buttons in Chrome */
}

[type=search] {
  appearance: textfield;
  appearance: none;
  /* Correct the odd appearance in Chrome and Safari */
  outline-offset: -2px;
  /* Correct the outline style in Safari */
}

[type=search]::-webkit-search-decoration {
  appearance: none;
  /* Remove the inner padding in Chrome and Safari on macOS */
}

textarea {
  overflow: auto;
  resize: vertical;
}

button,
input,
optgroup,
select,
textarea {
  font: inherit;
  /* Specify font inheritance of form elements */
}

optgroup {
  font-weight: bold;
  /* Restore the font weight unset by the previous rule */
}

button {
  overflow: visible;
  /* Address `overflow` set to `hidden` in IE 8/9/10/11 */
}

button,
select {
  text-transform: none;
  /* Firefox 40+, Internet Explorer 11- */
}

/* Apply cursor pointer to button elements */
button,
[type=button],
[type=reset],
[type=submit],
[role=button] {
  cursor: pointer;
}

/* Remove inner padding and border in Firefox 4+ */
button::-moz-focus-inner,
[type=button]::-moz-focus-inner,
[type=reset]::-moz-focus-inner,
[type=submit]::-moz-focus-inner {
  padding: 0;
  border-style: none;
}

/* Replace focus style removed in the border reset above */
button:-moz-focusring,
[type=button]::-moz-focus-inner,
[type=reset]::-moz-focus-inner,
[type=submit]::-moz-focus-inner {
  outline: 1px dotted ButtonText;
}

button,
html [type=button],
[type=reset],
[type=submit] {
  appearance: button;
  /* Correct the inability to style clickable types in iOS */
}

button,
input,
select,
textarea {
  appearance: none;
  background-color: transparent;
  border-style: none;
}

a:focus,
button:focus,
input:focus,
select:focus,
textarea:focus {
  outline-width: 0;
}

/* Style select like a standard input */
select {
  appearance: none;
}

select::-ms-expand {
  display: none;
  /* Internet Explorer 11+ */
}

select::-ms-value {
  color: currentcolor;
  /* Internet Explorer 11+ */
}

legend {
  /* Correct the color inheritance from `fieldset` elements in IE */
  display: table;
  /* Correct the text wrapping in Edge and IE */
  /* Correct the text wrapping in Edge and IE */
  max-width: 100%;
  /* Correct `color` not being inherited in IE 8/9/10/11 */
  color: inherit;
  /* Correct the text wrapping in Edge and IE */
  white-space: normal;
  border: 0;
  /* Correct the text wrapping in Edge 18- and IE */
}

::-webkit-file-upload-button {
  font: inherit;
  color: inherit;
  /* Correct the inability to style clickable types in iOS and Safari */
  appearance: button;
  /* Change font properties to `inherit` in Chrome and Safari */
}

/* Replace pointer cursor in disabled elements */
[disabled] {
  cursor: default;
}

/* # =================================================================
     # Specify media element style
     # ================================================================= */
img {
  border-style: none;
  /* Remove border when inside `a` element in IE 8/9/10 */
}

/* Add the correct vertical alignment in Chrome, Firefox, and Opera */
progress {
  vertical-align: baseline;
}

/* # =================================================================
     # Accessibility
     # ================================================================= */
/* Specify the progress cursor of updating elements */
[aria-busy=true] {
  cursor: progress;
}

/* Specify the pointer cursor of trigger elements */
[aria-controls] {
  cursor: pointer;
}

/* Specify the unstyled cursor of disabled, not-editable, or otherwise inoperable elements */
[aria-disabled=true] {
  cursor: default;
}

/* Remove default margin */
body,
h1,
h2,
h3,
h4,
p,
ul,
ol,
figure,
blockquote,
dl,
dd {
  margin: 0;
}

/* Remove default padding */
ul,
ol {
  padding: 0;
  list-style: "";
}

a {
  color: inherit;
  text-decoration: none;
  transition: opacity 0.3s;
}

.l-container {
  inline-size: 100%;
  max-inline-size: var(--container-base);
  padding-inline: var(--container-padding-sp);
  margin-inline: auto;
}

.l-container--wide {
  max-inline-size: var(--container-wide);
}

.l-container--max {
  max-inline-size: var(--container-max);
}

@media screen and (min-width: 768px) {
  .l-container {
    padding-inline: var(--container-padding-pc);
  }
}
.c-badge {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  padding-block: var(--space-1);
  padding-inline: var(--space-3);
  font-size: var(--fs-xs);
  font-weight: var(--fw-medium);
  color: var(--color-text-muted);
  letter-spacing: var(--ls-wide);
  background-color: var(--color-bg-alt);
  border: var(--border-width-thin) solid var(--color-border);
  border-radius: var(--radius-pill);
}

.c-badge--accent {
  color: var(--color-accent);
  background-color: var(--color-accent-bg);
  border-color: var(--color-accent);
}

.c-breadcrumb {
  padding-block: var(--space-4);
  font-size: var(--fs-sm);
  color: var(--color-text-muted);
}

.c-breadcrumb__list {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  align-items: center;
}

.c-breadcrumb__list a {
  color: var(--color-text-muted);
  text-decoration: none;
  transition: color var(--transition-base);
}
@media (any-hover: hover) and (pointer: fine) {
  .c-breadcrumb__list a:hover {
    color: var(--color-accent);
  }
}

.c-breadcrumb__sep {
  color: var(--color-border-strong);
}

.c-breadcrumb [aria-current=page] {
  color: var(--color-text-muted);
}

.c-btn--primary {
  display: inline-flex;
  align-items: center;
  min-block-size: var(--touch-target-min);
  padding-block: var(--space-3);
  padding-inline: var(--space-6);
  font-size: var(--fs-base);
  font-weight: var(--fw-bold);
  color: var(--color-fixed-white);
  text-decoration: none;
  background-color: var(--color-accent-fixed);
  border-radius: var(--radius-card);
  transition: background-color var(--transition-base);
}
@media (any-hover: hover) and (pointer: fine) {
  .c-btn--primary:hover {
    background-color: var(--color-accent-fixed-hover);
  }
}

.c-btn--large {
  min-block-size: calc(56 * var(--to-rem));
  padding-block: var(--space-4);
  padding-inline: var(--space-8);
  font-size: var(--fs-lg);
}

.c-btn--block {
  display: flex;
  justify-content: center;
  inline-size: 100%;
}

.c-btn--outline {
  display: inline-flex;
  align-items: center;
  min-block-size: var(--touch-target-min);
  padding-block: var(--space-3);
  padding-inline: var(--space-6);
  font-size: var(--fs-base);
  font-weight: var(--fw-bold);
  color: var(--color-primary);
  text-decoration: none;
  background-color: transparent;
  border: var(--border-width-thin) solid var(--color-primary);
  border-radius: var(--radius-card);
  transition: color var(--transition-base), background-color var(--transition-base);
}
@media (any-hover: hover) and (pointer: fine) {
  .c-btn--outline:hover {
    color: var(--color-text-inverse);
    background-color: var(--color-primary);
  }
}

.c-color-toggle {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  inline-size: var(--toggle-track-w);
  block-size: var(--toggle-track-h);
  padding-inline: var(--toggle-pad-inline);
  margin-inline-start: auto;
  color: var(--color-text-muted);
  background-color: var(--color-bg-alt);
  border: var(--border-width-thin) solid var(--color-border);
  border-radius: var(--radius-pill);
  transition: background-color var(--transition-base), border-color var(--transition-base);
}
@media (any-hover: hover) and (pointer: fine) {
  .c-color-toggle:hover {
    border-color: var(--color-accent);
  }
}
.c-color-toggle::before {
  position: absolute;
  inset-block-start: 50%;
  inset-inline-start: var(--toggle-thumb-offset);
  z-index: var(--z-base);
  inline-size: var(--toggle-thumb-size);
  block-size: var(--toggle-thumb-size);
  content: "";
  background-color: var(--color-accent);
  border-radius: var(--radius-pill);
  box-shadow: var(--shadow-sm);
  transition: none;
  transform: translateY(-50%);
}
.c-color-toggle[aria-pressed=true]::before {
  inset-inline-start: calc(100% - var(--toggle-thumb-offset) - var(--toggle-thumb-size));
}

@media screen and (min-width: 768px) {
  .c-color-toggle {
    margin-inline-start: 0;
  }
}
html.is-ready .c-color-toggle::before {
  transition: inset-inline-start var(--transition-base), background-color var(--transition-base);
}

.c-color-toggle__icon {
  position: relative;
  z-index: var(--z-raised);
  inline-size: var(--toggle-icon-size);
  block-size: var(--toggle-icon-size);
  pointer-events: none;
  transition: color var(--transition-base);
}

.c-color-toggle__icon--sun {
  color: var(--color-text-inverse);
}

.c-color-toggle__icon--moon {
  color: var(--color-text-muted);
}

.c-color-toggle[aria-pressed=true] .c-color-toggle__icon--sun {
  color: var(--color-text-muted);
}

.c-color-toggle[aria-pressed=true] .c-color-toggle__icon--moon {
  color: var(--color-text-inverse);
}

.c-hamburger-fab {
  position: fixed;
  inset-block-end: var(--fab-offset);
  inset-inline-end: var(--fab-offset);
  z-index: calc(var(--z-modal) + 10);
  display: inline-flex;
  flex-direction: column;
  gap: calc(5 * var(--to-rem));
  align-items: center;
  justify-content: center;
  inline-size: var(--fab-size);
  block-size: var(--fab-size);
  padding: 0;
  color: var(--color-text-inverse);
  cursor: pointer;
  background-color: var(--color-accent-fixed);
  border: none;
  border-radius: var(--radius-pill);
}
@media (any-hover: hover) and (pointer: fine) {
  .c-hamburger-fab:hover {
    background-color: var(--color-accent-fixed-hover);
  }
}

.c-hamburger-fab__line {
  display: block;
  inline-size: calc(24 * var(--to-rem));
  block-size: calc(2 * var(--to-rem));
  background-color: var(--color-fixed-white);
  border-radius: 2px;
  transition: transform var(--transition-slow), opacity var(--transition-slow);
  transform-origin: center;
}

.c-hamburger-fab.is-active .c-hamburger-fab__line:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}

.c-hamburger-fab.is-active .c-hamburger-fab__line:nth-child(2) {
  opacity: 0;
  transform: scaleX(0);
}

.c-hamburger-fab.is-active .c-hamburger-fab__line:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

:root[data-color-scheme=dark] .c-hamburger-fab {
  box-shadow: var(--fab-shadow);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-color-scheme=light]) .c-hamburger-fab {
    box-shadow: var(--fab-shadow);
  }
}
@media (any-hover: hover) and (pointer: fine) {
  :root[data-color-scheme=dark] .c-hamburger-fab:hover {
    box-shadow: var(--fab-shadow-hover);
  }
}
@media screen and (min-width: 768px) {
  .c-hamburger-fab {
    display: none;
  }
}
.c-ic-btn {
  display: inline-flex;
  gap: var(--space-1);
  align-items: center;
  justify-content: center;
  min-block-size: var(--touch-target-min);
  padding-block: var(--space-2);
  padding-inline: var(--space-5);
  font-family: var(--font-heading);
  font-size: var(--fs-base);
  font-weight: var(--fw-bold);
  line-height: 1;
  color: var(--color-text-base);
  cursor: pointer;
  background-color: transparent;
  border: var(--border-width-thin) solid transparent;
  border-radius: var(--radius-sm);
  transition: background-color var(--transition-base), border-color var(--transition-base), opacity var(--transition-base);
}
.c-ic-btn:focus-visible {
  outline: var(--focus-outline-width) solid var(--color-focus-outline);
  outline-offset: var(--focus-outline-offset);
}
.c-ic-btn:disabled {
  cursor: not-allowed;
  opacity: 0.5;
}

.c-ic-btn--primary {
  color: var(--color-fixed-white);
  background-color: var(--color-accent-fixed);
}
@media (any-hover: hover) and (pointer: fine) {
  .c-ic-btn--primary:hover {
    background-color: var(--color-accent-fixed-hover);
  }
}

.c-ic-btn--outline {
  color: var(--color-text-base);
  border-color: var(--color-border-strong);
}
@media (any-hover: hover) and (pointer: fine) {
  .c-ic-btn--outline:hover {
    color: var(--color-accent);
    border-color: var(--color-accent);
  }
}

.c-ic-btn--ghost {
  padding-inline: var(--space-3);
  font-size: var(--fs-sm);
  font-weight: var(--fw-medium);
  color: var(--color-text-muted);
}
@media (any-hover: hover) and (pointer: fine) {
  .c-ic-btn--ghost:hover {
    color: var(--color-accent);
  }
}

.c-ic-toggle-type__chevron {
  display: inline-flex;
  align-items: center;
  transition: transform var(--transition-base);
}

.c-ic-toggle-type[aria-expanded=true] .c-ic-toggle-type__chevron {
  transform: rotate(90deg);
}

.c-ic-toggle-type[aria-expanded=true] {
  color: var(--color-accent);
}

.c-ic-btn--dl {
  padding-inline: var(--space-3);
  font-size: var(--fs-sm);
  color: var(--color-text-base);
  border-color: var(--color-border-strong);
}
@media (any-hover: hover) and (pointer: fine) {
  .c-ic-btn--dl:hover {
    color: var(--color-accent);
    border-color: var(--color-accent);
  }
}

.c-ic-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  list-style: none;
}

.c-ic-card {
  padding: var(--space-3);
  background-color: var(--color-bg-elevated);
  border: var(--border-width-thin) solid var(--color-border);
  border-radius: var(--radius-md);
}
.c-ic-card.is-done {
  border-color: var(--color-success);
}
.c-ic-card.is-error {
  border-color: var(--color-error);
}

.c-ic-card__main {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  align-items: flex-start;
}

.c-ic-card__delete {
  position: absolute;
  inset-block-end: 0;
  inset-inline-end: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  inline-size: var(--touch-target-min);
  block-size: var(--touch-target-min);
  color: var(--color-text-muted);
  cursor: pointer;
  background-color: transparent;
  border: var(--border-width-thin) solid transparent;
  border-radius: var(--radius-sm);
  transition: color var(--transition-base), background-color var(--transition-base), border-color var(--transition-base);
}
@media (any-hover: hover) and (pointer: fine) {
  .c-ic-card__delete:hover {
    color: var(--color-error);
    border-color: var(--color-error);
  }
}
.c-ic-card__delete:focus-visible {
  outline: var(--focus-outline-width) solid var(--color-focus-outline);
  outline-offset: var(--focus-outline-offset);
}

.c-ic-card__thumb {
  inline-size: calc(64 * var(--to-rem));
  block-size: calc(64 * var(--to-rem));
  object-fit: cover;
  background-color: var(--color-bg-alt);
  border: var(--border-width-thin) solid var(--color-border);
  border-radius: var(--radius-sm);
}

.c-ic-card__body {
  display: flex;
  flex: 1 1 calc(192 * var(--to-rem));
  flex-direction: column;
  gap: var(--space-2);
  min-inline-size: 0;
}

.c-ic-card__name {
  overflow: hidden;
  font-size: var(--fs-sm);
  font-weight: var(--fw-medium);
  color: var(--color-text-base);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.c-ic-card__current {
  font-size: var(--fs-xs);
  color: var(--color-text-muted);
}

.c-ic-card__current-type {
  font-weight: var(--fw-bold);
  color: var(--color-accent);
}

.c-ic-card__current-fmt {
  color: var(--color-text-muted);
}

.c-ic-card__reason {
  display: block;
  font-size: var(--fs-xs);
  color: var(--color-text-muted);
  opacity: 0.85;
}

.c-ic-card__type {
  padding: var(--space-3);
  margin-block-start: var(--space-3);
  border: var(--border-width-thin) solid var(--color-border);
  border-radius: var(--radius-md);
}

.c-ic-card__type-legend {
  padding-inline: var(--space-2);
  font-size: var(--fs-xs);
  font-weight: var(--fw-bold);
  color: var(--color-text-muted);
}

.c-ic-card__advise {
  display: flex;
  gap: var(--space-1);
  align-items: flex-start;
  padding-block: var(--space-2);
  padding-inline: var(--space-3);
  margin-block-start: var(--space-2);
  font-size: var(--fs-xs);
  color: var(--color-text-muted);
  background-color: var(--color-warning-bg);
  border-radius: var(--radius-sm);
}

.c-ic-card__advise .ic-icon {
  flex-shrink: 0;
}

.c-ic-card__hint-text {
  flex: 1 1 auto;
  min-inline-size: 0;
  line-height: 1.5;
}

.c-ic-card__sizes {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  align-items: baseline;
  font-family: var(--font-family-mono);
  font-size: var(--fs-sm);
}

.c-ic-card__before {
  color: var(--color-text-muted);
}

.c-ic-card__arrow {
  color: var(--color-text-muted);
}

.c-ic-card__after {
  font-weight: var(--fw-bold);
  color: var(--color-text-base);
}

.c-ic-card__outs {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}

.c-ic-card__out {
  display: inline-flex;
  gap: var(--space-1);
  align-items: baseline;
}

.c-ic-card__ext {
  padding-inline: var(--space-1);
  font-size: var(--fs-xs);
  font-weight: var(--fw-bold);
  color: var(--color-text-muted);
  letter-spacing: 0.02em;
}

.c-ic-card__rate {
  padding-block: 0;
  padding-inline: var(--space-2);
  font-size: var(--fs-xs);
  font-weight: var(--fw-bold);
  border-radius: var(--radius-pill);
}
.c-ic-card__rate.is-good {
  color: var(--color-success);
  background-color: rgba(42, 157, 110, 0.12);
}
.c-ic-card__rate.is-bad {
  color: var(--color-warning);
  background-color: var(--color-warning-bg);
}

.c-ic-card__err {
  display: inline-flex;
  gap: var(--space-1);
  align-items: center;
  font-family: var(--font-body);
  color: var(--color-error);
}

.c-ic-card__actions {
  display: flex;
  flex-shrink: 0;
  flex-wrap: wrap;
  gap: var(--space-2);
  align-items: center;
}

.c-ic {
  display: flex;
  flex-direction: column;
  gap: var(--space-6);
}

.c-ic .u-visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

.c-ic-dropzone {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  align-items: center;
  padding-block: var(--space-10);
  padding-inline: var(--space-6);
  text-align: center;
  cursor: default;
  background-color: var(--dropzone-bg);
  border: var(--dropzone-border);
  border-radius: var(--radius-md);
  transition: border-color var(--transition-base), background-color var(--transition-base);
}
.c-ic-dropzone:focus-visible {
  outline: var(--focus-outline-width) solid var(--color-focus-outline);
  outline-offset: var(--focus-outline-offset);
}
.c-ic-dropzone.is-dragover {
  background-color: var(--dropzone-bg-active);
  border: var(--dropzone-border-active);
}

.c-ic-dropzone__lead {
  font-size: var(--fs-lg);
  font-weight: var(--fw-bold);
  color: var(--color-text-base);
}

.c-ic-dropzone__sub {
  font-size: var(--fs-sm);
  color: var(--color-text-muted);
}

.c-ic-dropzone__pick {
  margin-block-start: var(--space-2);
}

.c-ic-bulk {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  padding: var(--space-4);
  background-color: var(--color-bg-alt);
  border: var(--border-width-thin) solid var(--color-border);
  border-radius: var(--radius-md);
}

.c-ic-divider {
  inline-size: 100%;
  block-size: 0;
  margin-block: 0;
  border: none;
  border-block-start: 1px solid var(--color-border);
}

.c-ic-fieldset {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  padding: 0;
  margin: 0;
  border: 0;
}

.c-ic-fieldset__legend {
  padding: 0;
  margin-block-end: var(--space-2);
  font-size: var(--fs-sm);
  font-weight: var(--fw-bold);
  color: var(--color-text-base);
}

.c-ic-fieldset__note {
  font-size: var(--fs-xs);
  line-height: var(--lh-base);
  color: var(--color-text-muted);
}

.c-ic-typegrid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(calc(240 * var(--to-rem)), 1fr));
  gap: var(--space-2);
}

.c-ic-typegrid--compact {
  grid-template-columns: repeat(auto-fill, minmax(calc(208 * var(--to-rem)), 1fr));
}

.c-ic-typecard {
  position: relative;
}

.c-ic-typecard__label {
  display: flex;
  gap: var(--space-3);
  align-items: flex-start;
  block-size: 100%;
  padding: var(--space-3);
  cursor: pointer;
  background-color: var(--field-bg);
  border: var(--field-border);
  border-radius: var(--radius-md);
  transition: border-color var(--transition-base), background-color var(--transition-base);
}
@media (any-hover: hover) and (pointer: fine) {
  .c-ic-typecard__label:hover {
    border-color: var(--color-border-strong);
  }
}

.c-ic-typecard__icon {
  display: inline-flex;
  flex-shrink: 0;
  color: var(--color-text-muted);
  transition: color var(--transition-base);
}

.c-ic-typecard__text {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  min-inline-size: 0;
}

.c-ic-typecard__title {
  font-size: var(--fs-sm);
  font-weight: var(--fw-bold);
  color: var(--color-text-base);
}

.c-ic-typecard__desc {
  font-size: var(--fs-xs);
  line-height: var(--lh-base);
  color: var(--color-text-muted);
}

.c-ic-typecard__radio:checked + .c-ic-typecard__label {
  background-color: var(--color-accent-bg);
  border-color: var(--color-accent);
}
.c-ic-typecard__radio:checked + .c-ic-typecard__label .c-ic-typecard__icon {
  color: var(--color-accent);
}

.c-ic-typecard__radio:focus-visible + .c-ic-typecard__label {
  outline: var(--focus-outline-width) solid var(--color-focus-outline);
  outline-offset: var(--focus-outline-offset);
}

.c-ic-formatgrid {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}

.c-ic-fmtcard {
  position: relative;
}

.c-ic-fmtcard__label {
  display: inline-flex;
  gap: var(--space-2);
  align-items: center;
  min-block-size: var(--touch-target-min);
  padding-block: var(--space-2);
  padding-inline: var(--space-3);
  cursor: pointer;
  background-color: var(--field-bg);
  border: var(--field-border);
  border-radius: var(--field-radius);
  transition: border-color var(--transition-base), background-color var(--transition-base);
}

.c-ic-fmtcard__check-box {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  inline-size: calc(20 * var(--to-rem));
  block-size: calc(20 * var(--to-rem));
  color: transparent;
  border: var(--border-width-thin) solid var(--color-border-strong);
  border-radius: var(--field-radius);
  transition: color var(--transition-base), background-color var(--transition-base), border-color var(--transition-base);
}

.c-ic-fmtcard__ext {
  font-family: var(--font-family-mono);
  font-size: var(--fs-sm);
  font-weight: var(--fw-bold);
  color: var(--color-text-base);
}

.c-ic-fmtcard__check:checked + .c-ic-fmtcard__label {
  border-color: var(--color-accent);
}
.c-ic-fmtcard__check:checked + .c-ic-fmtcard__label .c-ic-fmtcard__check-box {
  color: var(--color-fixed-white);
  background-color: var(--color-accent);
  border-color: var(--color-accent);
}

.c-ic-fmtcard__check:focus-visible + .c-ic-fmtcard__label {
  outline: var(--focus-outline-width) solid var(--color-focus-outline);
  outline-offset: var(--focus-outline-offset);
}

.c-ic-toggleblock {
  display: flex;
  flex-direction: column;
}

.c-ic-toggleblock__help {
  margin-block-start: var(--space-2);
  font-size: var(--fs-xs);
  line-height: var(--lh-base);
  color: var(--color-text-muted);
}

.c-ic-toggle {
  display: inline-flex;
  gap: var(--space-2);
  align-items: center;
  inline-size: fit-content;
  font-size: var(--fs-sm);
  color: var(--color-text-muted);
  cursor: pointer;
  --ic-switch-track-w: calc(40 * var(--to-rem));
  --ic-switch-track-h: calc(22 * var(--to-rem));
  --ic-switch-thumb-size: calc(16 * var(--to-rem));
  --ic-switch-thumb-offset: calc(3 * var(--to-rem));
}
.c-ic-toggle:has(input:disabled) {
  cursor: not-allowed;
}

.c-ic-toggle__switch {
  position: relative;
  flex-shrink: 0;
  inline-size: var(--ic-switch-track-w);
  block-size: var(--ic-switch-track-h);
  background-color: var(--color-border-strong);
  border-radius: var(--radius-pill);
  transition: background-color var(--transition-base);
}
.c-ic-toggle__switch::before {
  position: absolute;
  inset-block-start: 50%;
  inset-inline-start: var(--ic-switch-thumb-offset);
  inline-size: var(--ic-switch-thumb-size);
  block-size: var(--ic-switch-thumb-size);
  content: "";
  background-color: var(--color-fixed-white);
  border-radius: var(--radius-pill);
  box-shadow: var(--shadow-sm);
  transition: inset-inline-start var(--transition-base);
  transform: translateY(-50%);
}

.c-ic-toggle__input:checked + .c-ic-toggle__switch {
  background-color: var(--color-accent);
}
.c-ic-toggle__input:checked + .c-ic-toggle__switch::before {
  inset-inline-start: calc(100% - var(--ic-switch-thumb-offset) - var(--ic-switch-thumb-size));
}

.c-ic-toggle__input:focus-visible + .c-ic-toggle__switch {
  outline: var(--focus-outline-width) solid var(--color-focus-outline);
  outline-offset: var(--focus-outline-offset);
}

.c-ic-toggle__text {
  color: var(--color-text-base);
}

.c-ic-notice {
  padding-block: var(--space-3);
  padding-inline: var(--space-4);
  font-size: var(--fs-sm);
  line-height: var(--lh-base);
  white-space: pre-line;
  border-radius: var(--radius-sm);
}
.c-ic-notice[data-kind=warning] {
  color: var(--color-warning);
  background-color: var(--color-warning-bg);
}
.c-ic-notice[data-kind=info] {
  color: var(--color-info);
  background-color: var(--color-accent-bg);
}

.c-ic-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
}

.c-ic-progress {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.c-ic-progress__track {
  block-size: calc(8 * var(--to-rem));
  overflow: hidden;
  background-color: var(--color-bg-alt);
  border-radius: var(--radius-pill);
}

.c-ic-progress__bar {
  inline-size: 0%;
  block-size: 100%;
  background-color: var(--color-accent);
  border-radius: var(--radius-pill);
  transition: inline-size var(--transition-base);
}

.c-ic-progress__text {
  font-size: var(--fs-sm);
  color: var(--color-text-muted);
}

.ic-icon {
  flex-shrink: 0;
  vertical-align: middle;
}

.c-link-arrow {
  position: relative;
  display: inline-flex;
  gap: var(--link-arrow-gap);
  align-items: center;
  font-weight: var(--fw-medium);
  color: var(--color-accent);
  text-decoration: none;
  transition: color var(--transition-base);
}
.c-link-arrow::after {
  display: inline-block;
  content: "→";
  transition: transform var(--transition-base), color var(--transition-base);
}
.c-link-arrow:hover, .c-link-arrow:focus-visible {
  color: var(--color-accent-hover);
}
.c-link-arrow:hover::after, .c-link-arrow:focus-visible::after {
  color: var(--color-accent-hover);
  transform: translateX(var(--link-arrow-shift));
}

.c-maker-card {
  display: grid;
  gap: var(--space-5);
  justify-items: center;
  padding: var(--maker-card-padding);
  text-align: center;
  background-color: var(--maker-card-bg);
  border: var(--border-width-thin) solid var(--color-border);
  border-radius: var(--maker-card-radius);
}

@media screen and (min-width: 768px) {
  .c-maker-card {
    grid-template-columns: auto 1fr;
    column-gap: var(--space-8);
    place-items: center stretch;
    text-align: start;
  }
}
.c-maker-card__avatar {
  inline-size: var(--maker-avatar-size);
  block-size: var(--maker-avatar-size);
  background-color: var(--color-bg-elevated);
  background-image: var(--maker-avatar-image);
  background-position: center;
  background-size: cover;
  border-radius: var(--radius-pill);
}

@media screen and (min-width: 1024px) {
  .c-maker-card__avatar {
    inline-size: var(--maker-avatar-size-pc);
    block-size: var(--maker-avatar-size-pc);
  }
}
.c-maker-card__name {
  margin-block-end: var(--space-1);
  font-family: var(--font-heading);
  font-size: var(--fs-lg);
  font-weight: var(--fw-bold);
}

.c-maker-card__role {
  margin-block-end: var(--space-3);
  font-size: var(--fs-sm);
  color: var(--color-text-muted);
}

.c-maker-card__desc {
  margin-block-end: var(--space-4);
  font-size: var(--fs-base);
  color: var(--color-text-base);
}

.c-maker-card__links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-5);
  justify-content: center;
}

@media screen and (min-width: 768px) {
  .c-maker-card__links {
    justify-content: flex-start;
  }
}
.c-mobile-nav__bg {
  position: fixed;
  inset-block-end: calc(var(--fab-offset) + var(--fab-size) / 2);
  inset-inline-end: calc(var(--fab-offset) + var(--fab-size) / 2);
  z-index: var(--z-modal-backdrop);
  inline-size: 0;
  block-size: 0;
  pointer-events: none;
  background-color: var(--color-nav-overlay);
  border-radius: var(--radius-pill);
  opacity: 0;
  transition: none;
  transform: translate(50%, 50%) scale(0);
}
.c-mobile-nav__bg.is-expanding {
  inline-size: 300vmax;
  block-size: 300vmax;
  opacity: 1;
  transform: translate(50%, 50%) scale(1);
}
.c-mobile-nav__bg.is-closing {
  inline-size: 300vmax;
  block-size: 300vmax;
  opacity: 0;
  transform: translate(50%, 50%) scale(0);
}

html.is-ready .c-mobile-nav__bg {
  transition: transform var(--expand-transition-bg), width 0s, height 0s;
}

html.is-ready .c-mobile-nav__bg.is-closing {
  transition: transform var(--expand-close-bg), opacity var(--expand-close-bg);
}

.c-mobile-nav {
  position: fixed;
  inset: 0;
  z-index: var(--z-modal);
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  visibility: hidden;
  opacity: 0;
  transition: none;
}
.c-mobile-nav.is-open {
  pointer-events: auto;
  visibility: visible;
  opacity: 1;
}

html.is-ready .c-mobile-nav {
  transition: opacity var(--expand-close-nav), visibility var(--expand-close-nav);
}

html.is-ready .c-mobile-nav.is-open {
  transition: opacity var(--expand-transition-nav), visibility var(--expand-transition-nav);
}

.c-mobile-nav__panel {
  inline-size: min(86%, 360px);
}

.c-mobile-nav__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  text-align: center;
}

.c-mobile-nav__item {
  opacity: 0;
  transition: none;
  transition-delay: 0s;
  transform: translateY(30px);
}

html.is-ready .c-mobile-nav__item {
  transition: opacity var(--expand-close-nav), transform var(--expand-close-nav);
}

html.is-ready .c-mobile-nav.is-open .c-mobile-nav__item {
  transition: opacity var(--expand-transition-nav), transform var(--expand-transition-nav);
}

.c-mobile-nav.is-open .c-mobile-nav__item {
  opacity: 1;
  transform: translateY(0);
}

.c-mobile-nav.is-open .c-mobile-nav__item:nth-child(1) {
  transition-delay: calc(var(--expand-item-delay) * 1);
}

.c-mobile-nav.is-open .c-mobile-nav__item:nth-child(2) {
  transition-delay: calc(var(--expand-item-delay) * 2);
}

.c-mobile-nav__item a:not(.c-btn--primary) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-block-size: var(--touch-target-min);
  padding-block: var(--space-3);
  padding-inline: var(--space-4);
  font-size: var(--fs-xl);
  font-weight: var(--fw-medium);
  color: var(--color-nav-text);
  text-decoration: none;
  letter-spacing: var(--ls-wide);
  transition: color var(--transition-base);
}
.c-mobile-nav__item a:not(.c-btn--primary):focus-visible {
  color: var(--color-accent);
}

@media (any-hover: hover) and (pointer: fine) {
  .c-mobile-nav__item a:not(.c-btn--primary):hover {
    color: var(--color-accent);
  }
}
.c-mobile-nav__item--contact {
  margin-block-start: var(--space-4);
}

@media (prefers-reduced-motion: reduce) {
  html.is-ready .c-mobile-nav__bg,
  html.is-ready .c-mobile-nav__bg.is-closing {
    transition: opacity var(--transition-base);
  }
  .c-mobile-nav__bg.is-expanding,
  .c-mobile-nav__bg.is-closing {
    transform: none;
  }
  .c-mobile-nav__bg.is-expanding {
    inset: 0;
    inline-size: auto;
    block-size: auto;
  }
  html.is-ready .c-mobile-nav__item {
    transition: opacity var(--transition-base);
  }
  .c-mobile-nav__item {
    transform: none;
  }
  .c-mobile-nav.is-open .c-mobile-nav__item {
    transition-delay: 0s;
    transform: none;
  }
}
@media screen and (min-width: 768px) {
  .c-mobile-nav,
  .c-mobile-nav__bg {
    display: none;
  }
}
.c-tool-card {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  block-size: 100%;
  padding: var(--space-5);
  color: var(--color-text-base);
  text-decoration: none;
  background-color: var(--color-bg-elevated);
  border: var(--border-width-thin) solid var(--color-border);
  border-radius: var(--radius-md);
}
@media (any-hover: hover) and (pointer: fine) {
  .c-tool-card:hover .c-tool-card__thumb {
    transform: scale(1.06);
  }
}

.c-tool-card > picture {
  display: block;
  overflow: hidden;
  border-radius: var(--radius-md);
}

.c-tool-card__thumb {
  width: 100%;
  aspect-ratio: 16/9;
  object-fit: cover;
  background-color: var(--color-bg-code);
  transition: transform var(--transition-base);
}

.c-tool-card__name {
  margin-block-start: var(--space-3);
  font-family: var(--font-heading);
  font-size: var(--fs-lg);
  font-weight: var(--fw-bold);
  color: var(--color-text-base);
}

.c-tool-card__tagline {
  font-size: var(--fs-sm);
  line-height: var(--lh-base);
  color: var(--color-text-muted);
}

.c-tool-card__tags {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin-block-start: auto;
}

@media (prefers-reduced-motion: reduce) {
  .c-tool-card:hover .c-tool-card__thumb {
    transform: none;
  }
}
.c-tool-panel {
  padding: var(--tool-panel-padding);
  background-color: var(--color-bg-elevated);
  border: var(--border-width-thin) solid var(--color-border);
  border-radius: var(--tool-panel-radius);
}

.c-tool-panel__placeholder {
  font-size: var(--fs-base);
  line-height: var(--lh-base);
  color: var(--color-text-muted);
}

.p-cta {
  position: relative;
  padding-block: var(--space-20);
  margin-block-start: var(--tool-section-gap);
  color: var(--color-text-inverse);
  text-align: center;
  background-color: var(--color-primary);
  background-image: linear-gradient(var(--color-cta-overlay-light), var(--color-cta-overlay-light)), var(--bg-cta-image);
  background-repeat: no-repeat;
  background-position: center;
  background-size: cover;
  isolation: isolate;
}

:root[data-color-scheme=dark] .p-cta {
  background-image: linear-gradient(var(--color-cta-overlay-dark), var(--color-cta-overlay-dark)), var(--bg-cta-image);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-color-scheme=light]) .p-cta {
    background-image: linear-gradient(var(--color-cta-overlay-dark), var(--color-cta-overlay-dark)), var(--bg-cta-image);
  }
}
.p-cta__inner {
  position: relative;
  z-index: var(--z-raised);
  max-inline-size: var(--container-wide);
  padding-inline: var(--container-padding-sp);
  margin-inline: auto;
}

@media screen and (min-width: 768px) {
  .p-cta__inner {
    padding-inline: var(--container-padding-pc);
  }
}
.p-cta__title {
  margin-block-end: var(--space-4);
  margin-inline: auto;
  font-family: var(--font-heading);
  font-size: clamp(var(--fs-2xl), 4vw, var(--fs-3xl));
  line-height: var(--lh-tight);
  color: var(--color-fixed-white);
  letter-spacing: var(--ls-tight);
}

.p-cta__lead {
  margin-block-end: var(--space-8);
  margin-inline: auto;
  font-size: var(--fs-lg);
  line-height: var(--lh-base);
  color: rgba(255, 255, 255, 0.88);
}

.p-cta__action {
  display: flex;
  justify-content: center;
}

.p-footer {
  padding-block: var(--footer-pad-top) 0;
  color: var(--footer-text);
  background-color: var(--footer-bg);
}

.p-footer__inner {
  display: grid;
  gap: var(--footer-inner-gap);
  max-inline-size: var(--container-max);
  padding-block-end: var(--footer-inner-pad-bottom);
  padding-inline: var(--container-padding-sp);
  margin-inline: auto;
}

@media screen and (min-width: 768px) {
  .p-footer__inner {
    padding-inline: var(--container-padding-pc);
  }
}
.p-footer__logo {
  font-family: var(--font-heading);
  line-height: 1.15;
  letter-spacing: var(--ls-base);
}

.p-footer__logo a {
  display: inline-flex;
  flex-direction: column;
  gap: 0;
  color: var(--footer-text);
  text-decoration: none;
  transition: opacity var(--transition-base);
}
@media (any-hover: hover) and (pointer: fine) {
  .p-footer__logo a:hover {
    opacity: 0.7;
  }
}

.p-footer__logo-line {
  display: block;
  font-size: var(--fs-lg);
  font-weight: var(--fw-bold);
  letter-spacing: var(--ls-base);
}

.p-footer__logo-line--2 {
  color: var(--footer-logo-accent);
}

.p-footer__nav {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-6) var(--space-12);
}

.p-footer__nav-group {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.p-footer__nav-heading {
  margin-block-end: var(--space-2);
  font-family: var(--font-heading);
  font-size: var(--fs-base);
  font-weight: var(--fw-bold);
  color: var(--footer-text);
  letter-spacing: var(--ls-wide);
}

.p-footer__nav-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  padding-inline-start: var(--space-3);
}

.p-footer__nav a {
  font-size: var(--fs-sm);
  color: var(--footer-text);
  text-decoration: none;
  white-space: nowrap;
  opacity: var(--footer-link-opacity);
  transition: color var(--transition-base), opacity var(--transition-base);
}
@media (any-hover: hover) and (pointer: fine) {
  .p-footer__nav a:hover {
    color: var(--color-accent);
    opacity: 1;
  }
}

.p-footer__sns {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3) var(--space-5);
}

.p-footer__sns a {
  display: inline-flex;
  gap: var(--space-2);
  align-items: center;
  min-block-size: var(--touch-target-min);
  padding-inline: var(--space-2);
  font-size: var(--fs-sm);
  color: var(--footer-text);
  text-decoration: none;
  opacity: var(--footer-link-opacity);
  transition: color var(--transition-base), opacity var(--transition-base);
}
@media (any-hover: hover) and (pointer: fine) {
  .p-footer__sns a:hover {
    color: var(--color-accent);
    opacity: 1;
  }
}

.p-footer__sns-icon {
  flex-shrink: 0;
  inline-size: var(--icon-size-base);
  block-size: var(--icon-size-base);
}

.p-footer__bottom {
  padding-block: var(--footer-bottom-pad);
  text-align: center;
  border-block-start: var(--border-width-thin) solid var(--footer-divider-color);
}

.p-footer__copyright {
  font-family: var(--font-family-en);
  font-size: var(--fs-sm);
  color: var(--footer-copyright-color);
  letter-spacing: var(--ls-wide);
}

@media screen and (width >= 768px) and (width <= 1023px) {
  .p-footer__inner {
    grid-template-columns: minmax(max-content, 8rem) 1fr auto;
    column-gap: var(--space-6);
    align-items: start;
  }
  .p-footer__brand {
    justify-self: start;
  }
  .p-footer__nav {
    flex-wrap: nowrap;
    gap: var(--space-6);
    justify-self: start;
  }
  .p-footer__nav-list {
    padding-inline-start: var(--space-2);
  }
  .p-footer__nav a {
    font-size: var(--fs-xs);
  }
  .p-footer__sns {
    flex-wrap: nowrap;
    gap: var(--space-4);
    place-self: start end;
  }
  .p-footer__sns a {
    flex-direction: column;
    gap: var(--space-1);
    min-block-size: auto;
    padding-block: var(--space-1);
    font-size: var(--fs-xs);
    line-height: 1.2;
    text-align: center;
  }
}
@media screen and (min-width: 1024px) {
  .p-footer__inner {
    grid-template-columns: minmax(max-content, 12rem) 1fr auto;
    align-items: start;
  }
  .p-footer__logo-line {
    font-size: var(--fs-xl);
  }
  .p-footer__brand {
    justify-self: start;
    inline-size: fit-content;
  }
  .p-footer__nav {
    flex-wrap: nowrap;
    justify-self: start;
  }
  .p-footer__sns {
    flex-wrap: nowrap;
    gap: var(--space-4);
    justify-self: end;
  }
  .p-footer__sns a {
    flex-direction: column;
    gap: var(--space-1);
    min-block-size: auto;
    padding-block: var(--space-1);
    font-size: var(--fs-xs);
    line-height: 1.2;
    text-align: center;
  }
}
.p-header {
  position: sticky;
  inset-block-start: 0;
  z-index: var(--z-header);
  background-color: rgba(255, 255, 255, 0.92);
  backdrop-filter: blur(8px);
  border-block-end: var(--border-width-thin) solid var(--color-border);
  transition: background-color var(--transition-base), border-color var(--transition-base);
}

:root[data-color-scheme=dark] .p-header {
  background-color: rgba(15, 22, 32, 0.92);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-color-scheme=light]) .p-header {
    background-color: rgba(15, 22, 32, 0.92);
  }
}
.p-header__inner {
  display: flex;
  gap: var(--space-2);
  align-items: center;
  max-inline-size: var(--container-max);
  min-block-size: var(--header-height);
  padding-inline: var(--container-padding-sp);
  margin-inline: auto;
}

@media screen and (min-width: 768px) {
  .p-header__inner {
    gap: var(--space-4);
    padding-inline: var(--container-padding-pc);
  }
}
.p-header__logo a {
  display: inline-flex;
  flex-direction: column;
  gap: 0;
  font-family: var(--font-heading);
  line-height: 1.15;
  color: var(--color-text-base);
  text-decoration: none;
  letter-spacing: var(--ls-base);
  transition: opacity var(--transition-base);
}
@media (any-hover: hover) and (pointer: fine) {
  .p-header__logo a:hover {
    opacity: 0.7;
  }
}

.p-header__logo-line {
  font-size: var(--fs-lg);
  font-weight: var(--fw-bold);
  letter-spacing: var(--ls-base);
}

.p-header__logo-line--2 {
  color: var(--color-accent);
}

@media screen and (min-width: 768px) {
  .p-header__logo-line {
    font-size: var(--fs-xl);
  }
}
.p-header__nav {
  display: none;
}

@media screen and (min-width: 768px) {
  .p-header__nav {
    display: flex;
    gap: var(--space-6);
    align-items: center;
    margin-inline: auto var(--space-4);
  }
  .p-header__nav a {
    display: inline-flex;
    align-items: center;
    padding-block: var(--space-2);
    margin-block-start: 2px;
    font-size: var(--fs-base);
    font-weight: var(--fw-medium);
    line-height: 1;
    color: var(--color-text-base);
    text-decoration: none;
    white-space: nowrap;
    border-block-end: var(--border-width-base) solid transparent;
    transition: color var(--transition-base), border-color var(--transition-base);
  }
  .p-header__nav a:hover,
  .p-header__nav a[aria-current=page] {
    color: var(--color-accent);
    border-block-end-color: var(--color-accent);
  }
}
.p-header__contact {
  display: inline-flex;
  align-items: center;
  min-block-size: var(--touch-target-min);
  padding-inline: var(--space-4);
  font-size: var(--fs-sm);
  font-weight: var(--fw-bold);
  color: var(--color-fixed-white);
  text-decoration: none;
  white-space: nowrap;
  background-color: var(--color-accent-fixed);
  border-radius: var(--radius-card);
  transition: background-color var(--transition-base);
}
@media (any-hover: hover) and (pointer: fine) {
  .p-header__contact:hover {
    background-color: var(--color-accent-fixed-hover);
  }
}

@media screen and (min-width: 768px) {
  .p-header__contact {
    font-size: var(--fs-base);
  }
}
.p-hero {
  padding-block: var(--space-12) var(--space-8);
  text-align: center;
}

@media screen and (min-width: 768px) {
  .p-hero {
    text-align: start;
  }
}
.p-hero__title {
  margin-block-end: var(--space-3);
  font-family: var(--font-heading);
  font-size: clamp(var(--fs-2xl), 5vw, var(--fs-4xl));
  line-height: var(--lh-tight);
  letter-spacing: var(--ls-tight);
}

.p-hero__lead {
  font-size: var(--fs-lg);
  color: var(--color-text-muted);
}

.p-maker {
  padding-block: var(--tool-section-gap) 0;
}

.p-tool-body {
  padding-block-end: var(--tool-section-gap);
}

.p-tool-head {
  padding-block: var(--space-4) var(--tool-section-gap);
}

.p-tool-head__title {
  margin-block-end: var(--space-3);
  font-family: var(--font-heading);
  font-size: clamp(var(--fs-2xl), 3.7vw, var(--fs-3xl));
  line-height: var(--lh-tight);
  letter-spacing: var(--ls-tight);
}

.p-tool-head__lead {
  font-size: var(--fs-base);
  color: var(--color-text-muted);
}

.p-tools {
  padding-block: var(--space-4) var(--space-16);
}

.p-tools__list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(calc(280 * var(--to-rem)), 1fr));
  gap: var(--space-5);
}

.p-tools__empty {
  font-size: var(--fs-base);
  color: var(--color-text-muted);
}