@import url(https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable.min.css);
@import url(https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100..900&display=swap);
/* Tailwind 기본 스타일 */
*, ::before, ::after {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}
::backdrop {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}
/* ! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com */
/*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
*/
*,
::before,
::after {
  box-sizing: border-box; /* 1 */
  border-width: 0; /* 2 */
  border-style: solid; /* 2 */
  border-color: #e5e7eb; /* 2 */
}
::before,
::after {
  --tw-content: '';
}
/*
1. Use a consistent sensible line-height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
5. Use the user's configured `sans` font-feature-settings by default.
6. Use the user's configured `sans` font-variation-settings by default.
7. Disable tap highlights on iOS
*/
html,
:host {
  line-height: 1.5; /* 1 */
  -webkit-text-size-adjust: 100%; /* 2 */ /* 3 */
  tab-size: 4; /* 3 */
  font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 4 */
  font-feature-settings: normal; /* 5 */
  font-variation-settings: normal; /* 6 */
  -webkit-tap-highlight-color: transparent; /* 7 */
}
/*
1. Remove the margin in all browsers.
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
*/
body {
  margin: 0; /* 1 */
  line-height: inherit; /* 2 */
}
/*
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
3. Ensure horizontal rules are visible by default.
*/
hr {
  height: 0; /* 1 */
  color: inherit; /* 2 */
  border-top-width: 1px; /* 3 */
}
/*
Add the correct text decoration in Chrome, Edge, and Safari.
*/
abbr:where([title]) {
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
}
/*
Remove the default font size and weight for headings.
*/
h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: inherit;
  font-weight: inherit;
}
/*
Reset links to optimize for opt-in styling instead of opt-out.
*/
a {
  color: inherit;
  text-decoration: inherit;
}
/*
Add the correct font weight in Edge and Safari.
*/
b,
strong {
  font-weight: bolder;
}
/*
1. Use the user's configured `mono` font-family by default.
2. Use the user's configured `mono` font-feature-settings by default.
3. Use the user's configured `mono` font-variation-settings by default.
4. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp,
pre {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* 1 */
  font-feature-settings: normal; /* 2 */
  font-variation-settings: normal; /* 3 */
  font-size: 1em; /* 4 */
}
/*
Add the correct font size in all browsers.
*/
small {
  font-size: 80%;
}
/*
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
*/
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
sub {
  bottom: -0.25em;
}
sup {
  top: -0.5em;
}
/*
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
3. Remove gaps between table borders by default.
*/
table {
  text-indent: 0; /* 1 */
  border-color: inherit; /* 2 */
  border-collapse: collapse; /* 3 */
}
/*
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
3. Remove default padding in all browsers.
*/
button,
input,
optgroup,
select,
textarea {
  font-family: inherit; /* 1 */
  font-feature-settings: inherit; /* 1 */
  font-variation-settings: inherit; /* 1 */
  font-size: 100%; /* 1 */
  font-weight: inherit; /* 1 */
  line-height: inherit; /* 1 */
  letter-spacing: inherit; /* 1 */
  color: inherit; /* 1 */
  margin: 0; /* 2 */
  padding: 0; /* 3 */
}
/*
Remove the inheritance of text transform in Edge and Firefox.
*/
button,
select {
  text-transform: none;
}
/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Remove default button styles.
*/
button,
input:where([type='button']),
input:where([type='reset']),
input:where([type='submit']) {
  -webkit-appearance: button; /* 1 */
  background-color: transparent; /* 2 */
  background-image: none; /* 2 */
}
/*
Use the modern Firefox focus style for all focusable elements.
*/
:-moz-focusring {
  outline: auto;
}
/*
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
*/
:-moz-ui-invalid {
  box-shadow: none;
}
/*
Add the correct vertical alignment in Chrome and Firefox.
*/
progress {
  vertical-align: baseline;
}
/*
Correct the cursor style of increment and decrement buttons in Safari.
*/
::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
  height: auto;
}
/*
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/
[type='search'] {
  -webkit-appearance: textfield; /* 1 */
  outline-offset: -2px; /* 2 */
}
/*
Remove the inner padding in Chrome and Safari on macOS.
*/
::-webkit-search-decoration {
  -webkit-appearance: none;
}
/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
  -webkit-appearance: button; /* 1 */
  font: inherit; /* 2 */
}
/*
Add the correct display in Chrome and Safari.
*/
summary {
  display: list-item;
}
/*
Removes the default spacing and border for appropriate elements.
*/
blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  margin: 0;
}
fieldset {
  margin: 0;
  padding: 0;
}
legend {
  padding: 0;
}
ol,
ul,
menu {
  list-style: none;
  margin: 0;
  padding: 0;
}
/*
Reset default styling for dialogs.
*/
dialog {
  padding: 0;
}
/*
Prevent resizing textareas horizontally by default.
*/
textarea {
  resize: vertical;
}
/*
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
2. Set the default placeholder color to the user's configured gray 400 color.
*/
input::placeholder,
textarea::placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}
/*
Set the default cursor for buttons.
*/
button,
[role="button"] {
  cursor: pointer;
}
/*
Make sure disabled buttons don't get the pointer cursor.
*/
:disabled {
  cursor: default;
}
/*
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
   This can trigger a poorly considered lint error in some tools but is included by design.
*/
img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block; /* 1 */
  vertical-align: middle; /* 2 */
}
/*
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
*/
img,
video {
  max-width: 100%;
  height: auto;
}
/* Make elements with the HTML hidden attribute stay hidden by default */
[hidden]:where(:not([hidden="until-found"])) {
  display: none;
}
:root {
    --background: 0 0% 100%;
    --foreground: 222.2 84% 4.9%;

    --card: 0 0% 100%;
    --card-foreground: 222.2 84% 4.9%;

    --popover: 0 0% 100%;
    --popover-foreground: 222.2 84% 4.9%;

    --primary: 221.2 83.2% 53.3%;
    --primary-foreground: 210 40% 98%;

    --secondary: 210 40% 96.1%;
    --secondary-foreground: 222.2 47.4% 11.2%;

    --muted: 210 40% 96.1%;
    --muted-foreground: 215.4 16.3% 46.9%;

    --accent: 210 40% 96.1%;
    --accent-foreground: 222.2 47.4% 11.2%;

    --destructive: 0 84.2% 60.2%;
    --destructive-foreground: 210 40% 98%;

    --border: 214.3 31.8% 91.4%;
    --input: 214.3 31.8% 91.4%;
    --ring: 221.2 83.2% 53.3%;

    --radius: 0.5rem;
  }
* {
    border-color: hsl(214.3 31.8% 91.4%);
    border-color: hsl(var(--border));
  }
body {
    background-color: hsl(0 0% 100%);
    background-color: hsl(var(--background));
    color: hsl(222.2 84% 4.9%);
    color: hsl(var(--foreground));
    font-feature-settings: "rlig" 1, "calt" 1;
  }
.container {
  width: 100%;
  margin-right: auto;
  margin-left: auto;
  padding-right: 2rem;
  padding-left: 2rem;
}
@media (min-width: 1400px) {
  .container {
    max-width: 1400px;
  }
}
.\!visible {
  visibility: visible !important;
}
.visible {
  visibility: visible;
}
.mb-3 {
  margin-bottom: 0.75rem;
}
.mr-2 {
  margin-right: 0.5rem;
}
.flex {
  display: flex;
}
.inline-flex {
  display: inline-flex;
}
.h-10 {
  height: 2.5rem;
}
.h-11 {
  height: 2.75rem;
}
.h-6 {
  height: 1.5rem;
}
.h-9 {
  height: 2.25rem;
}
.w-10 {
  width: 2.5rem;
}
.w-6 {
  width: 1.5rem;
}
.resize {
  resize: both;
}
.items-start {
  align-items: flex-start;
}
.items-center {
  align-items: center;
}
.justify-center {
  justify-content: center;
}
.space-y-2 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
}
.whitespace-nowrap {
  white-space: nowrap;
}
.rounded-full {
  border-radius: 9999px;
}
.rounded-md {
  border-radius: calc(0.5rem - 2px);
  border-radius: calc(var(--radius) - 2px);
}
.border {
  border-width: 1px;
}
.border-border {
  border-color: hsl(214.3 31.8% 91.4%);
  border-color: hsl(var(--border));
}
.border-input {
  border-color: hsl(214.3 31.8% 91.4%);
  border-color: hsl(var(--input));
}
.bg-background {
  background-color: hsl(0 0% 100%);
  background-color: hsl(var(--background));
}
.bg-card {
  background-color: hsl(0 0% 100%);
  background-color: hsl(var(--card));
}
.bg-destructive {
  background-color: hsl(0 84.2% 60.2%);
  background-color: hsl(var(--destructive));
}
.bg-primary {
  background-color: hsl(221.2 83.2% 53.3%);
  background-color: hsl(var(--primary));
}
.bg-primary\/10 {
  background-color: hsl(221.2 83.2% 53.3% / 0.1);
  background-color: hsl(var(--primary) / 0.1);
}
.bg-secondary {
  background-color: hsl(210 40% 96.1%);
  background-color: hsl(var(--secondary));
}
.p-4 {
  padding: 1rem;
}
.px-3 {
  padding-left: 0.75rem;
  padding-right: 0.75rem;
}
.px-4 {
  padding-left: 1rem;
  padding-right: 1rem;
}
.px-8 {
  padding-left: 2rem;
  padding-right: 2rem;
}
.py-2 {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}
.pt-0\.5 {
  padding-top: 0.125rem;
}
.text-lg {
  font-size: 1.125rem;
  line-height: 1.75rem;
}
.text-sm {
  font-size: 0.875rem;
  line-height: 1.25rem;
}
.font-medium {
  font-weight: 500;
}
.text-card-foreground {
  color: hsl(222.2 84% 4.9%);
  color: hsl(var(--card-foreground));
}
.text-destructive-foreground {
  color: hsl(210 40% 98%);
  color: hsl(var(--destructive-foreground));
}
.text-muted-foreground {
  color: hsl(215.4 16.3% 46.9%);
  color: hsl(var(--muted-foreground));
}
.text-primary {
  color: hsl(221.2 83.2% 53.3%);
  color: hsl(var(--primary));
}
.text-primary-foreground {
  color: hsl(210 40% 98%);
  color: hsl(var(--primary-foreground));
}
.text-secondary-foreground {
  color: hsl(222.2 47.4% 11.2%);
  color: hsl(var(--secondary-foreground));
}
.underline-offset-4 {
  text-underline-offset: 4px;
}
.outline {
  outline-style: solid;
}
.ring-offset-background {
  --tw-ring-offset-color: hsl(var(--background));
}
.filter {
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
.transition-colors {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
@keyframes enter {
  from {
    opacity: 1;
    opacity: var(--tw-enter-opacity, 1);
    transform: translate3d(0, 0, 0) scale3d(1, 1, 1) rotate(0);
    transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));
  }
}
@keyframes exit {
  to {
    opacity: 1;
    opacity: var(--tw-exit-opacity, 1);
    transform: translate3d(0, 0, 0) scale3d(1, 1, 1) rotate(0);
    transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));
  }
}

body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
    'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
    sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

code {
  font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
    monospace;
}

.hover\:bg-accent:hover {
  background-color: hsl(210 40% 96.1%);
  background-color: hsl(var(--accent));
}

.hover\:bg-destructive\/90:hover {
  background-color: hsl(0 84.2% 60.2% / 0.9);
  background-color: hsl(var(--destructive) / 0.9);
}

