      .cv-pattern__layout {
        max-width: 1600px;
        margin: 0 auto;
        padding: 0 var(--page-pad-inline) 40px;
        display: grid;
        gap: 18px;
      }

      @media (min-width: 900px) {
        .cv-pattern__layout {
          grid-template-columns: minmax(0, 340px) minmax(0, 1fr);
          align-items: flex-start;
        }
      }

      .cv-pattern__panel {
        background: var(--color-surface);
        border-radius: 12px;
        border: 1px solid var(--line);
        box-shadow: var(--shadow);
        padding: 14px 14px 16px;
      }

      .cv-pattern__panel--controls {
        display: flex;
        flex-direction: column;
        gap: 14px;
      }

      .cv-pattern__group {
        display: flex;
        flex-direction: column;
        gap: 6px;
      }

      .cv-pattern__label {
        font-size: 12px;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: 0.16em;
        color: var(--color-text-muted);
        font-family: var(--font-mono);
      }

      .cv-pattern__hint {
        font-size: 11px;
        color: var(--color-text-muted);
        font-family: var(--font-mono);
      }

      .cv-pattern__row {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
        align-items: center;
      }

      .cv-pattern__field {
        display: flex;
        align-items: center;
        gap: 8px;
        padding: 6px 10px;
        border-radius: 999px;
        background: var(--color-surface);
        box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.06);
        min-width: 210px;
      }

      .cv-pattern__field input[type="text"] {
        border: 0;
        background: transparent;
        font: 13px/1.3 "Courier New", Courier, monospace;
        outline: none;
        text-transform: uppercase;
        flex: 1;
        min-width: 0;
      }

      .cv-pattern__upload-input {
        position: absolute;
        opacity: 0;
        pointer-events: none;
        width: 0;
        height: 0;
      }

      .cv-pattern__upload-btn {
        appearance: none;
        border: 0;
        border-radius: 999px;
        padding: 8px 14px;
        font-size: 13px;
        font-weight: 700;
        font-family: var(--font-mono);
        cursor: pointer;
        background: var(--color-black);
        color: var(--color-white);
        box-shadow: 0 10px 22px rgba(0, 0, 0, 0.25);
        display: inline-flex;
        align-items: center;
        gap: 8px;
      }

      .cv-pattern__upload-btn span {
        font-size: 14px;
      }

      .cv-pattern__upload-meta {
        font-size: 12px;
        color: var(--color-text-muted);
        font-family: var(--font-mono);
      }

      .cv-pattern__btn {
        appearance: none;
        border: 0;
        border-radius: 999px;
        padding: 6px 14px;
        font-size: 13px;
        font-weight: 700;
        font-family: var(--font-mono);
        cursor: pointer;
        background: var(--color-black);
        color: var(--color-white);
        box-shadow: 0 10px 22px rgba(0, 0, 0, 0.25);
      }

      .cv-pattern__btn--ghost {
        background: var(--color-white);
        color: var(--color-text-muted);
        box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.1);
      }

      .cv-pattern__btn:focus-visible {
        outline: 2px solid var(--royal-blue);
        outline-offset: 2px;
      }

      .cv-pattern__actions-row {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
      }

      .cv-pattern__sliderlabel {
        display: flex;
        justify-content: space-between;
        font-size: 12px;
        color: var(--color-text-muted);
        font-family: var(--font-mono);
      }

      .cv-pattern__slider {
        width: 100%;
      }

      .cv-pattern__toggles {
        display: flex;
        flex-wrap: wrap;
        gap: 6px;
      }

      .cv-pattern__toggle {
        display: inline-flex;
        align-items: center;
        gap: 6px;
        padding: 5px 10px;
        border-radius: 999px;
        background: var(--color-bg-muted);
        font-size: 13px;
        font-family: var(--font-mono);
        cursor: pointer;
      }

      .cv-pattern__toggle input {
        width: 14px;
        height: 14px;
      }

      .cv-pattern__panel--base {
        margin-bottom: 18px;
        padding: 0;
        background: transparent;
        border: 0;
        box-shadow: none;
      }

      .cv-pattern__base-card {
        background: var(--color-surface);
        border-radius: 12px;
        box-shadow: 0 25px 60px rgba(15, 23, 42, 0.18);
        overflow: hidden;
        display: grid;
        grid-template-columns: minmax(0, 1.6fr) minmax(0, 1.4fr);
      }

      @media (max-width: 720px) {
        .cv-pattern__base-card {
          grid-template-columns: 1fr;
        }
      }

      .cv-pattern__preview {
        padding: 14px 14px 16px;
        background: var(--color-gray-900);
        color: var(--color-border);
        display: grid;
        gap: 8px;
      }

      .cv-pattern__preview-row {
        display: grid;
        gap: 10px;
      }

      @media (min-width: 720px) {
        .cv-pattern__preview-row {
          grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        }
      }

      .cv-pattern__preview-pane {
        background: var(--color-gray-950);
        border-radius: 12px;
        padding: 10px;
        display: grid;
        gap: 6px;
      }

      .cv-pattern__preview-title {
        font-size: 11px;
        text-transform: uppercase;
        letter-spacing: 0.16em;
        font-family: var(--font-mono);
        color: var(--color-gray-400);
      }

      .cv-pattern__preview-frame {
        background: var(--color-gray-900);
        border-radius: 12px;
        overflow: hidden;
        min-height: 160px;
        display: grid;
        place-items: center;
      }

      canvas.cvp-canvas,
      img.cvp-img {
        max-width: 100%;
        height: auto;
        display: block;
      }

      img.cvp-img {
        object-fit: contain;
      }

      .cv-pattern__preview-meta {
        font-size: 11px;
        color: var(--color-gray-400);
        font-family: var(--font-mono);
        display: flex;
        flex-wrap: wrap;
        gap: 6px;
      }

      .cv-pattern__meta-tag {
        padding: 3px 7px;
        border-radius: 999px;
        background: rgba(15, 23, 42, 0.9);
      }

      .cv-pattern__base-values {
        background: var(--color-surface);
        padding: 22px 24px 20px;
        display: flex;
        flex-direction: column;
        gap: 10px;
        font-family: var(--font-mono);
      }

      .cv-pattern__base-heading {
        font-size: 11px;
        font-weight: 700;
        letter-spacing: 0.16em;
        text-transform: uppercase;
        color: var(--color-text-muted);
      }

      .cv-pattern__base-list {
        list-style: none;
        padding: 0;
        margin: 4px 0 8px;
        display: grid;
        gap: 6px;
      }

      .cv-pattern__base-item {
        display: grid;
        grid-template-columns: auto 1fr;
        column-gap: 10px;
        align-items: center;
        font-size: 13px;
      }

      .cv-pattern__base-dot {
        width: 22px;
        height: 22px;
        border-radius: 999px;
        box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.18);
      }

      .cv-pattern__base-label {
        font-size: 11px;
        text-transform: uppercase;
        letter-spacing: 0.14em;
        color: var(--color-text-muted);
      }

      .cv-pattern__base-code {
        font-size: 13px;
        font-weight: 700;
        cursor: pointer;
      }

      .cv-pattern__base-code[data-copy]:hover {
        text-decoration: underline;
      }

      .cv-pattern__base-tags {
        display: flex;
        flex-wrap: wrap;
        gap: 6px;
      }

      .cv-pattern__base-tag {
        font-size: 11px;
        padding: 3px 7px;
        border-radius: 999px;
        background: var(--color-bg-muted);
      }

      .cv-pattern__base-tag--primary {
        font-weight: 700;
      }

      .cv-pattern__groups {
        display: grid;
        gap: 12px;
        margin-bottom: 14px;
      }

      @media (min-width: 900px) {
        .cv-pattern__groups {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }
      }

      .cv-pattern__group-card {
        background: var(--color-surface);
        border-radius: var(--radius);
        border: 1px solid var(--line);
        box-shadow: var(--shadow);
        padding: 10px 10px 12px;
        display: flex;
        flex-direction: column;
        gap: 6px;
      }

      .cv-pattern__group-header {
        display: flex;
        justify-content: space-between;
        gap: 8px;
        align-items: center;
      }

      .cv-pattern__group-title {
        font-size: 13px;
        font-weight: 900;
        font-family: var(--font-sans);
      }

      .cv-pattern__group-info {
        font-size: 11px;
        color: var(--color-text-muted);
        font-family: var(--font-mono);
      }

      .cv-pattern__group-row {
        display: flex;
        flex-wrap: wrap;
        gap: 4px;
        align-items: center;
      }

      .cv-pattern__chip {
        border-radius: 999px;
        padding: 2px 7px;
        font-size: 11px;
        font-family: var(--font-mono);
        border: 1px solid transparent;
        background: rgba(255, 255, 255, 0.7);
        cursor: default;
        white-space: nowrap;
      }

      .cv-pattern__chip--btn {
        cursor: pointer;
      }

      .cv-pattern__chip--primary {
        font-weight: 900;
        text-transform: uppercase;
      }

      .cv-pattern__chip--mono {
        font-weight: 700;
      }

      .cv-pattern__swatch-dot {
        width: 18px;
        height: 18px;
        border-radius: 999px;
        box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.25);
      }

      .cv-pattern__gradient-card {
        background: var(--color-surface);
        border-radius: var(--radius);
        border: 1px solid var(--line);
        box-shadow: var(--shadow);
        padding: 12px 12px 12px;
        display: grid;
        gap: 8px;
        font-family: var(--font-mono);
      }

      .cv-pattern__gradient-preview {
        border-radius: 12px;
        height: 80px;
        background: linear-gradient(90deg, var(--color-gray-900), var(--color-info));
      }

      .cv-pattern__gradient-header {
        display: flex;
        justify-content: space-between;
        flex-wrap: wrap;
        gap: 8px;
        align-items: center;
      }

      .cv-pattern__gradient-title {
        font-size: 13px;
        font-weight: 700;
      }

      .cv-pattern__gradient-code {
        background: var(--color-gray-900);
        color: var(--color-border);
        border-radius: 12px;
        padding: 8px 10px;
        font-size: 11px;
        white-space: nowrap;
        overflow-x: auto;
      }

      .cv-pattern__palette-host {
        display: grid;
        gap: 6px;
      }

      .cv-pattern__palette-row {
        display: flex;
        align-items: center;
        gap: 8px;
      }

      .cv-pattern__palette-color {
        appearance: none;
        border: 0;
        padding: 0;
        width: 28px;
        height: 28px;
        border-radius: 999px;
        cursor: pointer;
        box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
      }

      .cv-pattern__palette-hex {
        border: 0;
        background: transparent;
        font: 12px/1.3 "Courier New", Courier, monospace;
        outline: none;
        text-transform: uppercase;
        flex: 1;
        min-width: 0;
      }

      .cv-pattern__footer-note {
        font-size: 12px;
        color: var(--color-text-muted);
        text-align: center;
        margin-top: 12px;
        font-family: var(--font-mono);
      }

      .cv-pattern__toast {
        position: fixed;
        left: 50%;
        bottom: 16px;
        transform: translateX(-50%);
        padding: 6px 12px;
        border-radius: 12px;
        background: rgba(15, 23, 42, 0.94);
        color: var(--color-gray-50);
        font-size: 13px;
        font-family: var(--font-mono);
        opacity: 0;
        pointer-events: none;
        transition: opacity 0.15s ease-out;
        z-index: 9999;
      }

      .cv-pattern__toast--show {
        opacity: 1;
      }