.hover\:bg-primary\/90:hover {
  background-color: hsl(221.2 83.2% 53.3% / 0.9);
  background-color: hsl(var(--primary) / 0.9);
}

.hover\:bg-secondary\/80:hover {
  background-color: hsl(210 40% 96.1% / 0.8);
  background-color: hsl(var(--secondary) / 0.8);
}

.hover\:text-accent-foreground:hover {
  color: hsl(222.2 47.4% 11.2%);
  color: hsl(var(--accent-foreground));
}

.hover\:underline:hover {
  text-decoration-line: underline;
}

.focus-visible\:outline-none:focus-visible {
  outline: 2px solid transparent;
  outline-offset: 2px;
}

.focus-visible\:ring-2:focus-visible {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), 0 0 #0000;
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}

.focus-visible\:ring-ring:focus-visible {
  --tw-ring-color: hsl(var(--ring));
}

.focus-visible\:ring-offset-2:focus-visible {
  --tw-ring-offset-width: 2px;
}

.disabled\:pointer-events-none:disabled {
  pointer-events: none;
}

.disabled\:opacity-50:disabled {
  opacity: 0.5;
}

/**
 * color definitions
 */
.djs-parent {
  --color-grey-225-10-15: hsl(225, 10%, 15%);
  --color-grey-225-10-35: hsl(225, 10%, 35%);
  --color-grey-225-10-55: hsl(225, 10%, 55%);
  --color-grey-225-10-75: hsl(225, 10%, 75%);
  --color-grey-225-10-80: hsl(225, 10%, 80%);
  --color-grey-225-10-85: hsl(225, 10%, 85%);
  --color-grey-225-10-90: hsl(225, 10%, 90%);
  --color-grey-225-10-95: hsl(225, 10%, 95%);
  --color-grey-225-10-97: hsl(225, 10%, 97%);

  --color-blue-205-100-45: hsl(205, 100%, 45%);
  --color-blue-205-100-45-opacity-30: hsla(205, 100%, 45%, 30%);
  --color-blue-205-100-50: hsl(205, 100%, 50%);
  --color-blue-205-100-50-opacity-15: hsla(205, 100%, 50%, 15%);
  --color-blue-205-100-70: hsl(205, 100%, 75%);
  --color-blue-205-100-95: hsl(205, 100%, 95%);

  --color-green-150-86-44: hsl(150, 86%, 44%);

  --color-red-360-100-40: hsl(360, 100%, 40%);
  --color-red-360-100-45: hsl(360, 100%, 45%);
  --color-red-360-100-92: hsl(360, 100%, 92%);
  --color-red-360-100-97: hsl(360, 100%, 97%);

  --color-white: hsl(0, 0%, 100%);
  --color-black: hsl(0, 0%, 0%);
  --color-black-opacity-10: hsla(0, 0%, 0%, 10%);
  --color-black-opacity-30: hsla(0, 0%, 0%, 30%);

  --canvas-fill-color: var(--color-white);

  --bendpoint-fill-color: var(--color-blue-205-100-45);
  --bendpoint-stroke-color: var(--canvas-fill-color);

  --context-pad-entry-background-color: var(--color-white);
  --context-pad-entry-hover-background-color: var(--color-grey-225-10-95);

  --element-dragger-color: var(--color-blue-205-100-50);
  --element-hover-outline-fill-color: var(--color-blue-205-100-45);
  --element-selected-outline-stroke-color: var(--color-blue-205-100-50);
  --element-selected-outline-secondary-stroke-color: var(--color-blue-205-100-70);

  --lasso-fill-color: var(--color-blue-205-100-50-opacity-15);
  --lasso-stroke-color: var(--element-selected-outline-stroke-color);

  --palette-entry-color: var(--color-grey-225-10-15);
  --palette-entry-hover-color: var(--color-blue-205-100-45);
  --palette-entry-selected-color: var(--color-blue-205-100-50);
  --palette-separator-color: var(--color-grey-225-10-75);
  --palette-toggle-hover-background-color: var(--color-grey-225-10-55);
  --palette-background-color: var(--color-grey-225-10-97);
  --palette-border-color: var(--color-grey-225-10-75);

  --popup-font-family: "IBM Plex Sans", sans-serif;
  --popup-font-size: 14px;
  --popup-header-entry-selected-color: var(--color-blue-205-100-50);
  --popup-header-font-weight: bolder;
  --popup-header-group-divider-color: var(--color-grey-225-10-75);
  --popup-background-color: var(--color-white);
  --popup-border-color: transparent;
  --popup-shadow-color: var(--color-black-opacity-30);
  --popup-description-color: var(--color-grey-225-10-55);
  --popup-no-results-color: var(--color-grey-225-10-55);
  --popup-entry-title-color: var(--color-grey-225-10-55);
  --popup-entry-hover-color:  var(--color-grey-225-10-95);
  --popup-search-border-color: var(--color-grey-225-10-75);
  --popup-search-focus-border-color: var(--color-blue-205-100-50);
  --popup-search-focus-background-color: var(--color-blue-205-100-95);

  --resizer-fill-color: var(--color-blue-205-100-45);
  --resizer-stroke-color: var(--canvas-fill-color);

  --search-font-family: "IBM Plex Sans", sans-serif;
  --search-font-size: 14px;
  --search-container-background-color: var(--color-white);
  --search-shadow-color: var(--color-black-opacity-30);
  --search-input-border-color: var(--color-grey-225-10-75);
  --search-input-focus-border-color: var(--color-blue-205-100-50);
  --search-input-focus-background-color: var(--color-blue-205-100-95);
  --search-result-hover-background-color: var(--color-grey-225-10-95);
  --search-result-secondary-color: var(--color-grey-225-10-55);
  --search-preselected-background-color: var(--color-blue-205-100-50-opacity-15);

  --shape-attach-allowed-stroke-color: var(--color-blue-205-100-50);
  --shape-connect-allowed-fill-color: var(--color-grey-225-10-97);
  --shape-drop-allowed-fill-color: var(--color-grey-225-10-97);
  --shape-drop-not-allowed-fill-color: var(--color-red-360-100-97);
  --shape-resize-preview-stroke-color: var(--color-blue-205-100-50);

  --snap-line-stroke-color: var(--color-blue-205-100-45-opacity-30);

  --space-tool-crosshair-stroke-color: var(--color-black);

  --tooltip-error-background-color: var(--color-red-360-100-97);
  --tooltip-error-border-color: var(--color-red-360-100-45);
  --tooltip-error-color: var(--color-red-360-100-45);
}

/**
 * SVG styles
 */

.djs-container svg.drop-not-ok {
  background: var(--shape-drop-not-allowed-fill-color) !important;
}

.djs-container svg.new-parent {
  background: var(--shape-drop-allowed-fill-color) !important;
}

/**
 * outline styles
 */

.djs-outline,
.djs-selection-outline {
  fill: none;
  shape-rendering: geometricPrecision;
  stroke-width: 2px;
}

.djs-outline {
  visibility: hidden;
}

.djs-selection-outline {
  stroke: var(--element-selected-outline-stroke-color);
}

.djs-element.selected .djs-outline {
  visibility: visible;

  stroke: var(--element-selected-outline-stroke-color);
}

.djs-connection.selected .djs-outline {
  display: none;
}

.djs-multi-select .djs-element.selected .djs-outline {
  stroke: var(--element-selected-outline-secondary-stroke-color);
  display: block;
}

.djs-shape.connect-ok .djs-visual > :nth-child(1) {
  fill: var(--shape-connect-allowed-fill-color) !important;
}

.djs-shape.connect-not-ok .djs-visual > :nth-child(1),
.djs-shape.drop-not-ok .djs-visual > :nth-child(1) {
  fill: var(--shape-drop-not-allowed-fill-color) !important;
}

.djs-shape.new-parent .djs-visual > :nth-child(1) {
  fill: var(--shape-drop-allowed-fill-color) !important;
}


/* Override move cursor during drop and connect */
.drop-not-ok,
.connect-not-ok,
.drop-not-ok *,
.connect-not-ok * {
  cursor: not-allowed !important;
}

.drop-ok,
.connect-ok,
.drop-ok *,
.connect-ok * {
  cursor: default !important;
}

.djs-element.attach-ok .djs-visual > :nth-child(1) {
  stroke-width: 5px !important;
  stroke: var(--shape-attach-allowed-stroke-color) !important;
}

.djs-frame.connect-not-ok .djs-visual > :nth-child(1),
.djs-frame.drop-not-ok .djs-visual > :nth-child(1) {
  stroke-width: 3px !important;
  stroke: var(--shape-drop-not-allowed-fill-color) !important;
  fill: none !important;
}

/**
* Selection box style
*
*/
.djs-lasso-overlay {
  fill: var(--lasso-fill-color);
  stroke: var(--lasso-stroke-color);
  stroke-width: 2px;
  shape-rendering: geometricPrecision;
  pointer-events: none;
}

/**
 * Resize styles
 */
.djs-resize-overlay {
  fill: none;

  stroke-dasharray: 5 1 3 1;
  stroke: var(--shape-resize-preview-stroke-color);

  pointer-events: none;
}

.djs-resizer-hit {
  fill: none;
  pointer-events: all;
}

.djs-resizer-visual {
  fill: var(--resizer-fill-color);
  stroke-width: 1px;
  stroke: var(--resizer-stroke-color);
  shape-rendering: geometricPrecision;
}

.djs-resizer:hover .djs-resizer-visual {
  stroke: var(--resizer-stroke-color);
  stroke-opacity: 1;
}

.djs-cursor-resize-ns,
.djs-resizer-n,
.djs-resizer-s {
  cursor: ns-resize;
}

.djs-cursor-resize-ew,
.djs-resizer-e,
.djs-resizer-w {
  cursor: ew-resize;
}

.djs-cursor-resize-nwse,
.djs-resizer-nw,
.djs-resizer-se {
  cursor: nwse-resize;
}

.djs-cursor-resize-nesw,
.djs-resizer-ne,
.djs-resizer-sw {
  cursor: nesw-resize;
}

.djs-shape.djs-resizing > .djs-outline {
  visibility: hidden !important;
}

.djs-shape.djs-resizing > .djs-resizer {
  visibility: hidden;
}

.djs-dragger > .djs-resizer {
  visibility: hidden;
}

/**
 * drag styles
 */
.djs-dragger * {
  fill: none !important;
  stroke: var(--element-dragger-color) !important;
}

.djs-dragger tspan,
.djs-dragger text {
  fill: var(--element-dragger-color) !important;
  stroke: none !important;
}

.djs-dragger marker circle,
.djs-dragger marker path,
.djs-dragger marker polygon,
.djs-dragger marker polyline,
.djs-dragger marker rect {
  fill: var(--element-dragger-color) !important;
  stroke: none !important;
}

.djs-dragger marker text,
.djs-dragger marker tspan {
  fill: none !important;
  stroke: var(--element-dragger-color) !important;
}

.djs-dragging,
.djs-dragging > * {
  opacity: 0.3 !important;
  pointer-events: none !important;
}

/**
 * no pointer events for visual
 */
.djs-visual,
.djs-outline {
  pointer-events: none;
}

.djs-element.attach-ok .djs-hit {
  stroke-width: 60px !important;
}

/**
 * all pointer events for hit shape
 */
.djs-element > .djs-hit-all,
.djs-element > .djs-hit-no-move {
  pointer-events: all;
}

.djs-element > .djs-hit-stroke,
.djs-element > .djs-hit-click-stroke {
  pointer-events: stroke;
}

/**
 * shape / connection basic styles
 */
.djs-connection .djs-visual {
  stroke-width: 2px;
  fill: none;
}

.djs-cursor-grab {
  cursor: grab;
}

.djs-cursor-grabbing {
  cursor: grabbing;
}

.djs-cursor-crosshair {
  cursor: crosshair;
}

.djs-cursor-move {
  cursor: move;
}

.djs-cursor-resize-ns {
  cursor: ns-resize;
}

.djs-cursor-resize-ew {
  cursor: ew-resize;
}


/**
 * snapping
 */
.djs-snap-line {
  stroke: var(--snap-line-stroke-color);
  stroke-linecap: round;
  stroke-width: 2px;
  pointer-events: none;
}

/**
 * snapping
 */
.djs-crosshair {
  stroke: var(--space-tool-crosshair-stroke-color);
  stroke-linecap: round;
  stroke-width: 1px;
  pointer-events: none;
  shape-rendering: geometricPrecision;
  stroke-dasharray: 5, 5;
}

/**
 * palette
 */

.djs-palette {
  position: absolute;
  left: 20px;
  top: 20px;

  box-sizing: border-box;
  width: 48px;
}

.djs-palette .separator {
  margin: 5px;
  padding-top: 5px;

  border: none;
  border-bottom: solid 1px var(--palette-separator-color);

  clear: both;
}

.djs-palette .entry:before {
  vertical-align: baseline;
  vertical-align: initial;
}

.djs-palette .djs-palette-toggle {
  cursor: pointer;
}

.djs-palette .entry,
.djs-palette .djs-palette-toggle {
  color: var(--palette-entry-color);
  font-size: 30px;

  text-align: center;
}

.djs-palette .entry {
  float: left;
}

.djs-palette .entry img {
  max-width: 100%;
}

.djs-palette .djs-palette-entries:after {
  content: '';
  display: table;
  clear: both;
}

.djs-palette .djs-palette-toggle:hover {
  background: var(--palette-toggle-hover-background-color);
}

.djs-palette .entry:hover {
  color: var(--palette-entry-hover-color);
}

.djs-palette .highlighted-entry {
  color: var(--palette-entry-selected-color) !important;
}

.djs-palette .entry,
.djs-palette .djs-palette-toggle {
  width: 46px;
  height: 46px;
  line-height: 46px;
  cursor: default;
}

/**
 * Palette open / two-column layout is controlled via
 * classes on the palette. Events to hook into palette
 * changed life-cycle are available in addition.
 */
.djs-palette.two-column.open {
  width: 94px;
}

.djs-palette:not(.open) .djs-palette-entries {
  display: none;
}

.djs-palette:not(.open) {
  overflow: hidden;
}

.djs-palette.open .djs-palette-toggle {
  display: none;
}

/**
 * context-pad
 */
.djs-context-pad {
  position: absolute;
  display: none;
  pointer-events: none;
  line-height: 1;
  width: 72px;
  z-index: 100;
}

.djs-context-pad .entry {
  width: 22px;
  height: 22px;
  text-align: center;
  display: inline-block;
  font-size: 22px;
  margin: 0 2px 2px 0;

  border-radius: 3px;

  cursor: default;

  background-color: var(--context-pad-entry-background-color);
  box-shadow: 0 0 2px 1px var(--context-pad-entry-background-color);
  pointer-events: all;
  vertical-align: middle;
}

.djs-context-pad .entry:hover {
  background: var(--context-pad-entry-hover-background-color);
}

.djs-context-pad.open {
  display: block;
}

/**
 * popup styles
 */
.djs-popup {
  line-height: 1;
  box-sizing: border-box;
  width: min-content;
  background: var(--popup-background-color);
  overflow: hidden;
  position: fixed;
  z-index: 200;
  box-shadow: 0px 2px 6px var(--popup-shadow-color);
  border: solid 1px var(--popup-border-color);
  min-width: 120px;
  outline: none;
  font-size: var(--popup-font-size);
  font-family: var(--popup-font-family);
}

.djs-popup-search input {
  width: 100%;
  box-sizing: border-box;
  font-size: var(--popup-font-size);
  padding: 3px 6px 3px 28px;
  border-radius: 2px;
  border: solid 1px var(--popup-search-border-color);
  line-height: 21px;
}

.djs-popup-search input:focus {
  background-color: var(--popup-search-focus-background-color);
  border: solid 1px var(--popup-search-focus-border-color);
  outline: none;
}

.djs-popup-header {
  display: flex;
  align-items: stretch;
  line-height: 20px;
  margin: 10px 12px 10px 12px;
}

.djs-popup-header .entry {
  border-radius: 2px;
}

.djs-popup button.entry {
  padding: 0;
  background: transparent;
  border: 0;
}

.djs-popup-header .entry.active {
  color: var(--popup-header-entry-selected-color);
}

.djs-popup-header .entry.disabled {
  color: inherit;
}

.djs-popup-header-group {
  display: flex;
  flex-direction: row;
  align-items: center;
  list-style: none;
  margin: 0;
  padding: 0;
}

.djs-popup-header-group .entry {
  display: flex;
  flex-direction: row;
  align-items: center;
}

.djs-popup-header-group + .djs-popup-header-group:before {
  content: '';
  width: 1px;
  height: 20px;
  background: var(--popup-header-group-divider-color);
  margin: 0 5px;
}

.djs-popup-search {
  position: relative;
  width: auto;
  margin: 10px 12px;
}

.djs-popup-title {
  font-size: var(--popup-font-size);
  font-weight: var(--popup-header-font-weight);
  flex: 1 1;
  margin: 0;
}

.djs-popup-search-icon {
  position: absolute;
  left: 8px;
  top: 7px;
}

.djs-popup-results {
  margin: 7px 3px 7px 12px;
  list-style: none;
  max-height: 280px;
  overflow: auto;
  padding-right: 9px;
}

.djs-popup-group {
  margin: 0;
  padding: 0;
  width: 100%;
}

.djs-popup-body .entry,
.djs-popup-body .entry-header {
  padding: 5px 7px;
  cursor: default;
  border-radius: 4px;
}

.djs-popup-body .entry-header {
  font-weight: var(--popup-header-font-weight);
  color: var(--popup-entry-title-color);
  padding-left: 0;
}

.djs-popup [class*="icon"] .djs-popup-label,
.djs-popup-label:not(:first-child) {
  margin-left: .5em;
}

.djs-popup [class*="icon"]:before,
.djs-popup-entry-icon {
  width: 1em;
  height: 1em;
  display: inline-block;
  font-size: 1.4em;
  vertical-align: middle;
}

.djs-popup-body .entry-header:not(:first-child) {
  margin-top: 8px;
  margin-bottom: 2px;
}

.djs-popup-body .entry {
  display: flex;
  flex-direction: row;
  align-items: stretch;
  height: min-content;
}

.djs-popup .entry.selected {
  background-color: var(--popup-entry-hover-color);
}

.djs-popup-body .entry:not(:first-child) {
  margin-top: 2px;
}

.djs-popup-entry-content {
  display: flex;
  flex-direction: column;
  flex: 1 1;
  overflow: hidden;
}

.djs-popup-entry-description {
  color: var(--popup-description-color);
}

.djs-popup-label,
.djs-popup-entry-description {
  line-height: 1.4em;
}

.djs-popup .entry,
.djs-popup .entry-header {
  margin: 1px;
}

.djs-popup-title,
.djs-popup-label,
.djs-popup-entry-description,
.djs-popup .entry-header {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.djs-popup-entry-name {
  display: flex;
}

.djs-popup-body {
  flex-direction: column;
  width: auto;
}

.djs-popup *::-webkit-scrollbar {
  width: 6px;
}

.djs-popup *::-webkit-scrollbar-thumb {
  border-radius: 3px;
  background-color: rgba(0, 0, 0, 0.2);
}

.djs-popup *::-webkit-scrollbar-track {
  box-shadow: none;
  background: transparent;
  margin: 0;
  padding: 5px;
}

.djs-popup-no-results {
  padding: 0 12px 12px 12px;
  color: var(--popup-no-results-color);
}

.djs-popup-entry-docs {
  flex: 0 1;
  flex-direction: row;
  align-items: center;
  padding-left: 5px;
  display: none;
}

.djs-popup-body .entry:hover .djs-popup-entry-docs {
  display: flex;
}

.djs-popup-entry-docs svg {
  vertical-align: middle;
  margin: auto 2px auto 5px;
}

/**
 *  palette styles
 */
.djs-palette {
  background: var(--palette-background-color);
  border: solid 1px var(--palette-border-color);
  border-radius: 2px;
}

/**
 * bendpoints
 */
.djs-segment-dragger,
.djs-bendpoint {
  display: none;
}

.djs-segment-dragger .djs-visual {
  display: none;

  fill: var(--bendpoint-fill-color);
  stroke: var(--bendpoint-stroke-color);
  stroke-width: 1px;
  stroke-opacity: 1;
}

.djs-segment-dragger:hover .djs-visual {
  display: block;
}

.djs-bendpoint .djs-visual {
  fill: var(--bendpoint-fill-color);
  stroke: var(--bendpoint-stroke-color);
  stroke-width: 1px;
}

.djs-segment-dragger:hover,
.djs-bendpoints.hover .djs-segment-dragger,
.djs-bendpoints.selected .djs-segment-dragger,
.djs-bendpoint:hover,
.djs-bendpoints.hover .djs-bendpoint,
.djs-bendpoints.selected .djs-bendpoint {
  display: block;
}

.djs-drag-active .djs-bendpoints * {
  display: none;
}

.djs-bendpoints:not(.hover) .floating {
  display: none;
}

.djs-segment-dragger:hover .djs-visual,
.djs-segment-dragger.djs-dragging .djs-visual,
.djs-bendpoint:hover .djs-visual,
.djs-bendpoint.floating .djs-visual {
  fill: var(--bendpoint-fill-color);
  stroke: var(--bendpoint-stroke-color);
  stroke-opacity: 1;
}

.djs-bendpoint.floating .djs-hit {
  pointer-events: none;
}

.djs-segment-dragger .djs-hit,
.djs-bendpoint .djs-hit {
  fill: none;
  pointer-events: all;
}

.djs-segment-dragger.horizontal .djs-hit {
  cursor: ns-resize;
}

.djs-segment-dragger.vertical .djs-hit {
  cursor: ew-resize;
}

.djs-segment-dragger.djs-dragging .djs-hit {
  pointer-events: none;
}

.djs-updating,
.djs-updating > * {
  pointer-events: none !important;
}

.djs-updating .djs-context-pad,
.djs-updating .djs-outline,
.djs-updating .djs-bendpoint,
.djs-multi-select .djs-bendpoint,
.djs-multi-select .djs-segment-dragger,
.connect-ok .djs-bendpoint,
.connect-not-ok .djs-bendpoint,
.drop-ok .djs-bendpoint,
.drop-not-ok .djs-bendpoint {
  display: none !important;
}

.djs-segment-dragger.djs-dragging,
.djs-bendpoint.djs-dragging {
  display: block;
  opacity: 1.0;
}


/**
 * tooltips
 */
.djs-tooltip-error {
  width: 160px;
  padding: 6px;

  background: var(--tooltip-error-background-color);
  border: solid 1px var(--tooltip-error-border-color);
  border-radius: 2px;
  color: var(--tooltip-error-color);
  font-size: 12px;
  line-height: 16px;

  opacity: 0.75;
}

.djs-tooltip-error:hover {
  opacity: 1;
}


/**
 * search pad
 */
.djs-search-open .djs-context-pad {
  display: none;
}

.djs-search-open .djs-connection.selected .djs-outline {
  display: block;
}

.djs-search-container {
  position: absolute;
  top: 20px;
  left: 0;
  right: 0;
  margin-left: auto;
  margin-right: auto;

  width: 25%;
  min-width: 300px;
  max-width: 400px;
  z-index: 10;

  font-family: var(--search-font-family);
  font-size: var(--search-font-size);
  border-radius: 2px;
  box-shadow: 0px 2px 6px var(--search-shadow-color);
}

.djs-search-container:not(.open) {
  display: none;
}

.djs-search-input {
  position: relative;
}

.djs-search-input svg {
  position: absolute;
  left: 8px;
  top: 7px;
}

.djs-search-input input {
  font-size: var(--search-font-size);
  width: 100%;
  padding: 3px 6px 3px 28px;
  border: 1px solid var(--search-input-border-color);
  border-radius: 2px;
  box-sizing: border-box;
  line-height: 21px;
}

.djs-search-input input:focus {
  background-color: var(--search-input-focus-background-color);
  border: solid 1px var(--search-input-focus-border-color);
  outline: none;
}

.djs-search-results {
  position: relative;
  overflow-y: auto;
  max-height: 200px;
  background: var(--search-container-background-color);
}

.djs-search-result {
  padding: 6px 8px;
}

.djs-search-result-primary {
  margin: 0 0 3px;
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
}

.djs-search-result-secondary {
  font-family: monospace;
  margin: 0;
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
  color: var(--search-result-secondary-color);
}

.djs-search-result:hover {
  background: var(--search-result-hover-background-color);
}

.djs-search-result-selected {
  background: var(--search-result-hover-background-color);
}

.djs-search-result-selected:hover {
  background: var(--search-result-hover-background-color);
}

.djs-search-open .djs-element .djs-outline {
  fill: var(--search-preselected-background-color) !important;
}

/**
 * hidden styles
 */
.djs-element-hidden,
.djs-element-hidden .djs-hit,
.djs-element-hidden .djs-outline,
.djs-label-hidden .djs-label {
  display: none !important;
}

.djs-element .djs-hit-stroke,
.djs-element .djs-hit-click-stroke,
.djs-element .djs-hit-all {
  cursor: move;
}
@charset "utf-8";
@font-face {
  font-family: 'bpmn';
  src: url(/static/media/bpmn.1e08c7f04f4855050724.eot);
  src: url(/static/media/bpmn.1e08c7f04f4855050724.eot#iefix) format('embedded-opentype'),
       url(/static/media/bpmn.9c989372615cb2cfbaa6.woff2) format('woff2'),
       url(/static/media/bpmn.8809b45a3f0566911799.woff) format('woff'),
       url(/static/media/bpmn.2185c437d9db32386425.ttf) format('truetype'),
       url(/static/media/bpmn.cb4be0230caf509ac475.svg#bpmn) format('svg');
  font-weight: normal;
  font-style: normal;
}
/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
/*
@media screen and (-webkit-min-device-pixel-ratio:0) {
  @font-face {
    font-family: 'bpmn';
    src: url('../font/bpmn.svg?21877404#bpmn') format('svg');
  }
}
*/
[class^="bpmn-icon-"]:before, [class*=" bpmn-icon-"]:before {
  font-family: "bpmn";
  font-style: normal;
  font-weight: normal;
  speak: never;

  display: inline-block;
  text-decoration: inherit;
  width: 1em;
  /* margin-right: .2em; */
  text-align: center;
  /* opacity: .8; */

  /* For safety - reset parent styles, that can break glyph codes*/
  font-feature-settings: normal;
  font-variant: normal;
  text-transform: none;

  /* fix buttons height, for twitter bootstrap */
  line-height: 1em;

  /* Animation center compensation - margins should be symmetric */
  /* remove if not needed */
  /* margin-left: .2em; */

  /* you can be more comfortable with increased icons size */
  /* font-size: 120%; */

  /* Font smoothing. That was taken from TWBS */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;

  /* Uncomment for 3D effect */
  /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
}

.bpmn-icon-trash:before { content: '\e801'; } /* '' */
.bpmn-icon-gateway-parallel:before { content: '\e804'; } /* '' */
.bpmn-icon-intermediate-event-catch-cancel:before { content: '\e805'; } /* '' */
.bpmn-icon-intermediate-event-catch-non-interrupting-message:before { content: '\e806'; } /* '' */
.bpmn-icon-start-event-compensation:before { content: '\e807'; } /* '' */
.bpmn-icon-start-event-non-interrupting-parallel-multiple:before { content: '\e808'; } /* '' */
.bpmn-icon-loop-marker:before { content: '\e809'; } /* '' */
.bpmn-icon-parallel-mi-marker:before { content: '\e80a'; } /* '' */
.bpmn-icon-start-event-non-interrupting-signal:before { content: '\e80b'; } /* '' */
.bpmn-icon-intermediate-event-catch-non-interrupting-timer:before { content: '\e80c'; } /* '' */
.bpmn-icon-intermediate-event-catch-parallel-multiple:before { content: '\e80d'; } /* '' */
.bpmn-icon-intermediate-event-catch-compensation:before { content: '\e80e'; } /* '' */
.bpmn-icon-gateway-xor:before { content: '\e80f'; } /* '' */
.bpmn-icon-end-event-cancel:before { content: '\e811'; } /* '' */
.bpmn-icon-intermediate-event-catch-condition:before { content: '\e812'; } /* '' */
.bpmn-icon-intermediate-event-catch-non-interrupting-parallel-multiple:before { content: '\e813'; } /* '' */
.bpmn-icon-start-event-condition:before { content: '\e814'; } /* '' */
.bpmn-icon-start-event-non-interrupting-timer:before { content: '\e815'; } /* '' */
.bpmn-icon-sequential-mi-marker:before { content: '\e816'; } /* '' */
.bpmn-icon-user-task:before { content: '\e817'; } /* '' */
.bpmn-icon-business-rule:before { content: '\e818'; } /* '' */
.bpmn-icon-sub-process-marker:before { content: '\e819'; } /* '' */
.bpmn-icon-start-event-parallel-multiple:before { content: '\e81a'; } /* '' */
.bpmn-icon-start-event-error:before { content: '\e81b'; } /* '' */
.bpmn-icon-intermediate-event-catch-signal:before { content: '\e81c'; } /* '' */
.bpmn-icon-intermediate-event-catch-error:before { content: '\e81d'; } /* '' */
.bpmn-icon-end-event-compensation:before { content: '\e81e'; } /* '' */
.bpmn-icon-subprocess-collapsed:before { content: '\e81f'; } /* '' */
.bpmn-icon-subprocess-expanded:before { content: '\e820'; } /* '' */
.bpmn-icon-task:before { content: '\e821'; } /* '' */
.bpmn-icon-end-event-error:before { content: '\e822'; } /* '' */
.bpmn-icon-intermediate-event-catch-escalation:before { content: '\e823'; } /* '' */
.bpmn-icon-intermediate-event-catch-timer:before { content: '\e824'; } /* '' */
.bpmn-icon-start-event-escalation:before { content: '\e825'; } /* '' */
.bpmn-icon-start-event-signal:before { content: '\e826'; } /* '' */
.bpmn-icon-business-rule-task:before { content: '\e827'; } /* '' */
.bpmn-icon-manual:before { content: '\e828'; } /* '' */
.bpmn-icon-receive:before { content: '\e829'; } /* '' */
.bpmn-icon-call-activity:before { content: '\e82a'; } /* '' */
.bpmn-icon-start-event-timer:before { content: '\e82b'; } /* '' */
.bpmn-icon-start-event-message:before { content: '\e82c'; } /* '' */
.bpmn-icon-intermediate-event-none:before { content: '\e82d'; } /* '' */
.bpmn-icon-intermediate-event-catch-link:before { content: '\e82e'; } /* '' */
.bpmn-icon-end-event-escalation:before { content: '\e82f'; } /* '' */
.bpmn-icon-bpmn-io:before { content: '\e831'; } /* '' */
.bpmn-icon-gateway-complex:before { content: '\e832'; } /* '' */
.bpmn-icon-gateway-eventbased:before { content: '\e833'; } /* '' */
.bpmn-icon-gateway-none:before { content: '\e834'; } /* '' */
.bpmn-icon-gateway-or:before { content: '\e835'; } /* '' */
.bpmn-icon-end-event-terminate:before { content: '\e836'; } /* '' */
.bpmn-icon-end-event-signal:before { content: '\e837'; } /* '' */
.bpmn-icon-end-event-none:before { content: '\e838'; } /* '' */
.bpmn-icon-end-event-multiple:before { content: '\e839'; } /* '' */
.bpmn-icon-end-event-message:before { content: '\e83a'; } /* '' */
.bpmn-icon-end-event-link:before { content: '\e83b'; } /* '' */
.bpmn-icon-intermediate-event-catch-message:before { content: '\e83c'; } /* '' */
.bpmn-icon-intermediate-event-throw-compensation:before { content: '\e83d'; } /* '' */
.bpmn-icon-start-event-multiple:before { content: '\e83e'; } /* '' */
.bpmn-icon-script:before { content: '\e83f'; } /* '' */
.bpmn-icon-manual-task:before { content: '\e840'; } /* '' */
.bpmn-icon-send:before { content: '\e841'; } /* '' */
.bpmn-icon-service:before { content: '\e842'; } /* '' */
.bpmn-icon-receive-task:before { content: '\e843'; } /* '' */
.bpmn-icon-user:before { content: '\e844'; } /* '' */
.bpmn-icon-start-event-none:before { content: '\e845'; } /* '' */
.bpmn-icon-intermediate-event-throw-escalation:before { content: '\e846'; } /* '' */
.bpmn-icon-intermediate-event-catch-multiple:before { content: '\e847'; } /* '' */
.bpmn-icon-intermediate-event-catch-non-interrupting-escalation:before { content: '\e848'; } /* '' */
.bpmn-icon-intermediate-event-throw-link:before { content: '\e849'; } /* '' */
.bpmn-icon-start-event-non-interrupting-condition:before { content: '\e84a'; } /* '' */
.bpmn-icon-data-object:before { content: '\e84b'; } /* '' */
.bpmn-icon-script-task:before { content: '\e84c'; } /* '' */
.bpmn-icon-send-task:before { content: '\e84d'; } /* '' */
.bpmn-icon-data-store:before { content: '\e84e'; } /* '' */
.bpmn-icon-start-event-non-interrupting-escalation:before { content: '\e84f'; } /* '' */
.bpmn-icon-intermediate-event-throw-message:before { content: '\e850'; } /* '' */
.bpmn-icon-intermediate-event-catch-non-interrupting-multiple:before { content: '\e851'; } /* '' */
.bpmn-icon-intermediate-event-catch-non-interrupting-signal:before { content: '\e852'; } /* '' */
.bpmn-icon-intermediate-event-throw-multiple:before { content: '\e853'; } /* '' */
.bpmn-icon-start-event-non-interrupting-message:before { content: '\e854'; } /* '' */
.bpmn-icon-ad-hoc-marker:before { content: '\e855'; } /* '' */
.bpmn-icon-service-task:before { content: '\e856'; } /* '' */
.bpmn-icon-task-none:before { content: '\e857'; } /* '' */
.bpmn-icon-compensation-marker:before { content: '\e858'; } /* '' */
.bpmn-icon-start-event-non-interrupting-multiple:before { content: '\e859'; } /* '' */
.bpmn-icon-intermediate-event-throw-signal:before { content: '\e85a'; } /* '' */
.bpmn-icon-intermediate-event-catch-non-interrupting-condition:before { content: '\e85b'; } /* '' */
.bpmn-icon-participant:before { content: '\e85c'; } /* '' */
.bpmn-icon-event-subprocess-expanded:before { content: '\e85d'; } /* '' */
.bpmn-icon-lane-insert-below:before { content: '\e85e'; } /* '' */
.bpmn-icon-space-tool:before { content: '\e85f'; } /* '' */
.bpmn-icon-connection-multi:before { content: '\e860'; } /* '' */
.bpmn-icon-lane:before { content: '\e861'; } /* '' */
.bpmn-icon-lasso-tool:before { content: '\e862'; } /* '' */
.bpmn-icon-lane-insert-above:before { content: '\e863'; } /* '' */
.bpmn-icon-lane-divide-three:before { content: '\e864'; } /* '' */
.bpmn-icon-lane-divide-two:before { content: '\e865'; } /* '' */
.bpmn-icon-data-input:before { content: '\e866'; } /* '' */
.bpmn-icon-data-output:before { content: '\e867'; } /* '' */
.bpmn-icon-hand-tool:before { content: '\e868'; } /* '' */
.bpmn-icon-group:before { content: '\e869'; } /* '' */
.bpmn-icon-text-annotation:before { content: '\e86b'; } /* '' */
.bpmn-icon-transaction:before { content: '\e8c4'; } /* '' */
.bpmn-icon-screw-wrench:before { content: '\e8db'; } /* '' */
.bpmn-icon-connection:before { content: '\e8dc'; } /* '' */
.bpmn-icon-conditional-flow:before { content: '\e8e0'; } /* '' */
.bpmn-icon-default-flow:before { content: '\e8e1'; } /* '' */

/* BpmnViewer.css */

/* BPMN 뷰어 컨테이너 */
.bpmn-viewer-container {
  display: flex;
  flex-direction: column;
  position: relative;
  height: 100%;
  width: 100%;
  overflow: hidden;
  background-color: #ffffff;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}

/* 캔버스 영역 */
.bpmn-canvas-area {
  flex: 1 1;
  overflow: hidden;
  position: relative;
  padding-bottom: 50px; /* 하단 컨트롤을 위한 여백 */
}

/* 에러 메시지 */
.bpmn-error-message {
  position: absolute;
  top: 10px;
  left: 10px;
  right: 10px;
  padding: 10px;
  background-color: #ffebee;
  color: #c62828;
  border-radius: 4px;
  z-index: 100;
  font-size: 14px;
}

/* 새로운 편집 툴바 */
.bpmn-toolbar {
  display: flex;
  padding: 6px 8px;
  background-color: #f5f5f5;
  border-bottom: 1px solid #e0e0e0;
}

/* 컨트롤 영역 (하단) */
.bpmn-controls-area {
  display: flex !important;
  justify-content: space-between !important;
  padding: 6px 10px !important;
  background-color: rgba(245, 245, 245, 0.95) !important;
  border-top: 1px solid #e0e0e0 !important;
  position: fixed !important;
  bottom: 0 !important;
  left: 0 !important;
  right: 0 !important;
  z-index: 9999 !important;
  box-shadow: 0 -2px 5px rgba(0,0,0,0.1) !important;
  visibility: visible !important;
  opacity: 1 !important;
}

/* 줌 컨트롤 */
.bpmn-zoom-controls {
  display: flex;
  align-items: center;
  gap: 4px;
}

/* 액션 버튼 */
.bpmn-action-buttons {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  background-color: rgba(255, 255, 255, 0.9) !important;
  padding: 5px !important;
  border-radius: 4px !important;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1) !important;
  visibility: visible !important;
  opacity: 1 !important;
}

/* 컨트롤 버튼 공통 스타일 */
.bpmn-control-button {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-width: 32px !important;
  height: 32px !important;
  padding: 0 8px !important;
  background-color: #ffffff !important;
  border: 1px solid #e0e0e0 !important;
  border-radius: 4px !important;
  color: #424242 !important;
  font-size: 13px !important;
  cursor: pointer !important;
  transition: all 0.2s !important;
  visibility: visible !important;
  opacity: 1 !important;
}

/* 버튼 호버 효과 */
.bpmn-control-button:hover {
  background-color: #f5f9ff;
  border-color: #4285f4;
}

/* SVG 아이콘 크기 조정 */
.bpmn-control-button svg {
  width: 16px;
  height: 16px;
}

/* 다이어그램 컨테이너 스타일 */
.diagram-container {
  position: relative;
  overflow: hidden;
  width: 100%;
  height: 100%;
}

/* 이벤트 색상 클래스들 */
.event-start-color {
  background-color: #cfe4fa;
}

.event-activity-color {
  background-color: #e2f0d9;
}

.event-end-color {
  background-color: #fbe5d5;
}

/* 페이지 네비게이션 버튼 */
.page-navigation {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  background-color: rgba(255, 255, 255, 0.8);
  border: 1px solid #e0e0e0;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  z-index: 100;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  transition: all 0.2s;
}

.page-navigation:hover {
  background-color: #f5f9ff;
  border-color: #4285f4;
  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.15);
}

.page-navigation.prev {
  left: 15px;
}

.page-navigation.next {
  right: 15px;
}

.page-navigation svg {
  width: 24px;
  height: 24px;
  fill: #424242;
}

/* bpmn.js 팔레트 커스터마이징 */
.djs-palette {
  background-color: #ffffff !important;
  border-color: #e0e0e0 !important;
}

.djs-palette .entry:hover {
  background-color: #f5f9ff !important;
}

/* bpmn.js 컨텍스트 메뉴 커스터마이징 */
.djs-context-pad {
  background-color: #ffffff !important;
}

.djs-context-pad .entry:hover {
  background-color: #f5f9ff !important;
}

/* BPMN.io 기본 스타일 */
.djs-container {
  background-color: transparent !important; /* 캔버스 영역 배경은 canvas-area에서 관리 */
}

.djs-container svg {
  width: 100%;
  height: 100%;
}

/* 연결선 스타일 (선명하게) */
.djs-connection .djs-visual path {
  stroke: #333;
  stroke-width: 2px;
  stroke-linejoin: miter; /* round에서 miter로 변경하여 더 직선적으로 */
  stroke-linecap: butt; /* round에서 butt로 변경하여 더 직선적으로 */
  fill: none;
  /* 선이 겹치지 않도록 투명도 조정 */
  opacity: 0.95;
}

.djs-connection.selected .djs-visual path,
.djs-connection:hover .djs-visual path {
  stroke: #0d6efd; /* 파란색 강조 */
  stroke-width: 2.5px;
  opacity: 1;
  /* 선택된 선이 위에 표시되도록 z-index 조정 */
  position: relative;
  z-index: 10;
}

.djs-connection .djs-hit {
  stroke: rgba(0,0,0,0.1);
  stroke-width: 12px;
  fill: none;
}

/* 연결선 겹침 방지 */
.djs-connection {
  /* 연결선 간 적절한 간격 유지 */
  stroke-dasharray: none;
}

/* 화살표 마커 개선 */
.djs-connection .djs-visual marker {
  fill: #333;
  stroke: #333;
}

/* 연결선 간격 개선 - 겹치는 선들 처리 */
.djs-connection:nth-child(odd) .djs-visual path {
  stroke-dasharray: none;
}

.djs-connection:nth-child(even) .djs-visual path {
  stroke-dasharray: none;
  /* 약간의 offset으로 겹치는 선 구분 */
  transform: translateY(1px);
}

/* 게이트웨이에서 나오는 연결선 스타일 개선 */
.djs-connection[data-element-id*="gateway"] .djs-visual path,
.djs-connection[data-element-id*="Gateway"] .djs-visual path {
  stroke-width: 2px;
  stroke: #2563eb;
}

/* 분기 연결선들의 색상 차별화 */
.djs-connection:nth-child(3n+1) .djs-visual path {
  stroke: #333;
}

.djs-connection:nth-child(3n+2) .djs-visual path {
  stroke: #1f2937;
}

.djs-connection:nth-child(3n+3) .djs-visual path {
  stroke: #374151;
}

/* 마커 (화살표) */
.djs-connection-marker {
  fill: #333;
  stroke: none;
}

/* 텍스트 스타일 */
.djs-label,
.djs-direct-editing-content {
  font-family: 'Noto Sans KR', sans-serif; /* Noto Sans KR 적용 */
  font-size: 14px; /* 글씨 크기 키움 (12px -> 14px) */
  font-weight: 500; /* 살짝 더 굵게 */
  fill: #111;
  color: #111;
}

/* 라벨 백그라운드 */
.djs-label-name {
  fill: rgba(255, 255, 255, 0.9); 
}

/* 특정 요소별 텍스트 크기 조정 */
/* 시작 이벤트, 종료 이벤트는 더 작게 */
.bpmn-icon-start-event-none text,
.bpmn-icon-end-event-none text {
  font-size: 12px;
}

/* 태스크/액티비티는 더 크게 */
.bpmn-icon-task text,
.bpmn-icon-service-task text,
.bpmn-icon-user-task text,
.bpmn-icon-manual-task text,
.bpmn-icon-business-rule-task text {
  font-size: 15px;
  font-weight: 600;
}

/* 게이트웨이에는 큰 텍스트 */
.bpmn-icon-gateway-none text,
.bpmn-icon-gateway-parallel text,
.bpmn-icon-gateway-xor text,
.bpmn-icon-gateway-or text,
.bpmn-icon-gateway-complex text {
  font-size: 13px;
  font-weight: 500;
}

/* 기본 도형 스타일 */
.djs-shape .djs-visual > :nth-child(1) {
  fill: white;
  stroke: #333;
  stroke-width: 1.5px;
}

/* 선택 시 아웃라인 (BPMN 기본 사용) */
.djs-shape.selected .djs-outline {
  stroke: #0d6efd;
  stroke-width: 2px;
}

/* 뷰어 관련 불필요한 스타일 제거 */
/* .bento-* 클래스, 이전 복잡한 .djs-* 오버라이드 제거 */

/* BPMN.io 로고 스타일 수정 */
.bjs-powered-by {
  position: absolute;
  bottom: 15px !important; /* 컨트롤 영역 높이 고려 */
  right: 15px !important;
}

/* 폰트 크기 컨트롤 관련 스타일 */
.bpmn-separator {
  display: inline-block;
  width: 1px;
  height: 24px;
  background-color: #e0e0e0;
  margin: 0 6px;
}

.font-control {
  background-color: #f5f5f5 !important;
}

.font-control:hover {
  background-color: #e2f2ff !important;
}

/* 큰 텍스트 모드 */
.bpmn-large-text .djs-label,
.bpmn-large-text .djs-direct-editing-content {
  font-size: 16px !important;
  font-weight: 500 !important;
}

/* 큰 텍스트 모드의 요소별 설정 */
.bpmn-large-text .bpmn-icon-task text,
.bpmn-large-text .bpmn-icon-service-task text,
.bpmn-large-text .bpmn-icon-user-task text,
.bpmn-large-text .bpmn-icon-manual-task text,
.bpmn-large-text .bpmn-icon-business-rule-task text {
  font-size: 18px !important;
  font-weight: 600 !important;
}

.bpmn-large-text .bpmn-icon-gateway-none text,
.bpmn-large-text .bpmn-icon-gateway-parallel text,
.bpmn-large-text .bpmn-icon-gateway-xor text,
.bpmn-large-text .bpmn-icon-gateway-or text,
.bpmn-large-text .bpmn-icon-gateway-complex text {
  font-size: 16px !important;
}

/* SVG 텍스트 요소 직접 설정 */
.bpmn-large-text svg text {
  font-size: 1.2em !important;
} 
    /* 웹폰트 임포트 */

    /* 전체 앱 스타일 */
    body {
    margin: 0;
    padding: 0;
    font-family: 'Noto Sans KR', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    background: linear-gradient(135deg, #f0f4ff 0%, #f8faff 100%);
    color: #333;
    overflow-x: hidden;
    min-height: 100vh;
    }

    .App {
    text-align: center;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    position: relative;
    }

    .App::before {
    content: '';
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: radial-gradient(circle at 50% -20%, rgba(255, 255, 255, 0.15), transparent 80%);
    pointer-events: none;
    z-index: 0;
    }

    /* 수정된 헤더 스타일 */
    .app-header-container {
    padding: 2rem 3rem;
    position: sticky;
    top: 0;
    z-index: 100;
    background: rgba(248, 250, 255, 0.85);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    border-bottom: 1px solid rgba(226, 232, 240, 0.3);
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    }

    /* 스크롤 시 헤더 스타일 */
    .app-header-container.scrolled {
    padding: 1.5rem 3rem;
    background: rgba(248, 250, 255, 0.95);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
    }

    .app-header-content {
    max-width: 1800px;
    margin: 0 auto;
    text-align: left;
    }

    .app-header-content h1 {
    color: #1e3a8a;
    font-size: 2.5rem;
    margin: 0 0 0.25rem 0;
    font-weight: 700;
    letter-spacing: -0.02em;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    }

    .app-header-content p {
    color: #374151;
    margin: 0;
    font-size: 1.1rem;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    line-height: 1.4;
    }

    /* --- 스크롤 시 스타일 --- */
    /* 빈 규칙 집합 제거 */
    
    .app-header-container.scrolled .app-header-content h1 {
    font-size: 2.1rem;
    margin-bottom: 0.1rem;
    }

    .app-header-container.scrolled .app-header-content p {
    font-size: 1.0rem;
    opacity: 0.85;
    }

    /* 패널 높이 조정을 위한 스타일 */
    .grid.md\:grid-cols-2 {
    align-items: stretch; /* 그리드 아이템 높이를 동일하게 */
    }

    .card {
    display: flex;
    flex-direction: column; /* 카드 내부 요소 세로 정렬 */
    height: 100%; /* 부모 높이에 맞춤 */
    }

    .process-input textarea {
    flex-grow: 1; /* textarea가 남은 공간 차지 */
    }

    /* BPMN 뷰어 여백 추가 */
    .bpmn-viewer-container {
    margin: 1rem;
    position: relative; 
    width: calc(100% - 2rem);
    height: calc(100% - 2rem);
    min-height: 955px; /* 높이 조정 (550px -> 950px) */
    display: flex;
    flex-direction: column;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    overflow: hidden; /* auto -> hidden으로 변경하여 스크롤 제거 */
    background-color: #ffffff; 
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
    }

    .bpmn-canvas-area {
    padding: 10px;
    flex-grow: 1;
    position: relative;
    overflow: hidden; /* auto -> hidden으로 변경하여 스크롤 제거 */
    min-height: 800px; /* 최소 높이 조정 (500px -> 900px) */
    }

    /* BPMN 레인 레이어 순위 조정 */
    .bpmn-canvas-area .djs-container {
    position: relative;
    z-index: 1;
    }

    .bpmn-canvas-area .djs-layer {
    position: absolute;
    z-index: 2;
    }

    .bpmn-canvas-area .djs-layer.djs-collaboration-layer {
    z-index: 3;
    }

    .bpmn-canvas-area .djs-layer.djs-shape-layer {
    z-index: 4;
    }

    .bpmn-canvas-area .djs-layer.djs-connection-layer {
    z-index: 5;
    }

    /* 다이어그램 컨트롤러 영역 스타일 */
    .diagram-controls {
    display: flex;
    justify-content: flex-end; /* 버튼들을 오른쪽으로 정렬 (기존 유지) */
    align-items: center;
    padding: 0.5rem 1rem;
    border-top: 1px solid rgba(226, 232, 240, 0.4);
    background-color: rgba(248, 250, 252, 0.7);
    height: 50px; /* 컨트롤러 높이 고정 */
    flex-shrink: 0; /* 컨트롤러 영역 크기 고정 */
    gap: 0.5rem; /* 버튼 사이 간격 추가 */
    }

    /* 컨트롤 버튼 기본 스타일 (필요 시 추가) */
    .diagram-controls button {
    background-color: #fff;
    border: 1px solid #d1d5db;
    border-radius: 6px;
    padding: 0.4rem 0.8rem;
    font-size: 0.85rem;
    cursor: pointer;
    transition: background-color 0.2s, box-shadow 0.2s;
    line-height: 1;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
    }

    .diagram-controls button:hover {
    background-color: #f9fafb;
    border-color: #b4b9c1;
    }

    .diagram-controls button:active {
    background-color: #f3f4f6;
    box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
    }

    .app-container {
    display: flex;
    width: 100%;
    max-width: 1800px;
    margin: 0 auto;
    padding: 1.2rem;
    box-sizing: border-box;
    gap: 1.5rem;
    min-height: calc(100vh - 120px);
    position: relative;
    z-index: 1;
    /* height: calc(100vh - 120px); */ /* 고정 높이 제거 */
    /* overflow: hidden; */ /* 오버플로우 제거 - 전체 페이지는 스크롤 가능하게 */
    }

    /* 왼쪽 패널 (30%) */
    .left-panel {
    width: 30%;
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    /* position: sticky; */ /* 고정 위치 제거 */
    /* top: 120px; */ /* 고정 위치 제거 */
    height: auto; /* 자동 높이로 변경 */
    /* max-height: 800px; */ /* 최대 높이 제한 제거 */
    }

    /* 입력 섹션 (왼쪽 패널의 50%) */
    .input-section {
    /* flex: 1; 제거 - 비율 대신 최소 높이와 textarea 확장 사용 */
    display: flex;
    flex-direction: column;
    gap: 0.8rem;
    background: rgba(255, 255, 255, 0.7);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    padding: 1.5rem;
    border-radius: 12px;
    box-shadow: 
        0 4px 6px -1px rgba(0, 0, 0, 0.05),
        0 2px 4px -1px rgba(0, 0, 0, 0.03),
        inset 0 0 0 1px rgba(255, 255, 255, 0.15);
    height: 550px; /* 고정 높이 설정 (550px) */
    min-height: 250px; /* 최소 높이 유지 */
    border: 1px solid rgba(226, 232, 240, 0.4);
    }

    /* 프로세스 설명 섹션 (왼쪽 패널의 50%) */
    .process-explanation-section {
    /* flex: 1; 제거 - 고정 높이 사용 */
    background: rgba(255, 255, 255, 0.7);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    padding: 1.5rem;
    border-radius: 12px;
    box-shadow: 
        0 4px 6px -1px rgba(0, 0, 0, 0.05),
        0 2px 4px -1px rgba(0, 0, 0, 0.03),
        inset 0 0 0 1px rgba(255, 255, 255, 0.15);
    height: 550px; /* 고정 높이 설정 (400px -> 550px) */
    min-height: 250px;
    display: flex; /* 내부 요소를 flex로 배치 */
    flex-direction: column; /* 세로 방향 배치 */
    border: 1px solid rgba(226, 232, 240, 0.4);
    overflow: hidden; /* 이 요소 자체의 넘침은 숨김 */
    }

    /* AI 설명 컨테이너 */
    .ai-description {
    flex: 1 1; /* 헤더 제외 남은 공간 모두 차지 */
    background: rgba(248, 250, 252, 0.5);
    -webkit-backdrop-filter: blur(5px);
    backdrop-filter: blur(5px);
    border-radius: 8px;
    padding: 0;
    display: flex; /* 내부 요소를 flex로 배치 */
    flex-direction: column; /* 세로 방향 배치 */
    border: 1px solid rgba(226, 232, 240, 0.4);
    overflow: hidden; /* 이 요소 자체의 넘침은 숨김 (스크롤은 자식에서) */
    min-height: 0; /* flex 아이템 높이 제한 */
    }

    /* AI 설명 내용 스크롤 */
    .description-content {
    flex: 1 1; /* ai-description 내에서 남은 공간 차지 */
    overflow-y: auto; /* 내용이 넘치면 세로 스크롤 */
    color: #1e293b;
    line-height: 1.8;
    font-size: 0.95rem;
    padding: 1.5rem; /* 내용 패딩 */
    text-align: left;
    white-space: normal;
    word-break: keep-all;
    word-wrap: break-word;
    min-height: 0; /* 스크롤을 위해 필요 */
    }

    /* 제목 스타일 */
    .description-content h2 {
    font-size: 1.6rem;
    color: #1e3a8a;
    margin: 2rem 0 1.2rem;
    font-weight: 700;
    border-bottom: 2px solid rgba(59, 130, 246, 0.2);
    padding-bottom: 0.8rem;
    letter-spacing: -0.02em;
    }

    .description-content h3 {
    font-size: 1.3rem;
    color: #1e3a8a;
    margin: 2rem 0 1rem;
    font-weight: 600;
    display: flex;
    align-items: center;
    letter-spacing: -0.01em;
    }

    .description-content h3::before {
    content: '';
    display: inline-block;
    width: 4px;
    height: 1.2em;
    background: linear-gradient(to bottom, #4f46e5, #3b82f6);
    margin-right: 0.8rem;
    border-radius: 2px;
    }

    /* 강조 텍스트 */
    .description-content strong {
    color: #1e3a8a;
    font-weight: 600;
    background: linear-gradient(transparent 60%, rgba(96, 165, 250, 0.25) 40%);
    padding: 0.1em 0.3em;
    border-radius: 3px;
    margin: 0 0.1em;
    }

    /* 목록 스타일 */
    .description-content ul {
    list-style: none;
    padding-left: 0.5rem;
    margin: 1.2rem 0;
    }

    .description-content ul ul {
    padding-left: 2rem;
    margin: 0.8rem 0;
    }

    .description-content ul li {
    position: relative;
    padding-left: 1.8rem;
    margin: 0.8rem 0;
    line-height: 1.7;
    }

    .description-content ul li::before {
    content: '•';
    position: absolute;
    left: 0.5rem;
    color: #3b82f6;
    font-weight: bold;
    font-size: 1.2em;
    }

    .description-content ul ul li::before {
    content: '◦';
    color: #60a5fa;
    font-size: 1.1em;
    }

    /* 이탤릭 텍스트 */
    .description-content em {
    color: #1e40af;
    font-style: normal;
    background: linear-gradient(transparent 60%, rgba(147, 197, 253, 0.2) 40%);
    padding: 0.1em 0.3em;
    border-radius: 2px;
    margin: 0 0.1em;
    }

    /* 구분선 */
    .description-content hr {
    border: none;
    height: 2px;
    background: linear-gradient(to right, rgba(59, 130, 246, 0.3), rgba(59, 130, 246, 0.05));
    margin: 2.5rem 0;
    border-radius: 1px;
    }

    /* 코드 블록 */
    .description-content pre {
    background: rgba(248, 250, 252, 0.8);
    border: 1px solid rgba(59, 130, 246, 0.2);
    border-radius: 8px;
    padding: 1.5rem;
    margin: 1.5rem 0;
    overflow-x: auto;
    box-shadow: inset 0 1px 0 0 rgba(255, 255, 255, 0.6);
    }

    .description-content pre code {
    background: transparent;
    padding: 0;
    border: none;
    font-size: 0.9em;
    line-height: 1.6;
    color: #1e293b;
    }

    /* 인라인 코드 */
    .description-content code {
    background: rgba(59, 130, 246, 0.08);
    padding: 0.2em 0.4em;
    border-radius: 4px;
    font-size: 0.9em;
    color: #1e3a8a;
    font-family: 'Consolas', 'Monaco', monospace;
    border: 1px solid rgba(59, 130, 246, 0.15);
    }

    /* 인용구 */
    .description-content blockquote {
    border-left: 4px solid #3b82f6;
    margin: 1.8rem 0;
    padding: 1.2rem 1.5rem;
    background: rgba(59, 130, 246, 0.05);
    color: #1e3a8a;
    border-radius: 0 8px 8px 0;
    font-size: 0.95em;
    }

    /* 문단 */
    .description-content p {
    margin: 1.2rem 0;
    line-height: 1.8;
    color: #1e293b;
    }

    /* 스크롤바 스타일 */
    .description-content::-webkit-scrollbar {
    width: 8px;
    }

    .description-content::-webkit-scrollbar-track {
    background: rgba(241, 245, 249, 0.5);
    border-radius: 4px;
    margin: 5px 0;
    }

    .description-content::-webkit-scrollbar-thumb {
    background: rgba(59, 130, 246, 0.2);
    border-radius: 4px;
    border: 1px solid rgba(241, 245, 249, 0.5);
    }

    .description-content::-webkit-scrollbar-thumb:hover {
    background: rgba(59, 130, 246, 0.3);
    }

    /* 다이어그램 섹션 (70%) */
    .diagram-section {
    width: 70%;
    background: rgba(255, 255, 255, 0.7);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    padding: 1.5rem;
    border-radius: 12px;
    box-shadow: 
        0 4px 6px -1px rgba(0, 0, 0, 0.05),
        0 2px 4px -1px rgba(0, 0, 0, 0.03),
        inset 0 0 0 1px rgba(255, 255, 255, 0.15);
    display: flex;
    flex-direction: column;
    height: 1200px; /* 높이 증가 (800px -> 1200px) */
    max-height: 1200px; /* 고정 픽셀값으로 변경 (95vh -> 1200px) */
    border: 1px solid rgba(226, 232, 240, 0.4);
    overflow: hidden; /* 내용이 넘치면 숨김 */
    position: relative;
    }

    .diagram-container {
    position: relative;
    width: 100%;
    height: 100%;
    min-height: 400px;
    border-radius: 8px;
    padding-bottom: 60px; /* 컨트롤 영역 높이만큼 패딩 추가 */
    z-index: 1;
    }

    /* 입력 영역 조정 */
    textarea {
    flex: 1 1;
    min-height: 0;
    padding: 1rem;
    border: 1px solid rgba(226, 232, 240, 0.4);
    border-radius: 8px;
    resize: none;
    font-family: inherit;
    font-size: 0.95rem;
    line-height: 1.6;
    background: rgba(248, 250, 252, 0.5);
    -webkit-backdrop-filter: blur(5px);
    backdrop-filter: blur(5px);
    transition: all 0.2s ease;
    }

    textarea:focus {
    outline: none;
    border-color: rgba(59, 130, 246, 0.5);
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
    background: rgba(255, 255, 255, 0.9);
    }

    /* 서버 상태 스타일 */
    .server-status {
    margin-bottom: 15px;
    padding: 10px 15px;
    border-radius: 5px;
    font-size: 14px;
    }

    .server-status.success {
    background-color: #e6f7ed;
    border: 1px solid #c3e6cb;
    }

    .server-status.warning {
    background-color: #fff8e6;
    border: 1px solid #ffeeba;
    }

    .server-status.error {
    background-color: #ffeaea;
    border: 1px solid #f5c6cb;
    }

    .server-status p {
    margin: 0.5rem 0 0.75rem;
    }

    .server-status button {
    padding: 0.5rem 0.75rem;
    font-size: 0.8rem;
    margin-top: 0.5rem;
    cursor: pointer;
    background-color: white;
    color: #4568dc;
    border: 1px solid #e0e0e0;
    border-radius: 4px;
    font-weight: 500;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
    transition: background-color 0.2s, color 0.2s;
    }

    .server-status.success button {
    border-color: #4caf50;
    }

    .server-status.warning button {
    border-color: #ffb300;
    }

    .server-status.error button {
    border-color: #ef5350;
    }

    .server-status button:hover {
    background-color: #f5f5f5;
    }

    /* API 오류 메시지 */
    .api-error-message {
    background-color: #fef2f2;
    border: 1px solid #fee2e2;
    border-radius: 8px;
    padding: 1rem;
    color: #dc2626;
    font-size: 0.9rem;
    line-height: 1.5;
    margin-bottom: 1rem;
    }

    .api-error-message p {
    margin: 0.5rem 0 0;
    opacity: 0.9;
    }

    /* 미디어 쿼리 - 모바일 대응 */
    @media (max-width: 767px) {
    .app-header-container {
        padding: 1rem 1.5rem; /* 패딩 조정 */
    }

    .app-header-content h1 {
        font-size: 1.6rem; /* 모바일 제목 폰트 크기 축소 */
        margin-bottom: 0.1rem; /* 모바일 제목-설명 간격 */
    }
    
    .app-header-content p {
        font-size: 0.9rem; /* 모바일 설명 폰트 크기 축소 */
        white-space: normal; /* 모바일에서 설명 줄바꿈 허용 */
        line-height: 1.3;
    }

    /* 스크롤 시 모바일 헤더 스타일 */
    .app-header-container.scrolled {
        padding: 0.75rem 1.5rem; /* 스크롤 시 패딩 더 축소 */
    }

    .app-header-container.scrolled .app-header-content h1 {
        font-size: 1.5rem; /* 스크롤 시 모바일 제목 폰트 */
    }

    .app-header-container.scrolled .app-header-content p {
        font-size: 0.85rem; /* 스크롤 시 모바일 설명 폰트 */
        /* 한 줄 처리는 유지 */
        /* max-width: calc(100% - 150px); */ /* 제거 */
    }
    
    .app-container {
        flex-direction: column;
        padding: 1rem;
        gap: 1rem;
        /* height: auto; */ /* 모바일에서는 자동 높이 - 제거 */
        /* overflow: visible; */ /* 모바일에서는 오버플로우 표시 - 제거 */
        /* min-height: 0; */ /* 최소 높이 제거 - 제거 */
    }
    
    .left-panel {
        position: static;
        width: 100%;
        height: auto;
        /* max-height: none; */
        gap: 1rem;
    }
    
    /* 입력 섹션 (높이 조정) */
    .input-section {
        min-height: 200px; 
        height: auto; /* 고정 높이 대신 자동 높이 사용 */
        /* textarea가 flex:1을 가지므로 내용 따라 늘어남 */
        gap: 0.6rem; /* 모바일 내부 요소 간격 축소 */
    }
    
    /* AI 프로세스 분석 섹션 (높이 조정) */
    .process-explanation-section {
        min-height: 200px;
        max-height: 40vh; /* 최대 높이를 뷰포트의 40%로 제한 */ 
        height: auto; /* 고정 높이 대신 자동 높이 */
        overflow: hidden; 
    }
    
    .ai-description {
        flex: 1 1; /* 모바일에서도 동일하게 남은 공간 차지 */
        min-height: 0;
        overflow: hidden; 
    }
    
    .description-content {
        flex: 1 1; /* 모바일에서도 동일하게 남은 공간 차지 */
        overflow-y: auto; 
        padding: 1rem; /* 모바일 패딩 조정 */
    }
    
    /* 다이어그램 섹션 (높이 조정) */
    .diagram-section {
        width: 100%;
        min-height: 350px; /* 최소 높이 조정 */
        max-height: 60vh; /* 최대 높이를 뷰포트의 60%로 제한 */
        height: auto;
        overflow: hidden; /* 내용이 넘치면 숨김 */
    }
    
    .diagram-container {
        min-height: 300px; /* 내부 컨테이너 최소 높이 조정 */
        overflow: hidden; /* 스크롤 제거 */
    }
    
    .bpmn-canvas-area {
        min-height: 280px; /* 캔버스 최소 높이 조정 */
        overflow: hidden; /* 스크롤 제거 */
    }
    
    textarea {
        min-height: 120px; /* 모바일 textarea 최소 높이 조정 */
    }
    
    .section-header {
        margin-bottom: 1rem;
    }
    
    .section-header h2 {
        font-size: 1.2rem;
    }
    
    .section-header p {
        font-size: 0.9rem;
    }
    
    .generate-button {
        padding: 0.75rem 1rem;
        font-size: 0.95rem;
    }
    
    /* 스크롤바 조정 */
    .description-content::-webkit-scrollbar {
        width: 4px;
    }
    
    /* 여백 조정 */
    .ai-description {
        padding: 1rem;
    }
    
    .empty-state {
        padding: 1rem;
    }
    
    .empty-state svg {
        width: 36px;
        height: 36px;
    }
    
    .loading-indicator {
        padding: 1.5rem;
    }
    
    .stages-container {
        width: 95%;
    }
    
    .loading-title {
        font-size: 1.2rem;
        margin-bottom: 1.5rem;
    }
    
    .stage-text {
        font-size: 0.9rem;
    }
    }

    /* 작은 모바일 화면 추가 대응 */
    @media (max-width: 380px) {
    .app-header-content h1 {
        font-size: 1.4rem; /* 더 작은 화면 제목 폰트 */
    }
    
    .app-header-content p {
        font-size: 0.8rem; /* 더 작은 화면 설명 폰트 */
    }

    .app-header-container.scrolled .app-header-content h1 {
        font-size: 1.3rem; /* 스크롤 시 더 작은 화면 제목 */
    }

    .app-header-container.scrolled .app-header-content p {
        font-size: 0.75rem; /* 스크롤 시 더 작은 화면 설명 */
        /* max-width: calc(100% - 120px); */ /* 제거 */
    }

    /* 더 작은 화면 섹션 높이 조정 (필요 시) */
    .input-section, .process-explanation-section {
        min-height: 220px;
    }
    .diagram-section {
        min-height: 400px;
    }
    .diagram-container {
        min-height: 350px;
    }

    .section-header h2 {
        font-size: 1.1rem;
    }
    
    .section-header p {
        font-size: 0.85rem;
    }
    
    .generate-button {
        padding: 0.7rem 0.9rem;
        font-size: 0.9rem;
    }
    }

    .diagram-description {
    font-size: 0.9rem;
    color: #666;
    margin: -0.5rem 0 1rem;
    line-height: 1.5;
    }

    /* 생성 정보 스타일 */
    .generation-info {
    margin-bottom: 10px;
    background-color: #f7f9fc;
    border-radius: 5px;
    padding: 8px 12px;
    border: 1px solid #e0e4e8;
    }

    .generation-info-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 8px;
    }

    .generation-info-header h3 {
    margin: 0;
    font-size: 16px;
    color: #333;
    }

    .generation-info-content {
    display: flex;
    flex-wrap: wrap;
    gap: 15px;
    }

    .generation-info-content p {
    margin: 0;
    font-size: 14px;
    }

    .backup-note {
    color: #e67e22;
    font-weight: 500;
    }

    /* 원본 응답 토글 버튼 */
    .toggle-raw-button {
    background-color: #f0f2f5;
    border: 1px solid #ddd;
    border-radius: 4px;
    padding: 6px 12px;
    font-size: 13px;
    cursor: pointer;
    transition: all 0.2s;
    }

    .toggle-raw-button:hover {
    background-color: #e4e7ed;
    }

    /* 원본 응답 표시 영역 */
    .raw-response {
    margin-bottom: 10px;
    background-color: #f8f9fa;
    border: 1px solid #e2e5e9;
    border-radius: 5px;
    overflow: hidden;
    }

    .raw-response h3 {
    background-color: #f1f3f5;
    padding: 8px 15px;
    margin: 0;
    font-size: 16px;
    border-bottom: 1px solid #e2e5e9;
    }

    .raw-response-content {
    max-height: 150px;
    overflow-y: auto;
    padding: 10px 15px;
    }

    .raw-response pre {
    margin: 0;
    white-space: pre-wrap;
    font-size: 14px;
    font-family: 'Consolas', 'Monaco', monospace;
    line-height: 1.5;
    }

    /* 섹션 헤더 스타일 */
    .section-header {
    margin-bottom: 0.5rem; /* 하단 여백 대폭 축소 */
    text-align: left;
    }

    .section-header h2 {
    font-size: 1.4rem;
    color: #1a365d;
    margin: 0 0 0.5rem 0;
    font-weight: 600;
    }

    .section-header p {
    color: #4a5568;
    margin: 0;
    font-size: 0.95rem;
    }

    /* 콘텐츠 섹션 스타일 */
    .content-section {
    flex: 1 1;
    display: flex;
    flex-direction: column;
    gap: 2rem;
    margin-left: 2rem;
    }

    /* 생성 버튼 스타일 개선 */
    .generate-button {
    background: linear-gradient(135deg, #4f46e5 0%, #3b82f6 100%);
    color: white;
    border: none;
    border-radius: 8px;
    padding: 0.875rem 1.5rem;
    font-size: 1rem;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s ease;
    width: 100%;
    box-shadow: 0 4px 6px -1px rgba(59, 130, 246, 0.2);
    }

    .generate-button:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 8px -1px rgba(59, 130, 246, 0.3);
    }

    .generate-button:disabled {
    background: linear-gradient(135deg, #9ca3af 0%, #6b7280 100%);
    cursor: not-allowed;
    transform: none;
    }

    /* 빈 상태 메시지 */
    .empty-state {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    color: #94a3b8;
    font-size: 0.95rem;
    line-height: 1.5;
    text-align: center;
    padding: 2rem;
    }

    .empty-state svg {
    width: 48px;
    height: 48px;
    margin-bottom: 1rem;
    color: #cbd5e1;
    }

    /* BPMN 생성 로딩 인디케이터 스타일 */
    .loading-indicator {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    width: 100%;
    position: absolute;
    top: 0;
    left: 0;
    background: rgba(255, 255, 255, 0.92);
    z-index: 10;
    padding: 2rem;
    -webkit-backdrop-filter: blur(4px);
    backdrop-filter: blur(4px);
    }

    .loading-spinner {
    margin-bottom: 20px;
    width: 48px;
    height: 48px;
    position: relative;
    }

    .spinner {
    width: 48px;
    height: 48px;
    border: 4px solid rgba(59, 130, 246, 0.2);
    border-radius: 50%;
    border-top-color: #3b82f6;
    animation: spin 1s ease-in-out infinite;
    }

    @keyframes spin {
    to { transform: rotate(360deg); }
    }

    .loading-stage {
    text-align: center;
    max-width: 300px;
    }

    .loading-message {
    color: #1e40af;
    font-size: 1.1rem;
    font-weight: 500;
    margin: 0;
    }

    .stages-container {
    width: 80%;
    max-width: 500px;
    }

    .stage {
    display: flex;
    align-items: center;
    margin-bottom: 1rem;
    opacity: 0.5;
    transition: opacity 0.3s ease;
    }

    .stage.active {
    opacity: 1;
    }

    .stage.fade-in {
    animation: fadeIn 0.5s ease-in forwards;
    }

    @keyframes fadeIn {
    0% { opacity: 0.3; transform: translateY(5px); }
    100% { opacity: 1; transform: translateY(0); }
    }

    .stage-icon {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background-color: #e5e7eb;
    margin-right: 1rem;
    position: relative;
    flex-shrink: 0;
    }

    .stage.completed .stage-icon {
    background-color: #10b981;
    }

    .stage.completed .stage-icon::after {
    content: '';
    position: absolute;
    top: 7px;
    left: 7px;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background-color: white;
    }

    .stage.in-progress .stage-icon {
    background-color: #3b82f6;
    animation: pulse 1.5s infinite;
    }

    .stage-text {
    font-size: 1rem;
    color: #1e293b;
    font-weight: 500;
    }

    .stage-line {
    height: 2px;
    background-color: #e5e7eb;
    margin: 0 0 1rem 12px;
    width: calc(100% - 24px);
    transition: background-color 0.3s ease;
    }

    .stage-line.completed {
    background-color: #10b981;
    }

    .loading-title {
    font-size: 1.4rem;
    color: #1e3a8a;
    margin-bottom: 2rem;
    font-weight: 600;
    text-align: center;
    }

    @keyframes pulse {
    0% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.5); }
    70% { box-shadow: 0 0 0 8px rgba(59, 130, 246, 0); }
    100% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0); }
    }

    /* 모바일 접속 알림 스타일 */
    .mobile-notice {
        display: none; /* 기본적으로 숨김 */
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background-color: rgba(0, 0, 0, 0.85);
        z-index: 1000;
        color: white;
        text-align: center;
        padding: 2rem;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        font-size: 1.1rem;
        line-height: 1.6;
    }

    .mobile-notice-content {
        background-color: rgba(29, 78, 216, 0.8);
        padding: 2rem;
        border-radius: 12px;
        max-width: 90%;
        box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
        -webkit-backdrop-filter: blur(10px);
        backdrop-filter: blur(10px);
    }

    .mobile-notice h2 {
        font-size: 1.8rem;
        margin-bottom: 1.5rem;
        color: #ffffff;
        font-weight: 700;
    }

    .mobile-notice p {
        margin-bottom: 1.5rem;
        opacity: 0.9;
    }

    .mobile-notice-icon {
        font-size: 3rem;
        margin-bottom: 1.5rem;
        color: #60a5fa;
    }

    .mobile-notice-button {
        background-color: #2563eb;
        color: white;
        border: none;
        padding: 0.8rem 1.5rem;
        border-radius: 8px;
        font-weight: 600;
        margin-top: 1rem;
        cursor: pointer;
        transition: all 0.2s;
    }

    .mobile-notice-button:hover {
        background-color: #1d4ed8;
        transform: translateY(-2px);
    }

    /* 미디어 쿼리 - 모바일 접근 알림 표시 */
    @media (max-width: 767px) {
        .mobile-notice {
            display: flex;
        }
    }

    /* 모델 선택 스위치 스타일 */
    .model-selection {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        padding: 5px 10px;
        background-color: #f5f9ff;
        border-radius: 8px;
        border: 1px solid #e4e9f7;
    }

    .model-option {
        font-size: 14px;
        color: #666;
        transition: color 0.3s;
        white-space: nowrap;
    }

    .model-option.active {
        color: #0070f3;
        font-weight: 600;
    }

    /* 애플 스타일 토글 스위치 */
    .toggle-switch {
        position: relative;
        display: inline-block;
        width: 50px;
        height: 26px;
    }

    .toggle-switch input {
        opacity: 0;
        width: 0;
        height: 0;
    }

    .slider {
        position: absolute;
        cursor: pointer;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        background-color: #ccc;
        transition: .4s;
    }

    .slider:before {
        position: absolute;
        content: "";
        height: 22px;
        width: 22px;
        left: 2px;
        bottom: 2px;
        background-color: white;
        transition: .4s;
    }

    input:checked + .slider {
        background-color: #0070f3;
    }

    input:focus + .slider {
        box-shadow: 0 0 1px #0070f3;
    }

    input:checked + .slider:before {
        transform: translateX(24px);
    }

    .slider.round {
        border-radius: 34px;
    }

    .slider.round:before {
        border-radius: 50%;
    }

    /* 버튼 및 모델 옵션 그룹 스타일 */
    .button-group {
        display: flex;
        align-items: center;
        gap: 15px;
        margin-top: 15px;
    }

    .generate-button {
        background: linear-gradient(135deg, #4f46e5 0%, #3b82f6 100%);
        color: white;
        border: none;
        border-radius: 8px;
        padding: 0.875rem 1.5rem;
        font-size: 1rem;
        font-weight: 500;
        cursor: pointer;
        transition: all 0.2s ease;
        flex: 1 1;
        box-shadow: 0 4px 6px -1px rgba(59, 130, 246, 0.2);
    }

    /* 모델 선택 스위치 스타일 */
    .model-selection {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        padding: 5px 10px;
        background-color: #f5f9ff;
        border-radius: 8px;
        border: 1px solid #e4e9f7;
    }

    .model-option {
        font-size: 14px;
        color: #666;
        transition: color 0.3s;
        white-space: nowrap;
    }

    /* 입력 섹션 헤더 조정 (예시 버튼 추가용) */
    .input-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    /* section-header의 기본 margin-bottom을 유지 */
    }

    .header-left {
    /* 헤더 좌측 컨텐츠 (제목, 설명) */
    text-align: left; /* 기본값 유지 */
    }

    /* 예시 보기 버튼 스타일 */
    .example-button {
    background: none;
    border: none;
    font-size: 1.5rem; /* 아이콘 크기 */
    cursor: pointer;
    padding: 0.25rem;
    color: #4f46e5; /* 테마 색상 사용 */
    border-radius: 50%;
    transition: background-color 0.2s, transform 0.2s;
    line-height: 1;
    margin-left: 1rem; /* 제목과의 간격 */
    }

    .example-button:hover {
    background-color: rgba(79, 70, 229, 0.1);
    transform: scale(1.1);
    }

    /* 예시 플로팅 패널 스타일 */
    .input-section {
    position: relative; /* 패널의 absolute positioning 기준 */
    }

    .example-panel {
    position: absolute;
    top: 55px; /* 헤더 아래 위치 (조정 필요할 수 있음) */
    left: 1.5rem; /* 섹션 패딩과 동일하게 */
    right: 1.5rem; /* 섹션 패딩과 동일하게 */
    background: white;
    border: 1px solid #e0e4e8;
    border-radius: 8px;
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
    z-index: 10; /* 다른 요소 위에 표시 */
    padding: 1rem;
    max-height: 220px; /* 패널 최대 높이 */
    overflow-y: auto; /* 내용 많으면 스크롤 */
    animation: fadeInPanel 0.3s ease-out;
    }

    @keyframes fadeInPanel {
    from { opacity: 0; transform: translateY(-10px); }
    to { opacity: 1; transform: translateY(0); }
    }

    .example-panel h4 {
    margin-top: 0;
    margin-bottom: 0.8rem;
    font-size: 0.9rem;
    color: #1a365d;
    font-weight: 600;
    }

    .example-panel ul {
    list-style: none;
    padding: 0;
    margin: 0;
    }

    .example-item {
    padding: 0.75rem 1rem;
    border-bottom: 1px solid #f1f3f5;
    cursor: pointer;
    transition: background-color 0.2s;
    font-size: 0.85rem;
    color: #374151;
    line-height: 1.4;
    }

    .example-item:last-child {
    border-bottom: none;
    }

    .example-item:hover {
    background-color: #f7f9fc;
    }

    /* 예시 패널 닫기 버튼 */
    .example-panel-close {
    position: absolute;
    top: 0.5rem;
    right: 0.5rem;
    background: none;
    border: none;
    font-size: 1.5rem;
    color: #9ca3af;
    cursor: pointer;
    line-height: 1;
    padding: 0.25rem;
    }

    .example-panel-close:hover {
    color: #6b7280;
    }

